Hücrede Çalışan Formül, VBA'da Neden Çalışmaz

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba Arkadaşlar
Hücrede uyguladığım Formülü VBA ortamında kullanmak istedim. Ama sonuç vermedi. Neden olabilir

Hücrede =ÇOKETOPLA(KAYIT!$AC:$AC;KAYIT!$AA:$AA;$F7;KAYIT!$AB:$AB;"*"&$D7&"*")

VBA Kodu "=SUMIFS(KAYIT!AC:AC,KAYIT!AA:AA,RC6,KAYIT!AB:AB,RC4)"

 
Katılım
18 Ocak 2019
Mesajlar
234
Excel Vers. ve Dili
Office 2013
Merhaba @baydeniro

Bu şekilde dener misiniz.

C++:
With Sheets("KAYIT")
sat =4
WorksheetFunction.sumifs(.Range("AC:AC"), .Range("AA:AA"), .Cells(sat,"F"), .Range("AB:AB"), "*" & .Cells(sat, "D" ) & "*")
End with
Ya da

Makro kaydet'e basıp
Formülün üzerinde iken F2 tuşuna basıp
ENTER yapın
Makroyu durdurun.
Vbada oluşan kodu kullanabilirsiniz.
 

Ömer

Moderatör
Yönetici
Katılım
18 Ağustos 2007
Mesajlar
22,184
Excel Vers. ve Dili
Microsoft 365 Tr
Ofis 2016 Tr
Merhaba,

Alternatif olarak yazdığınız düzende aşağıdaki gibi kullanabilirsiniz.
Kod:
Sub deneme()
    MsgBox Evaluate("=SUMIFS(KAYIT!$AC:$AC,KAYIT!$AA:$AA,$A1,KAYIT!$AB:$AB,""*""&$D7&""*"")")
End Sub
Formülü hücreye sonuç olarak yazacaksanız Msgbox yerine örneğin [A2] = yazabilirsiniz. Eğer sonuç değil de formül olarak yazmak isterseniz Evaluate yi silmelisiniz.
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba @baydeniro

Bu şekilde dener misiniz.

C++:
With Sheets("KAYIT")
sat =4
WorksheetFunction.sumifs(.Range("AC:AC"), .Range("AA:AA"), .Cells(sat,"F"), .Range("AB:AB"), "*" & .Cells(sat, "D" ) & "*")
End with
Ya da

Makro kaydet'e basıp
Formülün üzerinde iken F2 tuşuna basıp
ENTER yapın
Makroyu durdurun.
Vbada oluşan kodu kullanabilirsiniz.
Üstad çok teşekkür ederim. Yazdığınız kod yöntemini beğendim. Onu uygulamaya gayret edeceğim. F2 ile makro yöntemini kullanıyorum. Hatta soruda belirtilen kodu bu şekilde ürettim. Belki diğer arkadaşlara da faydası olur diye belirtmek isterim. Benim koddaki sorun şu : eğer alan F:F olarak uygulanırsa formül çalışmıyor. Ama F2:F1000 olarak uygulanırsa çalışıyor. Tarz olarak tüm alanı seçmeyi tercih ederim ama satır başlangıç ve bitiş aralığı da işimiz görüyor. Sağlıcakla kalın
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Merhaba,

Alternatif olarak yazdığınız düzende aşağıdaki gibi kullanabilirsiniz.
Kod:
Sub deneme()
    MsgBox Evaluate("=SUMIFS(KAYIT!$AC:$AC,KAYIT!$AA:$AA,$A1,KAYIT!$AB:$AB,""*""&$D7&""*"")")
End Sub
Formülü hücreye sonuç olarak yazacaksanız Msgbox yerine örneğin [A2] = yazabilirsiniz. Eğer sonuç değil de formül olarak yazmak isterseniz Evaluate yi silmelisiniz.
Ömer üstadım çok teşekkür ederim. Harika bir yöntem. Hemen uygulamaya başlayacağım. Sağlıcakla kalın
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,190
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Siz makro kaydet yaptıktan sonra oluşan kodu bence elle düzeltmişsiniz.

Çünkü FormulaR1C1 sitili bozulmuş görünüyor. Bold (kalın) yaptığım bölümler R1C1 sitilinde kalmış. düzenleme yaparken bu detaylara dikkat etmelisiniz.

"=SUMIFS(KAYIT!AC:AC,KAYIT!AA:AA,RC6,KAYIT!AB:AB,RC4)"

Eğer bu sitilde kafanız karışıyorsa FormulaLocal sitilini kullanabilirsiniz. Fakat İngilizce sürüm excellerde Türkçe karakter problemi yaşayabilirsiniz. Ama yazım şekli kolaydır.

Örnek;

C++:
Option Explicit

Sub Hucreye_Formul_Yaz()
    With Range("A1:A100")
        .FormulaLocal = "=ÇOKETOPLA(KAYIT!$AC:$AC;KAYIT!$AA:$AA;$F7;KAYIT!$AB:$AB;""*""&$D7&""*"")"
        '.Value = .Value Rem değere çevirmek için bu satırı aktif hale getiriniz.
    End With
End Sub
 
Üst