Eğersay'dan daha hızlı çalışacak yöntem var mı

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,

B sütununda 5.000 hücrelik verilerim var. E sütununda da 60.000 hücrelik arşiv verilerim var. 5.000 hücrelik verilerden hangilerinin 60.000 lik datada olduğunu bulmaya çalışıyorum. Doğal olarak bunu EĞERSAY ile yapıyorum. Ama 5.000 hücre için 10 dakikaya kadar uzayabiliyor.

Bu tespit işlemini daha hızlı yapmanın EĞERSAY'dan başka bir yolu, yöntemi var mıdır acaba !
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

EĞERSAY işlevini KOŞULLU BİÇİMLENDİRME içerisinde kullanmayı denediniz mi acaba?
.
 

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
Ömer Baran üstadım çok teşekkür ediyorum. Çok iyi fikir, sağolunuz. ilk fırsatta deneyip sonucunu burada paylaşacağım. 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
Ömer Baran üstadım fikir için teşekkür ediyorum. Evet Koşullu Biçimlendirme bir miktar daha hızlı çalışıyor. Ama bu sefer de renge göre Filtreleme açısından 10.000 Adetlik filtreleme sınırına takılıyor :(
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Sayın SERDAR'ın önerisini göz önünde bulundarmanızda yarar var.

Tabi örnek belge olmadığından söylenebilecek çok fazla şey de yok.
Ayrıca adetlerin bulunmasındaki amaç da bilinmiyor.
B sütunundaki veri E sütununda varsa ne yapacaksınız, yoksa ne yapacaksınız,
veri türü (sayı/metin/tarih vs) nedir vs. hiçbir şey belli değil.

Belki de makro kullanılarak bir şeyler yapılabilir ama gerçek belgeyle aynı yapıda ve
gerçek belgedeki verileri temsil edebilecek nitelikte veriler içeren bir örnek belge yüklenip,
yapılması istenilen işlem tam olarak açıklanmalıdır.
.
 

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
İdris Serdar üstadım teşekkürler. mutlaka deneyeceğim.
 

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
sayın üstadlar ilginize çok teşekkür ediyorum. Örnek dosyayı aşağıdaki linke yükledim.
http://www.dosya.tc/server10/q5dfb2/_BENZER_KODLARI_SIL.xls.html

Hedef : MARMARA sayfasındaki kodların bazıları EGE sayfasında da bulunmaktadır. Bu kodların MARMARA sayfasından silinmesi ve EGE sayfasında bulunmayan kodların kalması.
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
12,997
Excel Vers. ve Dili
Office 2013 ( 32 bit ) TÜRKÇE
Altın Üyelik Bitiş Tarihi
(18.03.2020) - Uzman olduğu için tarih geçersiz oldu.
Merhaba.

İşlem yine EĞERSAY işlevi üzerinden gerçekleştiriliyor.

-- Belge açıkken ALT+F11 tuşlarına basıp VBA ekranını görüntüleyin.
-- VBA üst menüsündan INSERT->MODÜLE'yi seçin,
-- Sol taraftan MODULE1'in adına fareyle çift tıklayın ve sağdaki boş alana aşağıdaki kod'u yapıştırın.
-- Fareyi kullanarak, imlecin kod'un ilk satırına gelmesini sağlayın,
-- F5 tuşuna basarak kod'u çalıştırın.

(Benim bilgisayarımda işlem 45-50 saniye kadar sürdü)
.
Kod:
Sub FORMULLE_AYIKLA()
Set m = Sheets("MARMARA"): Set e = Sheets("EGE")
Application.ScreenUpdating = False: Application.Calculation = xlCalculationManual
zaman = Timer
son = m.Cells(Rows.Count, 2).End(3).Row
With m.Range("C2:C" & son)
    .Formula = "=COUNTIF(EGE!$B$2:$B$60001,B2)": .Value = .Value
End With
m.Range("B1:C" & son).AutoFilter Field:=2, Criteria1:="1"
m.Range("B2:B" & son).SpecialCells(xlCellTypeVisible).Delete Shift:=xlUp
m.Range("B1:C" & son).AutoFilter Field:=2
m.Range("C2:C" & son).ClearContents
Application.ScreenUpdating = True: Application.Calculation = xlCalculationAutomatic
MsgBox "İşlem tamamlandı. Süre: " & Format(Timer - zaman, "0.00") & " saniye", vbInformation
End Sub
 

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
Sayın Ömer BARAN üstadım müthişsiniz. Gerçekten çok hızlı. Eskiye nazaran uçuyor resmen :)
sonuç : 77 saniye. harika. sağlıcakla kalın.
 

Ziynettin

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

Ömer Bey sorunuza çözüm sunmuş. Alternatif olarak bu şekilde de kullanabilrisiniz.

Kod:
Sub Olanları_Sil()
Dim d As Object, alan As Range
Dim s1 As Worksheet, z As Double, i As Long
z = TimeValue(Now)
Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual
Set s1 = Sheets("MARMARA")
Set d = CreateObject("Scripting.Dictionary")
    For Each alan In Sheets("EGE").[B2:B6001]
        d(alan.Text) = ""
    Next alan
    i = 2
    Do While s1.Cells(i, 2) <> ""
        If d.Exists(Trim(s1.Cells(i, 2))) Then
            s1.Rows(i).Delete
        Else
            i = i + 1
        End If
    Loop
Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True
MsgBox CDate(TimeValue(Now) - z), vbInformation
End Sub
 

Merhum İdris SERDAR

Moderatör
Yönetici
Katılım
21 Ekim 2005
Mesajlar
17,094
Excel Vers. ve Dili
Excel, 365 - İngilizce
.

Benden de bir alternatif.

Kod:
Sub BenzerleriSil()

Z = TimeValue(Now)

Application.ScreenUpdating = False
Application.EnableEvents = False
Application.Calculation = xlCalculationManual

    j = 2
    For i = Worksheets("EGE").Cells(Rows.Count, j).End(xlUp).Row To 2 Step -1
        If Worksheets("EGE").Cells(i, j).Value = Worksheets("MARMARA").Cells(i, j).Value Then
            Worksheets("MARMARA").Rows(i).Delete
        End If
    Next i

Application.Calculation = xlCalculationAutomatic
Application.EnableEvents = True
Application.ScreenUpdating = True

MsgBox CDate(TimeValue(Now) - Z), vbInformation

End Sub
Bende 21 - 25 saniye sürdü.


.
 

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
Ziynettin üstadım ilginize çok teşekkür ediyorum. çok kısa sürede işlem tamam. Çok iyi bir alternatif daha oldu. Sağlıcakla kalın.
 
Son düzenleme:

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
İdris Serdar üstadım ilginize çok teşekkür ediyorum. çok kısa sürede işlem tamam. Çok iyi bir alternatif daha oldu. Sağlıcakla kalın.
 
Üst