benzersiz kayıtları makro ile listeleme

Muzaffer Ali

Destek Ekibi
Destek Ekibi
Katılım
5 Haziran 2006
Mesajlar
6,165
Excel Vers. ve Dili
2019 Türkçe
Merhaba.

Aşağıdaki kodları kullanabilirsiniz.

Kod:
Sub Test()
    Range("C1:C" & Cells(Rows.Count, "C").End(xlUp).Row).Copy Range("E1")
    Range("E:E").RemoveDuplicates Columns:=1, Header:=xlYes
End Sub
 
Son düzenleme:

TUNCA ERSİN

Altın Üye
Katılım
18 Ağustos 2021
Mesajlar
131
Excel Vers. ve Dili
Office Professional plus 2016 Tr
Altın Üyelik Bitiş Tarihi
18-08-2026
buna bir adet koşul nasıl koya biliriz.
 

TUNCA ERSİN

Altın Üye
Katılım
18 Ağustos 2021
Mesajlar
131
Excel Vers. ve Dili
Office Professional plus 2016 Tr
Altın Üyelik Bitiş Tarihi
18-08-2026
Sy. @Korhan Ayhan ;
Hocam Taşıma Liste sayfasından A3 den itibaren A500 kadar firmalar var ama sayısı değişiyor.

B sütununda ise Plakalar var , benim istediğim Liste sayfası A1 de seçtiğim firmaya ait araçları A3 den itibaren benzersiz listelemesi. Taşıma Liste listesi C sütunun da ise ücreti var onu da Liste sayfası B3 den itibaren değerini getirmesi.

Sizden ricam Kodlara açıklama yazarsanız sevinirim , sebebi ise Bu listeleme I sütununa kadar devam etmektedir. iyi günler.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Örnek dosya paylaşarak talebinizi yineleyiniz.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Aşağıdaki formülle sonuca gidebilirsiniz.

DİZİ Formüldür. Eğer Türkçe sürüm kullanıyorsanız formülü çevirmeniz gerekir.

C++:
=IFERROR(INDEX(Tablo4[Plaka];MATCH(0;IF(Tablo4[Mülkiyet]=$A$1;COUNTIF(Liste!B$2:B2;Tablo4[Plaka]));0));"")
 

TUNCA ERSİN

Altın Üye
Katılım
18 Ağustos 2021
Mesajlar
131
Excel Vers. ve Dili
Office Professional plus 2016 Tr
Altın Üyelik Bitiş Tarihi
18-08-2026
Sy. @Korhan Ayhan ;
Hocam verilerim çok fazla olduğu için tabloları aralığa dönüştürsem. Formülü de kod' a çevirsek hızlanır mı ? baya bir şekilde yavaşladı.
aynı zaman da büyükten küçüğe sıralama yaptığım zaman ise hata vermekte.
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Deneyiniz.

C++:
Option Explicit

Sub Unique_List()
    Dim S1 As Worksheet, S2 As Worksheet, Unique_List As Object, My_Data As Variant, X As Long
   
    Set S1 = Sheets("Taşıma Liste")
    Set S2 = Sheets("Liste")
    Set Unique_List = VBA.CreateObject("Scripting.Dictionary")
   
    My_Data = S1.ListObjects("Tablo4").ListColumns(1).DataBodyRange.Resize(, 2).Value
   
    For X = LBound(My_Data, 1) To UBound(My_Data, 1)
        If My_Data(X, 1) = S2.Range("A1") Then
            If Not Unique_List.Exists(My_Data(X, 2)) Then
                Unique_List.Add My_Data(X, 2), False
            End If
        End If
    Next
   
    S2.ListObjects("Tablo5").ListColumns(2).DataBodyRange.ClearContents
    S2.ListObjects("Tablo5").ListColumns(2).DataBodyRange.Cells(1, 1).Resize(Unique_List.Count) = Application.Transpose(Unique_List.Keys)
   
    Erase My_Data
   
    Set S1 = Nothing
    Set S2 = Nothing
    Set Unique_List = Nothing
   
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 

Korhan Ayhan

Administrator
Yönetici
Admin
Katılım
15 Mart 2005
Mesajlar
42,159
Excel Vers. ve Dili
Microsoft 365 Tr-En 64 Bit
Eğer veri sayısı 65536 satırı geçiyorsa yukarıdaki önerim büyük ihtimalle hata verecektir. Alternatif olarak aşağıdaki kodu deneyebilirsiniz.

C++:
Option Explicit

Sub Unique_List()
    Dim S1 As Worksheet, S2 As Worksheet
    Dim Unique_List As Object, My_Data As Variant
    Dim Count_Data As Long, X As Long
    
    Set S1 = Sheets("Tasima Liste")
    Set S2 = Sheets("Liste")
    Set Unique_List = VBA.CreateObject("Scripting.Dictionary")
    
    My_Data = S1.ListObjects("Tablo4").ListColumns(1).DataBodyRange.Resize(, 2).Value
    
    ReDim My_List(1 To UBound(My_Data, 1), 1 To 1)
    
    For X = LBound(My_Data, 1) To UBound(My_Data, 1)
        If My_Data(X, 1) = S2.Range("A1") Then
            If Not Unique_List.Exists(My_Data(X, 2)) Then
                Unique_List.Add My_Data(X, 2), False
                Count_Data = Count_Data + 1
                My_List(Count_Data, 1) = My_Data(X, 2)
            End If
        End If
    Next
    
    S2.ListObjects("Tablo5").ListColumns(2).DataBodyRange.ClearContents
    S2.ListObjects("Tablo5").ListColumns(2).DataBodyRange.Cells(1, 1).Resize(Unique_List.Count) = My_List
    
    Erase My_Data
    Erase My_List
    
    Set S1 = Nothing
    Set S2 = Nothing
    Set Unique_List = Nothing
    
    MsgBox "İşleminiz tamamlanmıştır.", vbInformation
End Sub
 

TUNCA ERSİN

Altın Üye
Katılım
18 Ağustos 2021
Mesajlar
131
Excel Vers. ve Dili
Office Professional plus 2016 Tr
Altın Üyelik Bitiş Tarihi
18-08-2026
Sy. @Korhan Ayhan ;
İlginiz için teşekkür ederim. iki kod da aynı şekilde çalışıyor. Ellerinize sağlık. Allah c.c. razı olsun.
 
Üst