Aralıkları Excel VBA'da Karşılaştırın - Kolay Excel Makroları

İçindekiler

Aşağıda bir programa bakacağız Excel VBA'sı o karşılaştırır Rastgele seçilmiş aralıklar ve benzersiz olan hücreleri vurgular. Henüz alanlara aşina değilseniz, öncelikle bu örneği okumanızı şiddetle tavsiye ederiz.

Durum:

Not: Bu örnekteki tek benzersiz değer 3'tür, çünkü diğer tüm değerler en az bir alanda daha oluşur. Aralık ("B2:B7,D3:E6,D8:E9") seçmek için Ctrl tuşunu basılı tutun ve her alanı seçin.

Çalışma sayfanıza bir komut düğmesi yerleştirin ve aşağıdaki kod satırlarını ekleyin:

1. İlk olarak, dört Range nesnesi ve Integer türünde iki değişken tanımlıyoruz.

Dim rangeToUse As Range, singleArea As Range, cell1 As Range, cell2 As Range, i As Integer, j As Integer

2. RangeToUse nesnesini seçilen aralıkla başlatıyoruz.

RangeToUse'u ayarla = Seçim

3. Tüm hücrelerin arka plan rengini 'Dolgu Yok' olarak değiştiren satırı ekleyin. Ayrıca tüm hücrelerin sınırlarını kaldıran satırı ekleyin.

Cells.Interior.ColorIndex = 0
Cells.Borders.LineStyle = xlNone

4. Yalnızca bir alan seçtiğinde kullanıcıyı bilgilendirin.

Selection.Areas.Count <= 1 ise
MsgBox "Lütfen birden fazla alan seçin."
Başka
Bitir

Sonraki kod satırları (5, 6 ve 7'de) Else ve End If arasına eklenmelidir.

5. Seçili alanların hücrelerini renklendirin.

rangeToUse.Interior.ColorIndex = 38

6. Her alanı sınırlayın.

RangeToUse.Areas'taki Her SingleArea için
singleArea.BorderAround ColorIndex:=1, Weight:=xlThin
Sonraki singleArea

7. Bu programın geri kalanı aşağıdaki gibidir.

i = 1 için rangeToUse.Areas.Count
j = i + 1 için rangeToUse.Areas.Count
rangeToUse.Areas(i) içindeki her hücre1 için
rangeToUse.Areas(j) içindeki her hücre2 için
Eğer cell1.Value = cell2.Value ise
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Bitir
Sonraki hücre2
Sonraki hücre1
sonraki j
sonraki ben

Açıklama: Bu biraz bunaltıcı görünebilir, ancak o kadar da zor değil. rangeToUse.Areas.Count 3'e eşittir, bu nedenle ilk iki kod satırı For i = 1 ila 3 ve For j = i + 1 ila 3'e düşer. i = 1, j = 2 için Excel VBA ilk alanın tüm değerlerini karşılaştırır. ikinci alanın tüm değerleri ile. i = 1, j = 3 için Excel VBA, birinci alanın tüm değerlerini üçüncü alanın tüm değerleriyle karşılaştırır. i = 2, j = 3 için Excel VBA, ikinci alanın tüm değerlerini üçüncü alanın tüm değerleriyle karşılaştırır. Değerler aynıysa, benzersiz olmadıkları için her iki hücrenin arka plan rengini 'Dolgu Yok' olarak ayarlar.

Sayfadaki komut düğmesine tıkladığınızda sonuç:

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave