• DİKKAT

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

sütunları karşılaştırıp eşleştirmek

esdrym

Altın Üye
Katılım
25 Temmuz 2008
Mesajlar
29
Excel Vers. ve Dili
Office 365
Merhabalar
Aradım fakat forumda örneğini bulamadım. Benim karşılaştırma yapmam gereken iki tane 4'ü birbirine bağlı iki tane farklı sütunum var. Örnekte de görebileceğiniz gibi A,B,C,D birbirine bağlı bir bölüm ve F,G,H,I ise birbirine bağlı farklı bir bölüm. Ben 1. ve 2. bölümü karşılaştırıp karşılığı olmayanların karşı bölümüne boş satır açmasını ve belge no kısmına yok yazmasını istiyorum. Sonucu yeni bir sayfaya da yazabilir ya da aynı yerde sadece satır açarak da yapabilir. Karşılaştırma öncesi ve sonrasını aynı sayfaya ekledim.
Yardım ederseniz çok memnun olurum.
Teşekkürler.
Esra
 

Ekli dosyalar

Merhabalar,
Belge no bazında karşılaştırma yapmak istiyorum. A,B,C,D sütünlarını tek olarak düşünün F,G,H,I sütunlarını da tek olarak düşünün lütfen.B ve G sütunlarına göre eşleştirme yapıp boşluk bıraktırmak istiyorum.
Teşekkürler.
 
Merhabalar
Konu hakkında yardımcı olabilecek var mı acaba?
Teşekkürler.
 
Merhaba,

Sub Eşleştir()
Application.ScreenUpdating = False
Range("K4:S1000") = ""
mak = WorksheetFunction.Max(Range("B1:B1000")) + 3
For i = 4 To mak
adet = WorksheetFunction.CountIf(Range("B4:B1000"), i - 3)
If adet = 0 Then
Range("L" & i) = "Yok"
GoTo 10
End If
kac = WorksheetFunction.Match(i - 3, Range("B1:B1000"), 0)
Range("K" & i & ":N" & i) = Range("A" & kac & ":D" & kac).Value
10
Next

mak = WorksheetFunction.Max(Range("G1:G1000")) + 3
For i = 4 To mak
adet = WorksheetFunction.CountIf(Range("G4:G1000"), i - 3)
If adet = 0 Then
Range("Q" & i) = "Yok"
GoTo 20
End If
kac = WorksheetFunction.Match(i - 3, Range("G1:G1000"), 0)
Range("P" & i & ":S" & i) = Range("F" & kac & ":I" & kac).Value
20
Next
End Sub
Kodu deneyiniz.
 
Benzer bir kod benim stok sayım sorunumu da çözebilir belki. Ancak bu kodla çözemedim. Teşekkürler.
 
Merhabalar

Gerçekten çok teşekkür ederim. dosyamda tıkır tıkır çalışıyor:)
Bu kod çok işime yarayacak.
Tekrar çok teşekkürler.
 
Merhabalar
Yukarıdaki kod ilk eklediğim örnek dosya için çalışıyor fakat başka dosyaların kodlarına eklediğim zaman çalışmıyor. Mesela ekteki dosyanın koduna da ekledim fakat "400" diye hata döndürüyor.
Neden çalışmadığına ekteki dosya üzerinden bakabilir misiniz?
Teşekkürler.
 

Ekli dosyalar

İki dosya bir birinden farklı olduğu için hata verir. Makrolar ilk göndediğiniz dosyaya göre düzenlendi. Siz nasıl olmasını istiyorsanız, dosya üzerinde açıklayınız.
 
Merhabalar
Aslında baktığınızda iki dosyada aynı. Sadece sütunlardaki bilgiler farklı.Ben dosyada hep B kolonu ile G kolonunu karşılaştırıp yan tarafa karşılaştırmayı yapmasını istiyorum. Yani A,C,D ve F,H,I kolonlarındaki verilerin tipleri farklı olabilir. Dosyanın içeriği değişebilir ama sütün sayısı değişmeyecek ve aynı sayıda kalacak ve hep B ve G kolonlarını karşılaştıracak.
Aynı kodun neden ekteki dosyada çalışmadığını anlayamadım. Neyi değiştirmem gerekiyor acaba?
Yardımlarınız için teşekkürler.
 

Ekli dosyalar

Veri aralığımnız çok fazla. Nasıl olmasını istiyorsanız ona göre düzenleyiniz.
 
Merhabalar
Ekteki dosya gibi olabilir mi? Aynı sayfada B ve G kolonlarını karşılaştırıp yan tarafa karşılaştırılıp ve olmayan satırlara yok yazmasını istiyorum.
Çok teşekkürler.
 

Ekli dosyalar

Merhaba,
Sub Eşleştir()
Application.ScreenUpdating = False
Range("K4:S100000").ClearContents
son = Cells(Rows.Count, "B").End(3).Row
son = Cells(Rows.Count, "G").End(3).Row

Range("B4:B" & son).Copy Range("U4")
son = Cells(Rows.Count, "G").End(3).Row
Range("G4:G" & son).Copy Range("U" & Cells(Rows.Count, "U").End(3).Row + 1)

son = Cells(Rows.Count, "U").End(3).Row
Range("U4:U" & son).Sort Range("U4")


For i = 4 To son
If WorksheetFunction.CountIf(Range("U4:U" & i), Cells(i, "U")) > 1 Then GoTo 30
sat_L = Cells(Rows.Count, "L").End(3).Row + 1
adet = WorksheetFunction.CountIf(Range("B:B"), Cells(i, "U"))
If adet = 0 Then
Range("L" & sat_L) = "Yok"
GoTo 10
End If
kac = WorksheetFunction.Match(Cells(i, "U"), Range("B:B"), 0)
Range("K" & sat_L & ":N" & sat_L) = Range("A" & kac & ":D" & kac).Value
10

sat_Q = Cells(Rows.Count, "Q").End(3).Row + 1
adet = WorksheetFunction.CountIf(Range("G:G"), Cells(i, "U"))
If adet = 0 Then
Range("Q" & sat_Q) = "Yok"
GoTo 30
End If
kac = WorksheetFunction.Match(Cells(i, "U"), Range("G:G"), 0)
Range("P" & sat_Q & ":S" & sat_Q) = Range("F" & kac & ":I" & kac).Value
30
Next
Range("U:U").Delete
End Sub

Kodu deneyiniz.
 
Geri
Üst