Hocam yazarmisiniz lütfen çok önemli gerçekten.Merhaba
Ek dosyayı denermisiniz?
https://www.dosyaupload.com/70km
Dosyada 320 sütundan ikili kombinasyonla, en fazla birbirini tamamlayan iki sütunu seçecek.
Üç, dört sütun karşılaştırması yapılıp daha fazla tamamlayan bulunabilir ama dosyada göreceğiniz gibi ikilide bile uzun zaman alıyor
Kod:Private Sub CommandButton1_Click() Dim adr As String, adr2 As String, adr3 As String, dc, dic, rf(), rm(), t As Long, j As Range Dim a As Long, b As Long, c As Long, s1 As Worksheet, s2 As Worksheet, s1x As Long Dim kac As Long, kac2 As Long, tpl As Long Set s1 = Sheets(1) Set s2 = Sheets(3) s1x = s1.Cells.Find("*", searchorder:=xlByRows, searchdirection:=xlPrevious).Row For a = 1 To 319 Cells(1, a).Select Set dc = CreateObject("Scripting.Dictionary") rf = s1.Range(Cells(2, a), Cells(s1x, a)).Value For b = LBound(rf) To UBound(rf) If Trim(rf(b, 1)) <> "" And Not dc.exists(Trim(rf(b, 1))) Then dc.Add Trim(rf(b, 1)), "" Next For c = a + 1 To 320 Set dic = CreateObject("Scripting.Dictionary") rm = s1.Range(Cells(2, c), Cells(s1x, c)).Value For b = LBound(rm) To UBound(rm) If Trim(rm(b, 1)) <> "" And Not dc.exists(Trim(rm(b, 1))) Then dic.Add Trim(rm(b, 1)), "" Next If adr = "" Then adr = Columns(c).Address kac = dic.Count End If If kac < dic.Count Then adr = Columns(c).Address kac = dic.Count End If Set dic = Nothing Next c If adr2 = "" Then adr2 = Columns(a).Address kac2 = dc.Count tpl = kac + kac2 End If If kac2 < dc.Count Then adr2 = Columns(a).Address kac2 = dc.Count End If If tpl < kac + kac2 Then tpl = kac + kac2 adr3 = adr2 & "/" & adr End If kac = 0 kac = 0 Set dc = Nothing Next s2.Activate s = 1 s2.[A:B].ClearContents s2.[A1] = Split(Split(adr3, "/")(0), ":$")(1) s2.[B1] = Split(Split(adr3, "/")(1), ":$")(1) For t = 1 To 2 For Each j In s1.Range(s2.Cells(1, t) & 2 & ":" & s2.Cells(1, t) & s1x) If j.Value <> "" Then If WorksheetFunction.CountIf(s2.Range("A2:B" & s1x), j.Value) = 0 Then s = s + 1 s2.Cells(s, t) = j.Value End If: End If Next: s = 1 Next End Sub