- Katılım
- 12 Şubat 2015
- Mesajlar
- 520
- Excel Vers. ve Dili
- Office 2016 TR 64 Bit Windows
- Altın Üyelik Bitiş Tarihi
- 01-02-2027
DOSYA İndirmek/Yüklemek için ÜCRETLİ ALTIN ÜYELİK Gereklidir!
Altın Üyelik Hakkında Bilgi
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Bak As Long
Dim Detay As String
If Not Intersect(Target, Range("S2")) Is Nothing Then
For Bak = 1 To Cells(Rows.Count, "K").End(xlUp).Row
If Cells(Bak, "K") = Target Then
If Not Detay = "" Then Detay = Detay & ","
Detay = Detay & Cells(Bak, "L")
End If
Next
If Detay = "" Then
Cells(2, "T") = "Bulunamadı."
Else
Cells(2, "T") = Detay
End If
End If
End Sub
Option Explicit
Function DÜŞEYARA_BİRLEŞTİR(Alan As Range, Kriter As Range, Optional Ayıraç As String = ",") As String
Dim X As Long
Application.Volatile True
For X = LBound(Alan.Value, 1) To UBound(Alan.Value, 1)
If Alan.Cells(X, 1) = Kriter.Value Then
If DÜŞEYARA_BİRLEŞTİR = "" Then
DÜŞEYARA_BİRLEŞTİR = Alan.Cells(X, 2)
Else
DÜŞEYARA_BİRLEŞTİR = DÜŞEYARA_BİRLEŞTİR & Ayıraç & Alan.Cells(X, 2)
End If
End If
Next
End Function
Sub test()
Sheets("Verilerim").Select
son = Range("K" & Rows.Count).End(3).Row
If son < 2 Then Exit Sub
Set dc = CreateObject("scripting.dictionary")
a = Range("K1:L" & son).Value
For i = 2 To UBound(a)
ww = CStr(a(i, 1))
If Not dc.exists(ww) Then
dc(ww) = a(i, 2)
Else
dc(ww) = dc(ww) & ", " & a(i, 2)
End If
Next i
son = 0
Erase a
son = Range("S" & Rows.Count).End(3).Row
If son < 2 Then Exit Sub
a = Range("S1:S" & son).Value
ReDim b(1 To UBound(a), 1 To 1)
For i = 2 To UBound(a)
ww = CStr(a(i, 1))
If dc.exists(ww) Then
b(i - 1, 1) = dc(ww)
End If
Next i
[T2].Resize(UBound(a) - 1) = b
MsgBox "İşlem tamam...", vbInformation
End Sub
Option Explicit
Sub Detay_Listele()
Dim Veri As Variant, Son As Long, X As Long
Dim Kriter As Range, Say As Long, Zaman As Double
Zaman = Timer
Son = Cells(Rows.Count, "K").End(3).Row
If Son < 3 Then Son = 3
Veri = Range("K2:L" & Son).Value
Range("T2:T" & Rows.Count).ClearContents
ReDim Liste(1 To Son, 1 To 1)
With CreateObject("Scripting.Dictionary")
For Each Kriter In Range("S2:S" & Cells(Rows.Count, "S").End(3).Row)
For X = LBound(Veri, 1) To UBound(Veri, 1)
If Veri(X, 1) = Kriter.Value Then
If Not .Exists(Veri(X, 1)) Then
Say = Say + 1
.Add Veri(X, 1), Say
Liste(Say, 1) = Veri(X, 2)
Else
Liste(.Item(Veri(X, 1)), 1) = Liste(.Item(Veri(X, 1)), 1) & "," & Veri(X, 2)
End If
End If
Next
Next
End With
If Say > 0 Then
Range("T2").Resize(Say) = Liste
MsgBox "İşleminiz tamamlanmıştır." & vbCr & vbCr & _
"İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
Else
MsgBox "Uygun kayıt bulunamadı!", vbExclamation
End If
End Sub
Option Explicit
Function DÜŞEYARA_BİRLEŞTİR(ByVal Alan As Variant, ByVal Kriter As Variant, Optional Ayıraç As String = ",") As String
Dim X As Long
Application.Volatile True
For X = LBound(Alan.Value, 1) To UBound(Alan.Value, 1)
If Alan.Cells(X, 1) = Kriter Then
If DÜŞEYARA_BİRLEŞTİR = "" Then
DÜŞEYARA_BİRLEŞTİR = Alan.Cells(X, 2)
Else
DÜŞEYARA_BİRLEŞTİR = DÜŞEYARA_BİRLEŞTİR & Ayıraç & Alan.Cells(X, 2)
End If
End If
Next
End Function
Sub Detay_Listele()
Dim Veri As Range, Son As Long, Zaman As Double
Zaman = Timer
Son = Cells(Rows.Count, "S").End(3).Row
Range("T2:T" & Rows.Count).ClearContents
For Each Veri In Range("S2:S" & Son)
Veri.Offset(, 1) = DÜŞEYARA_BİRLEŞTİR(Range("K2:L" & Cells(Rows.Count, "K").End(3).Row), Veri.Value, ",")
Next
MsgBox "İşleminiz tamamlanmıştır." & vbCr & vbCr & _
"İşlem süresi ; " & Format(Timer - Zaman, "0.00") & " Saniye", vbInformation
End Sub