Soru fonksiyondaki aşırı yavaşlık

Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Aşağıdaki fonksiyona bağımlı çalışan ekteki dosya örneğiyle sistem çok aşırı yavaş çalışmaktadır. Sebebi ne olabilir arkadaşlar?



Option Explicit
Public Function ay_uretim_adeti(ie_no As Long) As Long
', Optional VolatileParameter As Variant
ActiveWorkbook.ForceFullCalculation = True
Dim hesap As Long
Dim i, j As Integer

For i = 1 To Sheets.Count

For j = 3 To 1500 'yukarıdan aşağıya 50 satıra bakacak

If Sheets(i).Range("E" & j).Value = ie_no Then

hesap = hesap + Sheets(i).Range("F" & j).Value

End If

Next j

Next i

ay_uretim_adeti = hesap
End Function
 

Ekli dosyalar

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Böyle bir işlem için Özel Fonksiyon tanımlamanızı biraz gereksiz buldum.
Sayfa sayınız ve işlem yapacağınız satır sayısı çok etkileyecektir.
Ayrıca 1500 satır gibi bir alanda işlem yapacaksanız For Next yerine FIND komutuyla çalışmanızı öneririm.
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Böyle bir işlem için Özel Fonksiyon tanımlamanızı biraz gereksiz buldum.
Sayfa sayınız ve işlem yapacağınız satır sayısı çok etkileyecektir.
Ayrıca 1500 satır gibi bir alanda işlem yapacaksanız For Next yerine FIND komutuyla çalışmanızı öneririm.
Örnek 1 dosya göndersem bakabilirmisiniz hocam?
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Böyle bir işlem için Özel Fonksiyon tanımlamanızı biraz gereksiz buldum.
Sayfa sayınız ve işlem yapacağınız satır sayısı çok etkileyecektir.
Ayrıca 1500 satır gibi bir alanda işlem yapacaksanız For Next yerine FIND komutuyla çalışmanızı öneririm.
ya da bu fonksiyonu o dediğinize uyarlama imkanınız varmıdır hocam?
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Bu KTF ile tüm sayfaların E sütununda 50 değil 1498 satır kontrol ediliyor. Dosyada 10 sayfa varsa 14980 satır demektir bu. Yavaşlık bundan kaynaklanıyor bence.
 

YUSUF44

Destek Ekibi
Destek Ekibi
Katılım
4 Ocak 2006
Mesajlar
12,073
Excel Vers. ve Dili
İş : Ofis 365 - Türkçe
Ev: Ofis 365 - Türkçe
Sayın NextLevel'in de belirttiği gibi dosyanıza uygun başka bir çözüm kullanmanız iyi olur. Örneğin Etopla formülü daha hızlı çözüm olur.
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Bu KTF ile tüm sayfaların E sütununda 50 değil 1498 satır kontrol ediliyor. Dosyada 10 sayfa varsa 14980 satır demektir bu. Yavaşlık bundan kaynaklanıyor bence.

E sütununda 163 sütun var hocam ancak birde gizli sayfa var orda da sütunda bulunan işemri numaralarının HAZİRAN AYI öncesi adet toplamları var ordada 1200 sütun var ondan dolayı yavaşlıyor sanırım. Öneriniz nedir bu konuda?
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Sayın NextLevel'in de belirttiği gibi dosyanıza uygun başka bir çözüm kullanmanız iyi olur. Örneğin Etopla formülü daha hızlı çözüm olur.

ETOPLA ile 1 ayda bulunan 31 günün sayfalarındaki işemri adetini toplama yaptırabilirmiyiz hocam?
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Sayfa Adlarını ve toplam aralığınıı doğru şekilde içeren doğruya yakın örnek bir dosyayı eklermisiniz
 

ÖmerFaruk

Destek Ekibi
Destek Ekibi
Katılım
22 Ekim 2017
Mesajlar
4,779
Excel Vers. ve Dili
Microsoft 365 Tr-64
Hangi sayfalarda, Hangi aralıklar toplanacak? Sonuç nereye yazılacak
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,610
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Ben bir fonksiyon hazırladım. Deneyin bakalım olmuş mu?

C++:
Option Explicit

Function K_TOPLA(Kriter As Variant) As Double
    Dim Sayfa As Worksheet, Son As Long, Veri As Variant, X As Long
    
    For Each Sayfa In ThisWorkbook.Worksheets
        Son = Sayfa.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Veri = Sayfa.Range("E1:F" & Son).Value
        For X = LBound(Veri) To UBound(Veri)
            If Veri(X, 1) = Kriter Then
                If IsNumeric(Veri(X, 2)) Then K_TOPLA = K_TOPLA + Veri(X, 2)
            End If
        Next
    Next
End Function
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Ben bir fonksiyon hazırladım. Deneyin bakalım olmuş mu?

C++:
Option Explicit

Function K_TOPLA(Kriter As Variant) As Double
    Dim Sayfa As Worksheet, Son As Long, Veri As Variant, X As Long
   
    For Each Sayfa In ThisWorkbook.Worksheets
        Son = Sayfa.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Veri = Sayfa.Range("E1:F" & Son).Value
        For X = LBound(Veri) To UBound(Veri)
            If Veri(X, 1) = Kriter Then
                If IsNumeric(Veri(X, 2)) Then K_TOPLA = K_TOPLA + Veri(X, 2)
            End If
        Next
    Next
End Function
dosya olarak ekleme imkanınız varmıdır hocam? K_TOPLA komutu ilemi yapacam şimdi?
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Ben bir fonksiyon hazırladım. Deneyin bakalım olmuş mu?

C++:
Option Explicit

Function K_TOPLA(Kriter As Variant) As Double
    Dim Sayfa As Worksheet, Son As Long, Veri As Variant, X As Long
   
    For Each Sayfa In ThisWorkbook.Worksheets
        Son = Sayfa.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Veri = Sayfa.Range("E1:F" & Son).Value
        For X = LBound(Veri) To UBound(Veri)
            If Veri(X, 1) = Kriter Then
                If IsNumeric(Veri(X, 2)) Then K_TOPLA = K_TOPLA + Veri(X, 2)
            End If
        Next
    Next
End Function


=EĞER(E37="";"";K_TOPLA(E37))
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,610
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Önerdiğim kodu boş bir modüle ekleyin.

Daha sonra;

CTRL+H menüsünü açın.
Aranan değer bölümüne ay_uretim_adeti yazın.
Altındaki kutucuğa K_TOPLA yazıp tüm sayfalarda değiştir seçeneğini seçip tümünü değiştirin.

Son olarak eski yavaş çalışan fonksiyonu silebilirsiniz.
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Çok teşekkürler arkadaşlar allah razı olsun
 
Katılım
18 Ağustos 2009
Mesajlar
740
Excel Vers. ve Dili
Office Ev ve İş 2021 - Türkçe
Altın Üyelik Bitiş Tarihi
12-12-2024
Ben bir fonksiyon hazırladım. Deneyin bakalım olmuş mu?

C++:
Option Explicit

Function K_TOPLA(Kriter As Variant) As Double
    Dim Sayfa As Worksheet, Son As Long, Veri As Variant, X As Long
   
    For Each Sayfa In ThisWorkbook.Worksheets
        Son = Sayfa.Cells.Find("*", SearchOrder:=xlByRows, SearchDirection:=xlPrevious).Row
        Veri = Sayfa.Range("E1:F" & Son).Value
        For X = LBound(Veri) To UBound(Veri)
            If Veri(X, 1) = Kriter Then
                If IsNumeric(Veri(X, 2)) Then K_TOPLA = K_TOPLA + Veri(X, 2)
            End If
        Next
    Next
End Function
Çok teşekkürler hocam. Bu tür fonksiyon yazımlarını ne şekilde öğrenebiliriz acaba? Bunun için önereceğiniz bir eğitim seti varmıdır?
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,610
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Dikkat ettiyseniz kod içinde döngü ve dizi yöntemleri bulunuyor. Bu tarz yöntemleri öğrenirseniz fonksiyona çevirmek hiç de zor değil.
 
Üst