- Katılım
- 25 Ocak 2006
- Mesajlar
- 763
- Excel Vers. ve Dili
- 2019 tr
- Altın Üyelik Bitiş Tarihi
- 04-01-2024
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Sub test()
Dim sonA As Long, i As Long, ii As Long, al As String
Dim w(1 To 3), y, itms
sonA = Cells(Rows.Count, "A").End(3).Row
With CreateObject("Scripting.Dictionary")
For i = 2 To sonA
al = Cells(i, "A").Value
If Not .exists(al) Then
w(1) = al
w(2) = Cells(i, "B").Value
w(3) = Cells(i, "C").Value
.Add al, w
Else
y = .Item(al)
y(2) = y(2) & "," & Cells(i, "B").Value
y(3) = y(3) & "," & Cells(i, "C").Value
.Item(al) = y
End If
Next i
If .Count > 0 Then
itms = .itemS
Range("K2:K" & Rows.Count).ClearContents
For i = LBound(itms) To UBound(itms)
Cells(i + 2, 11) = itms(i)(1)
For ii = 2 To 3
.RemoveAll
For Each y In Split(itms(i)(ii), ",")
.Item(y) = Null
Next y
Cells(i + 2, 10 + ii) = Join(.keys, " / ")
Next ii
Next i
End If
End With
End Sub
Function benzersizbirleştir(xRg As Range, xChar As String) As String
Dim xCell As Range
Dim xDic As Object
Set xDic = CreateObject("Scripting.Dictionary")
For Each xCell In xRg
xDic(xCell.Value) = Empty
Next
benzersizbirleştir = Join$(xDic.Keys, xChar)
Set xDic = Nothing
End Function
DÜŞEYARA_BİRLEŞTİR = Join(Liste, ", ")
Çok teşekkürler tekrardan, yine bir not düşeyim. filtreleme yapıldığında sadece filtrelenen alanda işlem yapıyor. kiminin işine gelebilir, kiminin gelmeyebilir. iyi günler.Üstteki mesajımda ki dosyayı revize ettim.
Birleştirme ayıracını da opsiyonal olacak şekilde düzenledim. Varsayılana olarak virgül ve boşluk (", ") şekilde ayarladım.
Boş olan hücreler işleme dahil olmamaktadır.
Option Explicit
Function BENZERSİZ(Alan As Range, Kaçıncı_Benzersiz As Long, Optional Sırala As Byte = 1)
Dim Dizi As Object, Hücre As Range, Liste As Variant
Application.Volatile True
Set Dizi = CreateObject("System.Collections.ArrayList")
For Each Hücre In Alan
If Hücre.Value <> "" Then
If Hücre.Height <> 0 Then
If Dizi.Contains(UCase(Replace(Replace(Hücre.Value, "ı", "I"), "i", "İ"))) = False Then
Dizi.Add UCase(Replace(Replace(Hücre.Value, "ı", "I"), "i", "İ"))
End If
End If
End If
Next
Select Case Sırala
Case 0
Case 1: Dizi.Sort
Case 2: Dizi.Reverse
End Select
Liste = Dizi.ToArray
BENZERSİZ = Liste(Kaçıncı_Benzersiz - 1)
End Function
Function DÜŞEYARA_BİRLEŞTİR(Aranan_Veri As Range, Alan As Range, Sütun_İndis_Sayısı As Integer, _
Optional Benzersiz As Boolean = True, Optional Sırala As Byte = 1, Optional Ayıraç As String = ", ")
Dim Dizi As Object, Hücre As Range, Liste As Variant
Application.Volatile True
Set Dizi = CreateObject("System.Collections.ArrayList")
For Each Hücre In Alan.Columns(1).Cells
If Hücre.Value <> "" Then
If Hücre.Height <> 0 Then
If Hücre.Value = Aranan_Veri.Value Then
If Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value <> "" Then
If Benzersiz Then
If IsNumeric(Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value) Then
If Dizi.Contains(Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value) = False Then
Dizi.Add Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value
End If
Else
If Dizi.Contains(UCase(Replace(Replace(Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value, "ı", "I"), "i", "İ"))) = False Then
Dizi.Add UCase(Replace(Replace(Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value, "ı", "I"), "i", "İ"))
End If
End If
Else
If IsNumeric(Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value) Then
Dizi.Add Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value
Else
Dizi.Add UCase(Replace(Replace(Hücre.Offset(, Sütun_İndis_Sayısı - 1).Value, "ı", "I"), "i", "İ"))
End If
End If
End If
End If
End If
End If
Next
Select Case Sırala
Case 0
Case 1: Dizi.Sort
Case 2: Dizi.Reverse
End Select
Liste = Dizi.ToArray
DÜŞEYARA_BİRLEŞTİR = Join(Liste, Ayıraç)
End Function
=DÜŞEYARA_BİRLEŞTİR($X3;$A$2:$Q$367;17;DOĞRU;0;", ")