Bul işlemi Macrosu Hk..

Katılım
21 Temmuz 2006
Mesajlar
313
Altın Üyelik Bitiş Tarihi
09-02-2024
Merhaba Arkadaşlar,
Ekli örnek dosyamın Formül kısmında aşağıdaki formül vardır. Bunu sağolsun çıtır arkadaşımız yazdı.
Fakat ben bu işlemi 130 binlik satırda yaptığımda çok kasıyor, bu formülü macroya yedirme şansımız olur mu?
Macro ile daha hızlı çalışacağını düşünüyorum.
Syg.

=IFERROR(IF($A2="";"";INDEX($D$1:$D$15;AGGREGATE(15;6;(ROW($A$2:$A$15)/(ISNUMBER(FIND($A2;$C$2:$C$15))));ROW($A$1))));"")
 

Ekli dosyalar

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
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.

-- Formül alternatifi:
=EĞER(YADA(A2="";EĞERSAY($C:$C;"*"&A2&"*")=0);"";KAYDIR($D$1;KAÇINCI("*"&A2&"*";$C:$C;0)-1;0))
-- Kod altenatifi:
Rich (BB code):
Sub C_DE_BUL_D_YI_YAZ()
If Cells(Rows.Count, "B").End(3).Row > 1 Then _
    Range("B2:B" & Cells(Rows.Count, "B").End(3).Row).ClearContents
For sat = 2 To Cells(Rows.Count, "A").End(3).Row
    Set brn = Range("C:C").Find(Cells(sat, "A").Value)
    If Not brn Is Nothing Then Cells(sat, "B") = Cells(brn.Row, "D")
Next
MsgBox "İşlem tamamlandı."
End Sub
 
Katılım
21 Temmuz 2006
Mesajlar
313
Altın Üyelik Bitiş Tarihi
09-02-2024
Ömer bey merhaba,
Öncelikle teşekkürler, elinize sağlık,

Ben formülü =IF(OR(A2="";COUNTIF($C:$C;"*"&A2&"*")=0);"";OFFSET($D$1;MATCH("*"&A2&"*";$C:$C;0)-1;0)) bu şekilde yazıp aşağı doğru çektiğimde hücreye hiç bir bilgi gelmiyor, yani D kolonundan hiç bir bilgiyi almıyor
Tekrar inceleyebilir misiniz? Çok teşekkürler
 

Ömer BARAN

Uzman
Katılım
8 Mart 2011
Mesajlar
13,002
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.
Tekrar merhaba.

Ekteki belgede açıklama da yaptım.
Formül ile çözüm arıyorsanız,
-- önce, belgedeki makronun ilk For...Next döngüsünü kopyalayıp, yeni bir makro olarak kaydedip çalıştırın,
-- ardından belgedeki formülü kullanın,
Makro ile çözüm aranıyorsa doğrudan sayfadaki makroyu kullanabilirsiniz.
 

Ekli dosyalar

Ziynettin

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

Alternatif olarak bu şekilde kullanabilirsiniz.

PHP:
Option Explicit

Sub ara()
Dim a(), b(), c(), d As Object
Dim i As Long, j As Byte, deg, krt, z As Date
z = TimeValue(Now)
Set d = CreateObject("scripting.dictionary")
a = Range("C2:D" & Cells(Rows.Count, 3).End(3).Row)
For i = 1 To UBound(a)
    deg = Split(CStr(a(i, 1)), ",")
    For j = 0 To UBound(deg)
        If deg(j) <> "" Then d(deg(j)) = i
    Next j
Next i
On Error Resume Next
b = Range("A2:A" & Cells(Rows.Count, "A").End(3).Row).Value
ReDim c(1 To UBound(b), 1 To 1)
    For i = 1 To UBound(b)
        krt = CStr(b(i, 1))
        c(i, 1) = a(d(krt), 2)
    Next i
[B2].Resize(UBound(b)) = c
MsgBox "İşlem tamam." & vbLf & vbLf & "İşlem süresi ;  " & CDate(TimeValue(Now) - z), vbInformation
End Sub
 

Ekli dosyalar

Katılım
21 Temmuz 2006
Mesajlar
313
Altın Üyelik Bitiş Tarihi
09-02-2024
Arkadaşlar elinize kolunuza emeğinize sağlık
Süper süper süper olmuş
Saygılar
 

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,104
Excel Vers. ve Dili
office2010
Sayın search77,
130 bin satırda ne kadar zaman da sonuç veriyor.
 
Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Benim uygulamamda aşağıdaki satırda hata verdi.Acaba ben mi hatalı uyguluyorum.
Kod:
c(i, 1) = a(d(krt), 2)
 

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,104
Excel Vers. ve Dili
office2010
Kod içinde On Error Resume Next hata deyimi yazılı. Hatayı atlayarak kod yine de çalışır.
 
Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
Hata.png Hata resmi görüldüğü gibi.Hata veren dosya yüklendi.
 

Ekli dosyalar

Son düzenleme:

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,104
Excel Vers. ve Dili
office2010
Son düzenleme:
Katılım
21 Temmuz 2006
Mesajlar
313
Altın Üyelik Bitiş Tarihi
09-02-2024
Bende hata vermiyor, 300 bin lik datayı 130 bin satırda arıyor ve işlem 19 sn de oluyor, süper birşey:)
 
Katılım
6 Mart 2005
Mesajlar
6,238
Excel Vers. ve Dili
Excel Vers. ve Dili:
Office 2016 TR 64 Bit
Altın Üyelik Bitiş Tarihi
22/12/2022
#10 ileti ekine ilgili dosya yüklendi.
 

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,104
Excel Vers. ve Dili
office2010
Bende hata vermedi.
 
Üst