Topla.Çarpım formülü ile datadan bilgi alma

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
Ekli dosyamda data sheet inden formülle bilgi aktarmak istiyorum. if ile denedim ama yapamadım. Topla.Çarpım formülü işe yarayabilir, yardım lütfen.
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Dosyanızın "DR günlük satışlar" sayfasındaki C3 hücresine aşağıdaki formülü kopyalayın. Daha sonra bu formülü diğer hücrelere sürükleyerek çoğaltabilirsiniz.

=TOPLA.ÇARPIM((Data!$D$4:$D$1111=$B3)*(Data!$E$4:$E$1111=C$2)*(DOLAYLI("Data!"&ADRES(4;KAÇINCI($L$5;Data!$3:$3;0);4)&":"&ADRES(1111;KAÇINCI($L$5;Data!$3:$3;0);4))))

Not: Çok sayıdaki formül dosyanızın çalışmasını ağırlaştırabilir bu durumda VBA ile çözümü öneririm.
 

Ali

Uzman
Katılım
21 Temmuz 2005
Mesajlar
7,897
Excel Vers. ve Dili
İş:Excel 2016-Türkçe
Alternatif;

C3 hücrenize aşağıdaki formülü yazarak sağa ve aşağı çekerek tablonuzu doldurunuz.

=TOPLA.ÇARPIM((Data!$B$4:$B$1100=$L$4)*(Data!$D$4:$D$1100=$B3)*(Data!$E$4:$E$1100=C$2)*(Data!$F$3:$T$3=$L$5);(Data!$F$4:$T$1100))

L5 hücrenizdeki veri doğrulamayıda yeniden düzenleyin.

Not:1) 2008'de 1 Hafta Pazartesi olmadığı için boş gelebilir.

2) Levent Bey'inde belirttiği gibi çok veride bilgisayarınızın performansına göre verinin gelmesi için birkaç saniye beklemeniz gerekebilir.
 

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
Çok teşekkürler hocam. Bende aşağıdaki gibi formülü yazmayı başarmıştım.

=TOPLA.ÇARPIM((Data!$D$4:$D$2000=$B3)*(Data!$E$4:$E$2000=C$2)*(Data!$F$3:$T$3=$L$5)*(Data!$B$4:$B$2000=$L$4);Data!$F$4:$T$2000)

ancak söylediğiniz gibi programı biraz yavaşlattı. Bu iş VBA ile nasıl halledebiliriz ?
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
Aşağıdaki kodu deneyin. Daha hızlı bir kod yazılabilir.

Kod:
Sub tabloyudoldur()
Set s1 = Sheets("data")
[c3:h65536].ClearContents
sut = WorksheetFunction.Match([L5], s1.[3:3], 0)
For a = 3 To 54
For b = 4 To s1.[b65536].End(3).Row
If s1.Cells(b, sut) = 0 Then GoTo 10
If s1.Cells(b, "b") = [L4] And s1.Cells(b, "d") = Cells(a, "b") Then
sut2 = WorksheetFunction.Match(s1.Cells(b, "e"), [2:2], 0)
Cells(a, sut2) = s1.Cells(b, sut)
End If
10 Next
Next
End Sub
 

bmutlu966

Altın Üye
Katılım
26 Ocak 2006
Mesajlar
756
Excel Vers. ve Dili
Office 365 İngilizce 64 Bit
Altın Üyelik Bitiş Tarihi
31-01-2025
Levent hocam,

Gayet hızlı çalışıyor. Çok teşekkür ederim. Süpersin.

Aşağıdaki fonksiyonu çözemedim biraz açıklayabilirmisin ?

sut=WorksheetFunction.Match([L5], s1.[3:3], 0)
 

Levent Menteşoğlu

Administrator
Yönetici
Admin
Katılım
13 Ekim 2004
Mesajlar
16,057
Excel Vers. ve Dili
Excel 2010-32 bit-Türkçe
Excel 365 -32 bit-Türkçe
.....
Aşağıdaki fonksiyonu çözemedim biraz açıklayabilirmisin ?

sut=WorksheetFunction.Match([L5], s1.[3:3], 0)
Bu MATCH yani KAÇINCI fonksiyonunun VBAda kullanılan şeklidir.
 
Üst