mükerrer kayıtların silinmesi

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
Arkadaşlar herkese merhaba,
aşağıdaki gibi bir listem var. İstediğim mükerrer olanları silmesi(satır silme olabilir)

Herkese iyi çalışmalar...

A sütunu
aa
aa
aa
bb
bb
bb
bb
cc
cc
cc
dd
dd
dd
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
Kod:
Private Sub CommandButton1_Click()
With Columns("A")
.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range("b1"), Unique:=True
.Delete Shift:=xlToLeft
End With
End Sub



mükerrer kayıt satır sil yinelenen
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
Sayın Alpen öncelikle cevabınız için teşekkürler.

makroyu çalıştırdığımda;
aa
aa
bb
cc
dd

oluyor.

Not: döngü yoluyla olmaz mıydı acaba ? Sadece merak ettiğim için soruyorum.

İyi çalışmalar.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
Galiba ilk hücreyi başlık olarak gördüğünden yapıyor. Bilmiyorum doğru mu düşünüyorum.
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
merhaba

listenin ilk satırının başlık olduğunu düşünerek yazmıştım. örnek

İsimler
ali
ali
ali
veli
veli
veli
.
.
.
.

gibi.

bu şekilde denerseniz sorun çıkmaz.

ayrıca döngü ile
1. eğer verileriniz sıralı değil ise

Kod:
For i = 1 To Cells(65536, 1).End(xlUp).Row
    For j = i + 1 To Cells(65536, 1).End(xlUp).Row
        If Cells(i, 1) = Cells(j, 1) Then
            Range(j & ":" & j).EntireRow.Delete
        End If
    Next j
Next i
2. sıralı ise

Kod:
For i = 1 To Cells(65536, 1).End(xlUp).Row
    For j = i + 1 To Cells(65536, 1).End(xlUp).Row
        If Cells(i, 1) = Cells(j, 1) Then
            Range(j & ":" & j).EntireRow.Delete
        Else
            Exit For
        End If
    Next j
Next i
aslında 1. önerilen kod sıralı olsa da olmasa da çalışır. ama ikinci kod veriler sıralı ise ve çok veri varsa çok daha hızlıdır.

not : pek deneyemedim.
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
Teşekkürler gayet güzel olmuş.

İyi akşamlar....
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
denedim de, bir mantık hatası var son 2 kodda (silinen satırın yerine geçen alt satır gibi)

düzeltilmiş ve biraz daha hızlandırılmışı.

1. veriler sıralı değilse

Kod:
z = Cells(65536, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = 1 To z
    For j = z To i + 1 Step -1
        If Cells(i, 1) = Cells(j, 1) Then
            Range(j & ":" & j).EntireRow.Delete
        End If
    Next j
Next i
2. veriler sıralı ise

Kod:
z = Cells(65536, 1).End(xlUp).Row
Application.ScreenUpdating = False
For i = 1 To z
    For j = z To i + 1 Step -1
        If Cells(i, 1) = Cells(j, 1) Then
            Range(j & ":" & j).EntireRow.Delete
        Else
            Exit For
        End If
    Next j
Next i
 
Katılım
30 Kasım 2004
Mesajlar
180
Excel Vers. ve Dili
2003 ingilizce
ben macroyu denedim

birden fazla mükerrer kayıtta
saglıklı çalışmıyor.

düzeltebilirseniz benimde cok işime yarayacak
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
hangisini denediniz? neresi "sağlıksız" çalışıyor? hangisini düzelteyim?
 
Katılım
30 Kasım 2004
Mesajlar
180
Excel Vers. ve Dili
2003 ingilizce
pardon sonraki kodu denemedim ilkini denemiştim. bu macroya benimde ihtiyacım vardı teşekkürler
 
Katılım
30 Kasım 2004
Mesajlar
180
Excel Vers. ve Dili
2003 ingilizce
bir veriler sıralı değilseyi denedim... hem sıralı hemde sırasız bir dosyada aynı kayıt ikiden fazla olsa bile güzel çalışıyor çok teşekkürler...
 

hamitcan

Uzman
Uzman
Katılım
1 Temmuz 2004
Mesajlar
7,700
Excel Vers. ve Dili
Excel 2019 Türkçe
Sayın Alpen ikincisini(veri sıralı ise) çalıştıramadım. Ama birincisi ve advanced filter örneği tam istediğim gibi olmuş. Bir de büyük harf - küçük harf ayrımı yapıyor. Eğer kodu geliştirmek isterseniz diye yazıyorum. :D

İyi Çalışmalar...
 
Katılım
5 Eylül 2004
Mesajlar
571
Excel Vers. ve Dili
Excel 2003 SP1 Ingilizce
Merhaba :hey:

Mükerrer:defalarca yapılan, yinelenen...(1 olursa zaten mükerrer denmez)

Sayın Alpen'in 08.Aralık.2004 17:40 da yazdığı, veriler sıralı değilse kodunu denedim gayet güzel çalışıyor.

Edit:Ben bir mesaja başlayıp yazana kadar çok zaman geçiyor galiba.Zaman aşımına uğruyor. :hiho: Lütfen bu mesajımı tamamen siliniz.
Edit xxrt:Silemem yine zaman aşımına uğradı ALPEN cevabı vermiş. :hiho:
p.s. jale: full dolu, geri iade etmek, link hattı, nüans farkı, arka fon, sinsi tuzak, giriş introsu, atlı süvari ... nasıl?
 
Katılım
7 Temmuz 2004
Mesajlar
1,141
"Bir de büyük harf - küçük harf ayrımı yapıyor"
yapmasını istemiyorsanız.

Kod:
If Cells(i, 1) = Cells(j, 1) Then
satırını
Kod:
If lcase(Cells(i, 1)) = lcase(Cells(j, 1)) Then
veya

Kod:
If ucase(Cells(i, 1)) = ucase(Cells(j, 1)) Then
olarak değiştirin.

p.s. jale: full dolu, geri iade etmek, link hattı, nüans farkı, arka fon, sinsi tuzak, giriş introsu, atlı süvari ... nasıl?
 
Üst