Yinelenen hücreleri boyama (makro)

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
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
Arkadaşlar Merhaba;

bir süredir filtreleme yaptığımda çok aşırı yavaşlık sorunu yaşıyordum. Fark ettim ki bu soruna sebep olan şey "Koşullu biçimlendirme yinelenen değerleri renklendirme" seçeneğiymiş.

Şimdi bana lazım olan şey A2:A25000 aralığında mükerrer olarak girilen iki hücreyide kırmızıya boyaması . Sitede yapılan çalışmalara göz attım ancak malesef düzgün çalışanına rastlamadım. dosyamda tekrar olmamasına rağmen renklendiriyor sitedeki çalışmalar. Birde makronun A sütununa veri girdikçe işlemesi lazım. "Private Sub Worksheet_Change(ByVal Target As Range)" yapısıyla yani
 

Ekli dosyalar

Son düzenleme:

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Koşullu biçimlendirmeye =EĞERSAY($A$2:A1;A1)>1 formülünü yazın. Dolgu rengini kırmızı ya da istediğiniz renk yapın.
 

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
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

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
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
Koşullu biçimlendirmeye =EĞERSAY($A$2:A1;A1)>1 formülünü yazın. Dolgu rengini kırmızı ya da istediğiniz renk yapın.
Malesef dediğim gibi koşullu biçimlendirme filtrelemeyi çok agırlaştırıyor. Bana makrolu çözüm lazım.
 

Ziynettin

Destek Ekibi
Destek Ekibi
Katılım
18 Nisan 2008
Mesajlar
1,106
Excel Vers. ve Dili
office2010
Merhaba,

Bu kodu deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 And Target.Row > 1 And Target.Count = 1 Then
        [A:A].Interior.ColorIndex = xlNone
        Set d = CreateObject("Scripting.Dictionary")
        Set a = Range("A2", [A65000].End(xlUp))
        For Each v In a
            If v <> "" And Target.Value = v.Value Then
                d(v.Value) = d(v.Value) + 1
            End If
        Next v
        For Each v In a
            If d(v.Value) > 1 Then
                v.Interior.ColorIndex = 3
            End If
        Next v
    End If
End Sub
 

askm

Destek Ekibi
Destek Ekibi
Katılım
4 Haziran 2005
Mesajlar
2,745
Excel Vers. ve Dili
2010-2016
Tek buton ile komple işlem yapmak için;
Kod:
Sub askm()
Application.ScreenUpdating = False
Dim son As Long
son = Range("A" & Rows.Count).End(3).Row
Range("A2:A" & son).Interior.ColorIndex = xlNone

For i = 2 To son
    If WorksheetFunction.CountIf(Range("A2:A" & son), Range("A" & i)) > 1 Then
        Cells(i, 1).Interior.ColorIndex = 3
    End If
Next i
Application.ScreenUpdating = True
End Sub
 

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
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
Merhaba,

Bu kodu deneyiniz.

Kod:
Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Column = 1 And Target.Row > 1 And Target.Count = 1 Then
        [A:A].Interior.ColorIndex = xlNone
        Set d = CreateObject("Scripting.Dictionary")
        Set a = Range("A2", [A65000].End(xlUp))
        For Each v In a
            If v <> "" And Target.Value = v.Value Then
                d(v.Value) = d(v.Value) + 1
            End If
        Next v
        For Each v In a
            If d(v.Value) > 1 Then
                v.Interior.ColorIndex = 3
            End If
        Next v
    End If
End Sub
Üstadım teşşekür ederim sorunsuz çalıştı :)
 

leonadies

Excel Derya Deniz Bizde Kulaç Atmaya Çalışıyoruz:)
Altın Üye
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
Tek buton ile komple işlem yapmak için;
Kod:
Sub askm()
Application.ScreenUpdating = False
Dim son As Long
son = Range("A" & Rows.Count).End(3).Row
Range("A2:A" & son).Interior.ColorIndex = xlNone

For i = 2 To son
    If WorksheetFunction.CountIf(Range("A2:A" & son), Range("A" & i)) > 1 Then
        Cells(i, 1).Interior.ColorIndex = 3
    End If
Next i
Application.ScreenUpdating = True
End Sub
Malesef bu kodlar iş yapmıyor. Alakasız tekrar etmeyen verileri boyuyor hocam
 

baydeniro

Altın Üye
Katılım
26 Ocak 2007
Mesajlar
4,625
Excel Vers. ve Dili
Ofis 2016
Altın Üyelik Bitiş Tarihi
20-02-2025
Teşekkürler askm, eline sağlık
 
Katılım
27 Ocak 2010
Mesajlar
230
Excel Vers. ve Dili
Türkçe Microsoft Office Professional Plus 2019
Altın Üyelik Bitiş Tarihi
05-10-2020
Merhaba @Ziynettin Bey

Üstteki vermiş olduğunuz makroyu aşağıdaki şekilde bir sayfada nasıl çalıştırabilirim.

Data isimli makro ile oluşturduğum bir sayfam var ve bu sayfada E1:E200 arası sütunlarda bir ya da birden fazla tekrar eden verilerin arkaplanını renklendirmek istiyorum.

Kodunuz herhangi sabit bir excel sayfasına yazınca çalışıyor.

Ancak diğer işlemler sonucu macro ile oluşlan ve makro çalıştırıldığında silinip tekrar oluşturulan bir sayfaya bunu nasıl ekleyebiliriz
 
Üst