• DİKKAT

    DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
    Altın Üyelik Hakkında Bilgi

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

Katılım
1 Ocak 2024
Mesajlar
67
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
 
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
 
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.
 
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?
 
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.
 
Geri
Üst