Makale numarası: 291320 - Son Gözden Geçirme: 29 Nisan 2008 Salı - Gözden geçirme: 4.2

Excel'de makro örnekleri kullanarak bir listedeki yinelenen öğeleri silme

Bu makalenin Microsoft Excel 2000 sürümü için bkz: 240077  (http://support.microsoft.com/kb/240077/ ) (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir).

Bu Sayfada

Hepsini aç | Hepsini kapa

™zet

Microsoft Excel'de, bir listedeki yinelenen öğeleri silmek için bir makro oluşturabilirsiniz. İki listeyi karşılaştırmak ve ilk (asıl) listede de bulunan öğeleri ikinci listeden silmek için de bir makro oluşturabilirsiniz. Bu makro, iki listeyi birleştirmek veya yalnızca yeni bilgileri görmek istiyorsanız kullanışlıdır.

Bu makale, tek bir listedeki yinelenen kayıtların nasıl silineceğini (Örnek 1) ve bir listeyi başka bir listeyle karşılaştırdığınızda yinelenen kayıtların nasıl silineceğini (Örnek 2) gösteren örnek Microsoft Visual Basic for Applications makroları (Sub yordamları) içerir. Bu makrolar, listenin sıralanmasını gerektirmez. Makrolar ayrıca, bir öğenin listede bir kez veya birkaç kez yinelenmesine bakılmaksızın tüm yinelemeleri siler.

Daha fazla bilgi

Microsoft, programlama örneklerini yalnızca gösterim amacıyla sağlar; örtülü veya açık garanti vermez. Buna satılabilirlik veya belirli bir amaca uygunluk zımni garantileri de dahildir, ancak bunlarla sınırlı değildir. Bu makale, gösterilen programlama dilini ve yordamları oluşturmak ve hata ayıklamak amacıyla kullanılan araçları kullanmayı bildiğinizi varsayar. Microsoft destek mühendisleri, belirli bir yordamın işlevselliğinin açıklanmasına yardımcı olabilir, ancak gereksinimlerinizi karşılamaya yönelik olarak ek işlevsellik sağlamak veya yordamlar geliştirmek amacıyla bu örnekleri değiştirmezler.

Örnek 1: Tek bir listedeki yinelenen öğeleri silme

Aşağıdaki makro örneği, A1:A100 aralığındaki tek bir listede arama yapar ve listedeki tüm yinelenen öğeleri siler. Bu makro, liste aralığında boş hücre olmamasını gerektirir. Listeniz boş hücreler içeriyorsa, verileri artan sırayla düzenleyerek boş hücrelerin listenizin sonunda olmasını sağlayın.
Sub DelDups_OneList()
Dim iListCount As Integer
Dim iCtr As Integer

' Makroyu hızlandırmak için ekran güncelleştirmeyi kapatın.
Application.ScreenUpdating = False

' Aranacak kayıt sayısını alın.
iListCount = Sheets("Sayfa1").Range("A1:A100").Rows.Count
Sheets("Sayfa1").Range("A1").Select
' Kayıtların sonuna kadar döngü gerçekleştirin.
Do Until ActiveCell = ""
   ' Kayıtlar arasında döngü gerçekleştirin.
   For iCtr = 1 To iListCount
      ' Kaydı kendisiyle karşılaştırmayın.
      ' Farklı bir sütun belirtmek için, sütun numarasını 1 artırın.
      If ActiveCell.Row <> Sheets("Sayfa1").Cells(iCtr, 1).Row Then
         ' Sonraki kaydı karşılaştırın.
         If ActiveCell.Value = Sheets("Sayfa1").Cells(iCtr, 1).Value Then
            ' Eşleşme true değerine sahipse satırı silin.
            Sheets("Sayfa1").Cells(iCtr, 1).Delete xlShiftUp
               ' Silinen satırı göz önüne alarak sayacı artırın.
               iCtr = iCtr + 1
         End If
      End If
   Next iCtr
   ' Sonraki kayda geçin.
   ActiveCell.Offset(1, 0).Select
Loop
Application.ScreenUpdating = True
MsgBox "Bitti!"
End Sub
				

Örnek 2: İki listeyi karşılaştırıp yinelenen öğeleri silme

Aşağıdaki makro örneği, bir (asıl) listeyi başka bir listeyle karşılaştırır ve asıl listede de olan öğeleri ikinci listeden siler. İlk liste, Sayfa1'de A1:A10 aralığındadır. İkinci liste, Sayfa1'de A1:A100 aralığındadır. Makroyu kullanmak için, sayfalardan birini seçin ve makroyu çalıştırın.
Sub DelDups_TwoLists()
Dim iListCount As Integer
Dim iCtr As Integer

' Makroyu hızlandırmak için ekran güncelleştirmeyi kapatın.
Application.ScreenUpdating = False

' Aranacak kayıt sayısını alın (silinecek liste).
iListCount = Sheets("Sayfa2").Range("A1:A100").Rows.Count

' "asıl" liste içinde döngü gerçekleştirin.
For Each x In Sheets("Sayfa1").Range("A1:A10")
   ' İkinci listedeki tüm kayıtlar için döngü gerçekleştirin.
   For iCtr = 1 To iListCount
      ' Sonraki kaydı karşılaştırın.
      ' Farklı bir sütun belirtmek için, sütun numarasını 1 artırın.
      If x.Value = Sheets("Sayfa2").Cells(iCtr, 1).Value Then
         ' Eşleşme true değerine sahipse satırı silin.
         Sheets("Sayfa2").Cells(iCtr, 1).Delete xlShiftUp
         ' Silinen satırı göz önüne alarak sayacı artırın.
         iCtr = iCtr + 1
      End If
   Next iCtr
Next
Application.ScreenUpdating = True
MsgBox "Bitti!"
End Sub
				

Referanslar

Bu makaledeki kod örneğini kullanma hakkında daha fazla bilgi için, Microsoft Bilgi Bankası'ndaki makaleyi görüntülemek üzere aşağıdaki makale numarasını tıklatın:
290140  (http://support.microsoft.com/kb/290140/TR/ ) Bilgi Bankası makalelerindeki kod örneklerini çalıştırma (Bu bağlantı, bir kısmı veya tamamı İngilizce olan içeriğe işaret edebilir)

Bu makaledeki bilginin uygulandığı durum:
  • Microsoft Office Excel 2007
  • Microsoft Office Excel 2003
  • Microsoft Excel 2002 Standard Edition
Anahtar Kelimeler: 
kbautomation kbprogramming kbmacro kbdtacode kbhowto KB291320
 

Makale çevirileri

 

Related Support Centers