Makro ile Yinelenen Değerleri Vurgulama

Bu makalemizde, Excel VBA kodları ile (makrolar) yinelenen değerlerin nasıl vurgulanacağı anlatılır.

Büyük verilerle çalışırken, yinelenen değerler sıkıntı yaratabilir. Excel'in ön yüzünde, Yinelenenleri Kaldır seçeneği kullanılabilir.
Ama bazı durumlarda, Yinelenenleri Kaldır yapmadan önce incelemek gerekebilir. Yani, Yinelenenleri Kaldırırsanız, sıkıntı yaşayabilirsiniz.
Bu şekilde yaparsanız, kolayca kontrol eder ve gerekirse yine Yinelenenleri Kaldır seçeneği ile tek bir seferde kaldırabilirsiniz.

Aşağıdaki 4 ayrı kod ile yinelenen değerleri kolayca vurgulayabilirsiniz.

SATIRLARDA YİNELENEN DEĞERLERİ VURGULAMA

Aşağıdaki VBA kodu, bir satırdaki tüm hücreleri kontrol eder ve satırdaki aynı hücreleri vurgular..
Yani, bir satırda iki kez "24" değeri kullanılmışsa, yinelenen olarak kabul edilir ve işaretlenir.

[REPLYANDTHANKS]
Kod:
Sub SatırlardaYinelenenDeğerler()
Dim Hucre As Range
Dim Satir As Integer
Dim Alan As Range
Dim Sutun As Integer
Dim i As Integer

Satir = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count
Sutun = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count

For i = 2 To Satir
Set Alan = Range(Cells(i, 2), Cells(i, Sutun))
For Each Hucre In Alan
If WorksheetFunction.CountIf(Alan, Hucre.Value) > 1 Then
Hucre.Interior.ColorIndex = 3
End If
Next
Next
End Sub
[/REPLYANDTHANKS]

Makroda, yinelenen her satırı kontrol etmek için döngü kullanılmıştır.

Bu kodda dikkat edilecek önemli noktalar
  1. Veri aralığınızda boş bir satır veya sütun olmamalıdır, aksi takdirde bu hücreyi yok sayılır. Bu da hata demektir.
  2. Veri aralığınızda başlangıç hücresi "A1" olmalıdır. Eğer başka bir başlangıç noktası ayarlamak istiyorsanız, makroyu revize etmeniz gerekir.
  3. İlk satır ve sütunlarınızda başlık olmalıdır.
SÜTUNLARDAKİ YİNELENEN DEĞERLERİ VURGULAMA

Aşağıdaki VBA kodu, bir sütundaki tüm hücreleri kontrol eder ve sütundaki aynı hücreleri vurgular..
Yani, bir sütunda iki kez "24" değeri kullanılmışsa, yinelenen olarak kabul edilir ve işaretlenir.

[REPLYANDTHANKS]
Kod:
Sub SutunlardaYinelenenDeğerler()
Dim Hucre As Range
Dim Satir As Integer
Dim Alan As Range
Dim Sutun As Integer
Dim i As Integer

Satir = Range(Cells(1, 1), Cells(1, 1).End(xlDown)).Count
Sutun = Range(Cells(1, 1), Cells(1, 1).End(xlToRight)).Count

For i = 2 To Satir
Set Alan = Range(Cells(2, i), Cells(Satir, i))
For Each Hucre In Alan
If WorksheetFunction.CountIf(Alan, Hucre.Value) > 1 Then
Hucre.Interior.ColorIndex = 3
End If
Next
Next
End Sub
[/REPLYANDTHANKS]

SEÇİLİ ARALIKTAKİ YİNELENEN DEĞERLERİ VURGULAMA

Sadece seçtiğiniz bir aralıktaki yinelenen değerleri vurgulamak istiyorsanız, aşağıdaki kod işinizi görecektir.
Bir hücre aralığı seçmeniz kodu çalıştırmanız yeterli olacakır. Kod her bir hücreyi kontrol eder ve o hücrenin yinelenen değeri varsa, kırmızı renkle vurgular.

[REPLYANDTHANKS]
Kod:
Sub SeçiliAralıktakiYinelenenDeğerler()
Dim Alan As Range
Dim i As Integer
Dim j As Integer
Dim Hucre As Range

Set Alan = Selection
For Each Hucre In Alan
If WorksheetFunction.CountIf(Alan, Hucre.Value) > 1 Then
Hucre.Interior.ColorIndex = 3
End If
Next
End Sub
[/REPLYANDTHANKS]

TÜM VERİLERİ VURGULAMA

Büyük verilerinizde, tüm alanı kontrol etmek ve yinelenen değerleri vurgulamak için aşağıdaki makro kodunu kullanabilirsiniz.
Kod her hücreyi tek tek kontrol eder ve yinelenen tüm hücrelere kırmızı renk uygular.

[REPLYANDTHANKS]
Kod:
Sub TümVerilerdeYinelenenDeğerler()
Dim Alan As Range
Dim i As Integer
Dim j As Integer
Dim Hucre As Range
Set Alan = Range("Tablo1")

For Each Hucre In Alan
If WorksheetFunction.CountIf(Alan, Hucre.Value) > 1 Then
Hucre.Interior.ColorIndex = 3
End If
Next
End Sub
[/REPLYANDTHANKS]

Önemli Not:

Yukarıdaki kodda, "Tablo1" adı kullanılmıştır. Kendi çalışmalarınızda kullanmak için bu kısmı revize etmeniz gerekir. Eğer bir aralık ya da sayfa adı şeklinde kullanabilirsiniz.

BONUS İPUCU: YİNELENEN DEĞERLERİ SAYMA

Aşağıdaki kod, seçtiğiniz alandaki yinelenen değerlerin kaç tane olduğunu saymanıza yardımcı olur. Kodu çalıştırdığınızda, sayıyı gösteren bir mesaj kutusu çıkacaktır.

[REPLYANDTHANKS]
Kod:
Sub YinelenenDeğerleriSayma()
Dim i As Integer
Dim j As Integer
Dim Hucre As Range
Dim Alan As Integer
Alan = Range("Tablo1").Count
j = 0
For Each Hucre In Range("Table1")
If WorksheetFunction.CountIf(Range("Tablo1"), Hucre.Value) > 1 Then
j = j + 1
End If
Next
MsgBox j
End Sub
[/REPLYANDTHANKS]

Tablo1 şeklinde olan kısmı kendinize göre revize etmeyi unutmayın.
Örnek dosyamızı, buradan indirebilirsiniz.
 
Geri
Üst