• DİKKAT

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

Sütun İçeriği Karşılaştırmak...

Katılım
16 Aralık 2009
Mesajlar
68
Excel Vers. ve Dili
03 türkçe
Merhabalar,

Elimde örneğini ekte verdiğim bir tablo var.
İsteğim Q sütunundaki sayıları tek tek diğer sütunlardaki sayılar ile karşılaştırarak bulunduğunda
yandaki hücreye, sayının bulunduğu sütunun en üzerindeki ismin(isimlerin) yazılması.

Örnek dosyada;

56 - çetin
73- mustafa, ümit vb.

Not: Elimdeki ham tabloda sütunlardaki sayılar değişken olup, can isimli sütunda 500 adet sayı varken,
bilal isimli sütunda 85023 adet sayı bulunabilmektedir.

Teşekkürler Şimdiden.
 

Ekli dosyalar

Merhaba,

Aşağıdaki kodu denermisiniz.

Kod:
Option Explicit
 
Sub BUL_LİSTELE()
    Dim X As Long, BUL As Range, ADRES As String, SÜTUN As Byte
    
    Range("R2:R" & Rows.Count).ClearContents
    
    For X = 2 To Cells(Rows.Count, "Q").End(3).Row
        Set BUL = Range("A:O").Find(Cells(X, "Q"), , , xlWhole)
        If Not BUL Is Nothing Then
        ADRES = BUL.Address
        SÜTUN = BUL.Column
        Do
            If Cells(X, "R") = "" Then
                Cells(X, "R") = Cells(1, BUL.Column)
            Else
                Cells(X, "R") = Cells(X, "R") & ", " & Cells(1, BUL.Column)
            End If
        Set BUL = Range("A:O").FindNext(BUL)
        Loop While Not BUL Is Nothing And BUL.Address <> ADRES And BUL.Column <> SÜTUN
        End If
    Next
    
    Set BUL = Nothing
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 
Merhaba,

Soru ile bende ilgilenmiştim, alternatif olsun.


Kod:
Sub Bul()
    Dim Hucre   As Range, _
        SonSat  As Long, _
        Sat     As Long, _
        d
 
    SonSat = Range("A:O").Find("*", , , , xlByRows, xlPrevious).Row
    Sat = Cells(Rows.Count, "Q").End(3).Row + 1
 
    Application.ScreenUpdating = False
    Range("Q2:R" & Sat).ClearContents
    Sat = 0
 
    Set d = CreateObject("Scripting.Dictionary")
    For Each Hucre In Range("A2:O" & SonSat)
        If Not Hucre.Value = "" Then
            If d.exists(Hucre.Value) = False Then
                Sat = Sat + 1
                d.Add Hucre.Value, Cells(1, Hucre.Column)
            Else
                d.Item(Hucre.Value) = d.Item(Hucre.Value) & ", " & Cells(1, Hucre.Column)
            End If
        End If
    Next Hucre
    Range("Q2").Resize(Sat, 1) = Application.WorksheetFunction.Transpose(d.keys)
    Range("R2").Resize(Sat, 1) = Application.WorksheetFunction.Transpose(d.items)
 
End Sub
 

Ekli dosyalar

ustalar süpersiniz, aklınıza,emeğinize sağlık
 
Geri
Üst