WorksheetFunction.Sum(If( - = {Topla(Eğer(

Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
Arkadaşlar Excelde bildiğimiz ={Topla(Eğer(...... şeklinde yazılan formülün VBA'daki karşılığı nasıldır. Aşağıda bir denemem var. Fakat çalıştıramadım. Yardımcı olursanız sevinirim.

Cells(satır2, sütun2).Value = WorksheetFunction.Sum(If(Sheets("Gusto_Veri").("e1:e1000").Value = Cells(satır2, 2).Value, If(Sheets("Gusto_Veri").("h1:h1000").Value = Cells(4, sütun2).Value, Sheets("Gusto_Veri").("ı1:ı1000").Value,0),0))
 
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
Rkadaşlar yardımcı olacak kimse yok mu? Benim için çok önemli.
 
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
Hamitcan Bey, verdiğiniz linkte SumIF yani ETOPLA komutu anlatılıyor. Benim sorum Sum(IF( yani TOPLA(EĞER( ile ilgili. Bu ikisinden ilki tek bir koşul ile arama ve toplama yaparken diğeri birden fazla koşula göre toplama yapabiliyor. Forumda ne kadar arasam da bu konuda bir sonuca ulaşamadım. Buna göre yardımcı olabilir misiniz?
 
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
Bu linki de incelemiştim ama benim istediğim Sum(If formülünü hücre içine yazdırmak değil WorksheetFunction.Sum(If ile sonuç değerini hücreye yazdırmak. Yukarıda verdiğim örnekte hata var bu hatayı düzeltebilirseniz çok makbule geçer.
 
Katılım
25 Ağustos 2004
Mesajlar
42
Excel Vers. ve Dili
Excel 2007 Türkçe
aşağıdaki gibi deneyin. Olmazsa bir örnek ekleyin.
Kod:
 Cells(satır2, SÜTUN2).Value = Evaluate("=SUMPRODUCT(('Gusto_Veri'!E1:E1000=" & Cells(satır2, 2).Address & _
")*('Gusto_Veri'!H1:H1000=" & Cells(4, SÜTUN2).Address & ")*('Gusto_Veri'!I1:I1000))")
 
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
#Değer! hatası veriyor for nexti kaldırdım tek hücreyi kontrol ettirdim yine olmadı. Bunu WorksheetFunction.Sum(If( formatıyla yapamaz mıyız.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Kendim için yaptığım uygulama aşağıdadır

=TOPLA(EĞER(B148=A8:A145; EĞER(H148=H8:H145; EĞER("İçi"=N8:N145;J8:J145;0))))

satırını 148 ila 153. satırlar arasında çoğaltıp özet almakta kullandım

Kod:
Sub KosulluToplam_hsr()
FormSonSat = 145
For HCR = 148 To 153
With Range("J" & HCR)
                    .FormulaArray = "=SUM(IF(B" & HCR & "=A8:A" & FormSonSat & ", IF(H" & HCR & "=H8:H" & FormSonSat & " , IF(""İçi""=N8:N" & FormSonSat & ",J8:J" & FormSonSat & ",0))))"
                    .Copy
                    .PasteSpecial Paste:=xlPasteValues
End With
         
With Range("K" & HCR)
                    .FormulaArray = "=SUM(IF(B" & HCR & "=A8:A" & FormSonSat & ", IF(H" & HCR & "=H8:H" & FormSonSat & " , IF(""Dışı""=N8:N" & FormSonSat & ",J8:J" & FormSonSat & ",0))))"
                    .Copy
                    .PasteSpecial Paste:=xlPasteValues
End With
Next HCR
Application.CutCopyMode = False
End Sub
 
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
Sayın hsayar arkadaşım dediğin şekilde formülü uyguladım aşağıdaki şekle dönüştü. Ama Run time error 424 hatası ile "Obje Required" hatası verdi. Bu formülü hücre içine yazıp kopyala değerleri yapıştır yapmadan WorksheetFunction.Sum(If ile doğrudan yazamaz mıyız.

For sat = 6 To (Ürün_Sayısı * 2 + 5) Step 2
For süt = 4 To (4 + Hammadde_Sayısı * 2)

With Cells(sat, süt).Address
.FormulaArray = "=SUM(IF(" & Cells(sat, 2).Address & "=" & "'Gusto_Veri'!E1:E1000" & "," & "IF(" & Cells(4, süt).Address & "=" & "'Gusto_Veri'!H1:H1000" & "," & "'Gusto_Veri'!I1:I1000" & ",0)))"
.Copy
.PasteSpecial Paste:=xlPasteValues
'End With

Next süt
Next sat
 
Son düzenleme:
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Hücrede Formülü görebilmek için aşağıdaki gibi yapınız
Kod:
Sub KosulluToplam_hsr2()
FormSonSat = 145
For HCR = 148 To 153
'=TOPLA(EĞER(B148=A8:A145; EĞER(H148=H8:H145; EĞER("İçi"=N8:N145;J8:J145;0))))
Range("J" & HCR).FormulaArray = "=SUM(IF(B" & HCR & "=A8:A" & FormSonSat & _
                                   ", IF(H" & HCR & "=H8:H" & FormSonSat & _
                                   ", IF(""İçi""=N8:N" & FormSonSat & _
                                              ", J8:J" & FormSonSat & ",0))))"
Next HCR
End Sub
Cellsli kullanıım ve içiçe sütunla for next konusunda ben anlalam ama örnek tablo veya manuel oluşturduğunuz formülü buraya yapıştırırırsanız vaktim olunca ilgilenirim.
 
Son düzenleme:
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
2.bir seçenek olarak ta şu şekilde denedim. Burada da Run time error 13 Type Missmatch hatası verdi. bu hataların ne olduğu veya aşağıdaki kodu düzeltme konusunda bilgisi olan var mı?

Cells(sat, süt).Value = WorksheetFunction("Sum(If(Cells(sat, 2).Address & " = " & Gusto_Veri!E1:E1000" & "," & "IF(Cells(4, süt).Address & " = " & Gusto_Veri!H1:H1000" & "," & "Gusto_Veri!I1:I1000" & "," & 0)
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Elle Oluşturduğunuz formulu veriniz ve her sütun için ayrı ayrı giriniz ....
 
Katılım
25 Ağustos 2004
Mesajlar
42
Excel Vers. ve Dili
Excel 2007 Türkçe
Sayın alibaskan,

1-Gusto_Veri sayfasındaki verilerinizde başlık sütunu varmı.
2-Başlık sütunu varsa hangi satırdan başlıyor.
3-Toplamını almak istediğiniz sütunda metinsel ifade varmı.

Birde ekteki dosyayı inceleyin.
 
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
Şu an işteyim eve geçince dosyanın bir örneğini ekleyeceğim. Böylelikle kodlar üzerinde çalışabilirsiniz. İlginizden dolayı çok teşekkür ediyorum.
 
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
Arkadaşlar dosyayı ekliyorum. Dosya örnektir. Ürün isimleri ve hammadde isimleri gerçekte değişiklik göstermektedir. Bu yüzden kodları değiştirirken isimlere göre kod yazmayın. Şirket bilgilerini içerdiği için orjinal dosyayı ekleyememekteyim.Tablo sayfasına geçtiğinizde makro çalışmaktadır. Makronun hata verdiği yer düzeltilecektir. İlgilenen arkadaşlara teşekkür ediyorum.
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
sn alibaşkan dosynıza baktım da
1) ürün1 tabloya gelmiyor, DOĞRUMU
2)
MAMUL CİNSİ ÜRETİM Hammadde1
Kg. Kg. YTL
ÜRÜN2 480.000

ÜRÜN3 60.000

ÜRÜN4 500.000

ÜRÜN5 2.500

ÜRÜN6 4.000.000

ÜRÜN7 20.000

TOPLAM 5.062.500 0 0,00



tablolarında veri sayfasındaki ad ve kod arasındaki başlıksız sütrunun altındaki 480000 satırlarının toplamı değil kendi geliyor neden ?
diğerlerirnde

ürün adı ve hammade adına göre kg ve ytl sinin mi koşullu toplamını istiyorsunuz
 
Katılım
2 Mart 2005
Mesajlar
2,960
Excel Vers. ve Dili
ev: Ofis 2007- Win Xp
iş: Ofis 2010- Win Vista
Not manuel oluşturmaya kalktımda dizi formulleri birleşik hücrelerde geçersizdir diyor...
Sayfa_Aktif kodlarını buna göre ayarlayınız
(Birleşik hücre olmayacak.)

YTL ve kg sütunları nerede bu arada
 
Katılım
25 Ağustos 2004
Mesajlar
42
Excel Vers. ve Dili
Excel 2007 Türkçe
Kod:
'With Cells(sat, süt).Address
'.FormulaArray = "=SUM(IF(" & Cells(sat, 2).Address & "=" & "'Veri'!E1:E1000" & "," & _
'"IF(" & Cells(4, süt).Address & "=" & "'Veri'!H1:H1000" & "," & "'Veri'!I1:I1000" & ",0)))"
'                    .Copy
'                    .PasteSpecial Paste:=xlPasteValues
'End With
bunun yerine formüllü cevabı
Kod:
Cells(sat, süt).value = "=SUMPRODUCT(('Veri'!E4:E1000=" & Cells(sat, 2).Address & _
")*('Veri'!H4:H1000=" & Cells(4, süt).Address & ")*('Veri'!I4:I1000))"
Kod:
Cells(sat, süt).value = Evaluate("=SUMPRODUCT(('Veri'!E4:E1000=" & Cells(sat, 2).Address & _
")*('Veri'!H4:H1000=" & Cells(4, süt).Address & ")*('Veri'!I4:I1000))")
buda formülsüz cevabı
deneyin
 
Katılım
12 Nisan 2007
Mesajlar
170
Excel Vers. ve Dili
Office XP
sayın exes emeğiniz ve yoğun ilginizden dolayı çok teşekkür ediyorum. Sayın hsayar ile msn görüşmeleri sonrasında sorun etopla yani SumIf ile çözülmüştür. excelde 2 sütundaki veri tek bir sütunda birleştirilmiş sonra etopla ile aratılarak toplaması sağlanmıştır. Yani birden fazla sütun kontrolü etopla ile de bu yöntemle yapılabilmektedir.
 
Üst