Soru Benzersiz Değerleri Koşullu Saydırma

ttb

Katılım
13 Kasım 2018
Mesajlar
50
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
22-11-2023
Merhaba,
Öncelikle şimdiden yardımınız için teşekkür ederim.
İçinden çıkamadığım bir husus var. Ekli örnek tabloya göre anlatmam gerekirse; B sütununda yer alan kişilerin kaç farklı renk kullandığını bulmak istiyorum; ancak her bir rengi sadece bir sefer saysın ve G sütununa, isimin yanına bulduğu sayıyı yazsın.
Örneğin Ali, mavi ve kırmızıyı ikişer kere, sarı ve eflatunu ise birer kere kullanmış. B sütununda 6 sefer Ali adı geçiyor. Ancak mevi ve kırmızıyı ikişer kere kullandığı için bunları 1 olarak saymasını ve G sütununda Ali'nin karşısına 6 değil 4 yazmasını istiyorum.
Umarım anlaşılır şekilde yazabilmişimdir.
Tekrar teşekkürler.
 

Ekli dosyalar

muygun

Özel Üye
Katılım
6 Temmuz 2004
Mesajlar
9,180
Excel Vers. ve Dili
Excel-2003 Türkçe
Merhaba;
Ekteki gibi olabilir.
İyi çalışmalar.
 

Ekli dosyalar

ttb

Katılım
13 Kasım 2018
Mesajlar
50
Excel Vers. ve Dili
Office 365 Türkçe
Altın Üyelik Bitiş Tarihi
22-11-2023
Kusura bakmayın, sorduğum soru ile eklediğim tablo uyumsuz olmuş, yanılttım sizi de. Eke tabloyu tekrar koydum. Benim çalışacağım orijinal tabloda 12 farklı isme karşılık gelen yaklaşık 8,000 adet rakam var. Bunların büyük kısmı eşsiz ama içinde tekrar edenler de vae.
Teşekkürler.
 

Ekli dosyalar

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,105
Excel Vers. ve Dili
office2010
Alternatif makrolu çözüm.
 

Ekli dosyalar

veyselemre

Özel Üye
Katılım
9 Mart 2005
Mesajlar
3,646
Excel Vers. ve Dili
Pro Plus 2021
Kod:
Sub test()
    Dim sonSat&, veri, liste, i&, say&, sira&
    
    Range("F:H").Clear
    sonSat = Cells(Rows.Count, 1).End(3).Row
    If sonSat < 2 Then Exit Sub

    veri = Range("A2:B" & sonSat).Value
    ReDim liste(0 To UBound(veri), 1 To 3)
    liste(0, 1) = "İsim"
    liste(0, 2) = "Adet"
    liste(0, 3) = "Renkler"
    
    With CreateObject("Scripting.Dictionary")
        
        For i = 1 To UBound(veri)
            
            If Not .exists(veri(i, 2) & "|" & veri(i, 1)) Then
                
                .Item(veri(i, 2) & "|" & veri(i, 1)) = Null
                
                If Not .exists(veri(i, 2)) Then
                    say = say + 1
                    .Item(veri(i, 2)) = say
                    liste(say, 1) = veri(i, 2)
                    liste(say, 2) = 1
                    liste(say, 3) = veri(i, 1)
                Else
                    sira = .Item(veri(i, 2))
                    liste(sira, 2) = liste(sira, 2) + 1
                    liste(sira, 3) = liste(sira, 3) & ", " & veri(i, 1)
                End If
            
            End If
                                
        Next i
    
    End With
    
    With Range("F1").Resize(say + 1, 3)
        .Value = liste
        .Borders.Color = rgbSilver
        .Columns.AutoFit
    End With

    MsgBox "İşlem tamam...", vbInformation
End Sub
 
Son düzenleme:

Erdem Akdemir

Destek Ekibi
Destek Ekibi
Katılım
4 Mayıs 2007
Mesajlar
3,632
Excel Vers. ve Dili
2016 PRO TÜRKÇE-İNG. 64 BİT
Dizi formülü,

Kod:
=TOPLA(--ESAYIYSA(KAÇINCI(SATIR($A$2:$A$17)-1;KAÇINCI($A$2:$A$17&F1;$A$2:$A$17&$B$2:$B$17;0);0)))
 
Üst