Soru aşırı yavaş çalışan formül

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
730
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Arkadaşlar L2.....250 ve C3.........250 ye göre iki alana göre sorgulama yaptırdığım formülüm aşağıdadır ancak neden se çok aşırı yavaş çalışmaktadır. Bunu hızlı bir şekilde çalışan başka bir formüle dönüştürebilirmiyiz?

Teşekkürler..

=EĞERHATA(İNDİS(DATA!G:G;TOPLA.ÇARPIM((KAÇINCI(C3&"@"&$L$2;DATA!A:A&"@"&DATA!J:J;0))));"0")
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
G sütununuzu da görmeden cevap verilecek tek konu Topla.Çarpım fonksiyonudur.
Zira bu fonksiyon bir çok sorunda kurtarıcı görevi görmekteyse de eğer gelişigüzel kullanılırsa kullandığınız formül sayısına göre dosyanızda yavaşlamaya sebep olur.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
730
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
G sütununuzu da görmeden cevap verilecek tek konu Topla.Çarpım fonksiyonudur.
Zira bu fonksiyon bir çok sorunda kurtarıcı görevi görmekteyse de eğer gelişigüzel kullanılırsa kullandığınız formül sayısına göre dosyanızda yavaşlamaya sebep olur.
Veriler bunlar DATA daki hocam

232044
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Verilerinizin toplam satır sayısı belirli ise ve değişmeyecekse
Mesela A2:J100 aralığında ise
=EĞERHATA(İNDİS(DATA!G2:G100;TOPLA.ÇARPIM((KAÇINCI(C3&"@"&$L$2;DATA!A2:A100&"@"&DATA!J2:J100;0))));"0")

Eğer değişken bir satır sayısınız varsa
DATA!G:G direkt kullanmak yerine Kaydır fonksiyonuyla kullandığınız aktif alanda bir başvuru adresi oluşturbilirsiniz.
 

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
Ek olarak;

1- Formüllerde G:G gibi aralık kullanmak yerine ihtiyaç kadar hücre aralığını kullanmak her zaman avantaj sağlayacaktır. Bu yöntem büyük ölçüde sorunu çözecektir.

2- Formülde yaptığınız birleştirme işlemini boş bir sütunda yaparak daha basit kurgular kurabilirsiniz. Mesela DÜŞEYARA fonksiyonu ile sonuca gidebilirsiniz.

3- Listenizi EKLE-TABLO menüsünden tabloya dönüştürürseniz yazacağınız formüller dinamik alan uygulaması gibi çalışacaktır. Yani tablonuzdaki satır sayısına göre hareket ederek sonuç üreteceği için daha iyi bir performans verecektir.

4- Verilerinizi özet tablo yapısına uydurup ÖZET TABLO kullanarak sonuca gidebilirsiniz. Bu performans olarak sizi üst seviyelere taşıyacaktır.

5- Bunları denemenize rağmen performans alamıyorsanız artık makro kullanma zamanınız gelmiş demektir.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
730
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Ek olarak;

1- Formüllerde G:G gibi aralık kullanmak yerine ihtiyaç kadar hücre aralığını kullanmak her zaman avantaj sağlayacaktır. Bu yöntem büyük ölçüde sorunu çözecektir.

2- Formülde yaptığınız birleştirme işlemini boş bir sütunda yaparak daha basit kurgular kurabilirsiniz. Mesela DÜŞEYARA fonksiyonu ile sonuca gidebilirsiniz.

3- Listenizi EKLE-TABLO menüsünden tabloya dönüştürürseniz yazacağınız formüller dinamik alan uygulaması gibi çalışacaktır. Yani tablonuzdaki satır sayısına göre hareket ederek sonuç üreteceği için daha iyi bir performans verecektir.

4- Verilerinizi özet tablo yapısına uydurup ÖZET TABLO kullanarak sonuca gidebilirsiniz. Bu performans olarak sizi üst seviyelere taşıyacaktır.

5- Bunları denemenize rağmen performans alamıyorsanız artık makro kullanma zamanınız gelmiş demektir.


düşeyara ile çifte sorgulama yapılabilirmi Korhan bey? DÜŞEYARA ile sorgulama yapan bir formülüm vardı çok hızlı çalışıyordu ancak onda çifte sorgulama yaptıramadığım için silmek zorunda kaldım.
 

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
Tablonuzun soluna boş bir sütun ekleyin.

Bu sütuna B sütunu ile K sütunu birleştirin. Bu aşamadan sonra DÜŞEYARA fonksiyonu ile sonuca gidebilirsiniz.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
730
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024

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
Çünkü siz ilk mesajınızda verdiğiniz formulde A ve J sütunu birleştirilmişti. Bende boş bir sütun ekleyin dedim. Böylece sütunlar bir adet kaymış oldu.
 

incsoft

Altın Üye
Katılım
18 Ağustos 2009
Mesajlar
730
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Çünkü siz ilk mesajınızda verdiğiniz formulde A ve J sütunu birleştirilmişti. Bende boş bir sütun ekleyin dedim. Böylece sütunlar bir adet kaymış oldu.
Korhan bey 1 örnek attım.Mantık aynı sizinde daha iyi bildiğiniz gibi ama neden orjnal de yavaş çözemedim. Bunu DÜŞEYARA ile çift alan sorgulayacak şekilde nasıl yapabiliriz?
 

Ekli dosyalar

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,105
Excel Vers. ve Dili
office2010
Kod kullanarak deneyiniz.

Kod:
Sub test()
Dim s1 As Worksheet, s2 As Worksheet
Set s1 = Sheets("DATA")
Set s2 = Sheets("Sayfa1")

Set dc = CreateObject("scripting.dictionary")

a = s1.Range("A1:J" & s1.Cells(Rows.Count, 1).End(3).Row).Value

For i = 1 To UBound(a)
    krt = CStr(a(i, 1)) & "#" & CStr(a(i, 10))
    dc(krt) = dc(krt) + a(i, 7)
Next i

b = s2.Range("A2:A" & s2.Cells(Rows.Count, 1).End(3).Row).Value

ReDim c(1 To UBound(b), 1 To 1)
ara = CStr(s2.[J1])
    For i = 1 To UBound(b)
        krt = CStr(b(i, 1)) & "#" & ara
        If dc.exists(krt) Then
            c(i, 1) = dc(krt)
        Else
            c(i, 1) = 0
        End If
    Next i

s2.[B2].Resize(UBound(b)) = c

MsgBox "Tamam...", vbInformation
End Sub
 

Mahir64

Destek Ekibi
Destek Ekibi
Katılım
19 Nisan 2006
Mesajlar
6,677
Excel Vers. ve Dili
Excel 2013-Türkçe
Excel 2016-Türkçe
Merhaba,
ÇOKETOPLA formülüde işinizi görür.

Deneyiniz.
Kod:
=ÇOKETOPLA(DATA!G:G;DATA!A:A;A2;DATA!J:J;$J$1)
 

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
Sizin kasıyor dediğiniz formül iki kritere göre tabloda ilk bulduğu satıra ait veriyi getirir. Eğer A-J sütunlarında verilerin mükerrer olma durumunda toplama işlemi yapılacaksa @Mahir64 beyin çözümü işinize yarayacaktır.

Verileriniz çok fazla ise @Ziynettin beyin çözümünü kullanmanızı tavsiye ederim.

Bende bahsettiğim DÜŞEYARA ve ÖZET TABLO çözümlerini paylaşıyorum.
 

Ekli dosyalar

Üst