Birden Fazla Koşula Göre Eşleştirme Yapmak İstiyorum.

Katılım
1 Ocak 2024
Mesajlar
56
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019
Merhabalar. Elimdeki dosyada iki farklı sayfa var. Bunların arasında A, B ve C sütunlarında yer alan bilgilere göre eşleştirme yaparak veri almak istiyorum. Örnek dosyamda yer alan "2023YD" sayfasındaki L sütununa, A, B ve C sütunlarında ortak olan "2023TP" sayfasından K sütununu çekmek istiyorum. Belki net ifade edemedim ama kısacası yapmak istediğim "2023TP" sayfasındaki K sütununu, "2023YD" sayfasındaki L sütununa çekmek istiyorum. Ancak bunu yaparken A, B ve C sütunlarının ortak olması gerekiyor. Örnek dosyam;

https://s6.dosya.tc/server21/s32zhh/LGS_ornek.xlsx.html
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Merhab

Aşağıdaki kodu bir modüle kopyalayıp çalıştırın.

Kod:
Sub test()
    Dim Say As Long
    Dim syfYD As Worksheet
    Dim syfTP As Worksheet
    
    Set syfTP = Worksheets("2023TP")
    Set syfYD = Worksheets("2023YD")

    Application.ScreenUpdating = False
    
    syfYD.ShowAllData
    Say = syfTP.Cells(Rows.Count, "A").End(xlUp).Row
    syfTP.Range("L2:L" & Say).FormulaLocal = "=YERİNEKOY(A2&B2&C2;"" "";"""")"


    Say = syfYD.Cells(Rows.Count, "A").End(xlUp).Row
    With syfYD.Range("L2:L" & Say)
        .FormulaLocal = "=DOLAYLI(""'" & syfTP.Name & "'!K""&KAÇINCI(YERİNEKOY(A2&B2&C2;"" "";"""");'2023TP'!L:L;0);1)"
        .Value = .Value
    End With
    syfTP.Range("L:L").ClearContents
    Application.ScreenUpdating = True
End Sub
 
Katılım
1 Ocak 2024
Mesajlar
56
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019
Merhab

Aşağıdaki kodu bir modüle kopyalayıp çalıştırın.

Kod:
Sub test()
    Dim Say As Long
    Dim syfYD As Worksheet
    Dim syfTP As Worksheet
   
    Set syfTP = Worksheets("2023TP")
    Set syfYD = Worksheets("2023YD")

    Application.ScreenUpdating = False
   
    syfYD.ShowAllData
    Say = syfTP.Cells(Rows.Count, "A").End(xlUp).Row
    syfTP.Range("L2:L" & Say).FormulaLocal = "=YERİNEKOY(A2&B2&C2;"" "";"""")"


    Say = syfYD.Cells(Rows.Count, "A").End(xlUp).Row
    With syfYD.Range("L2:L" & Say)
        .FormulaLocal = "=DOLAYLI(""'" & syfTP.Name & "'!K""&KAÇINCI(YERİNEKOY(A2&B2&C2;"" "";"""");'2023TP'!L:L;0);1)"
        .Value = .Value
    End With
    syfTP.Range("L:L").ClearContents
    Application.ScreenUpdating = True
End Sub
Hocam teşekkür ederim. Emeğinize sağlık.
 
Katılım
1 Ocak 2024
Mesajlar
56
Excel Vers. ve Dili
Microsoft Office Professional Plus 2019
Merhab

Aşağıdaki kodu bir modüle kopyalayıp çalıştırın.

Kod:
Sub test()
    Dim Say As Long
    Dim syfYD As Worksheet
    Dim syfTP As Worksheet
   
    Set syfTP = Worksheets("2023TP")
    Set syfYD = Worksheets("2023YD")

    Application.ScreenUpdating = False
   
    syfYD.ShowAllData
    Say = syfTP.Cells(Rows.Count, "A").End(xlUp).Row
    syfTP.Range("L2:L" & Say).FormulaLocal = "=YERİNEKOY(A2&B2&C2;"" "";"""")"


    Say = syfYD.Cells(Rows.Count, "A").End(xlUp).Row
    With syfYD.Range("L2:L" & Say)
        .FormulaLocal = "=DOLAYLI(""'" & syfTP.Name & "'!K""&KAÇINCI(YERİNEKOY(A2&B2&C2;"" "";"""");'2023TP'!L:L;0);1)"
        .Value = .Value
    End With
    syfTP.Range("L:L").ClearContents
    Application.ScreenUpdating = True
End Sub
Muzaffer Bey terkardan yoruyorum sizi kusura bakmayın lütfen. Ben bu kodu farklı dosyalar için kullanmak istediğimde hangi kısımlarında değişiklik yapmam gerekiyor acaba?
 

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,167
Excel Vers. ve Dili
2019 Türkçe
Farklı dosyada kullanacaksanız o dosyaya kodu kopyalayıp çalıştırın.
Farklı sayfalarda çalıştıracaksanız
Kod:
    Set syfTP = Worksheets("2023TP")
    Set syfYD = Worksheets("2023YD")
buradaki sayfa adlarını değiştirin.
 
Üst