/ / Bereiche in Excel VBA vergleichen

Bereiche in Excel VBA vergleichen

Unten sehen wir uns ein Programm in Excel VBA Das vergleicht zufällig ausgewählt Bereiche und hebt Zellen hervor, die eindeutig sind. Wenn Sie mit Gebieten noch nicht vertraut sind, empfehlen wir Ihnen, dieses Beispiel zuerst zu lesen.

Situation:

Bereiche in Excel VBA vergleichen

Hinweis: Der einzige eindeutige Wert in diesem Beispiel ist die 3, da alle anderen Werte in mindestens einem weiteren Bereich auftreten. Um den Bereich auszuwählen ("B2: B7, D3: E6, D8: E9"), halten Sie die Strg-Taste gedrückt und wählen Sie jeden Bereich aus.

Fügen Sie eine Befehlsschaltfläche in Ihrem Arbeitsblatt ein, und fügen Sie die folgenden Codezeilen hinzu:

1. Zuerst deklarieren wir vier Range-Objekte und zwei Variablen vom Typ Integer.

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

2. Wir initialisieren das Range-Objekt rangeToUse mit dem ausgewählten Bereich.

Set rangeToUse = Selection

3. Fügen Sie die Zeile hinzu, die die Hintergrundfarbe aller Zellen auf "No Fill" ändert. Fügen Sie auch die Zeile hinzu, die die Grenzen aller Zellen entfernt.

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

4. Informieren Sie den Benutzer, wenn er nur einen Bereich auswählt.

If Selection.Areas.Count <= 1 Then
      MsgBox "Please select more than one area."
Else


End If

Die nächsten Codezeilen (bei 5, 6 und 7) müssen zwischen Else und End If hinzugefügt werden.

5. Färben Sie die Zellen der ausgewählten Bereiche.

rangeToUse.Interior.ColorIndex = 38

6. Grenzen Sie jeden Bereich ein.

For Each singleArea In rangeToUse.Areas
    singleArea.BorderAround ColorIndex:=1, Weight:=xlThin
Next singleArea

7. Der Rest dieses Programms sieht folgendermaßen aus.

For i = 1 To rangeToUse.Areas.Count
    For j = i + 1 To rangeToUse.Areas.Count
        For Each cell1 In rangeToUse.Areas(i)
            For Each cell2 In rangeToUse.Areas(j)
                If cell1.Value = cell2.Value Then
                    cell1.Interior.ColorIndex = 0
                    cell2.Interior.ColorIndex = 0
                End If
            Next cell2
        Next cell1
    Next j
Next i

Erläuterung: das mag etwas überwältigend aussehen, aber es ist nicht so schwierig. rangeToUse.Areas.Count ist gleich 3, also reduzieren sich die ersten beiden Codezeilen auf Für i = 1 bis 3 und Für j = i + 1 bis 3. Für i = 1, j = 2, vergleicht Excel VBA alle Werte des ersten Bereichs mit allen Werten des zweiten Bereichs.Für i = 1, j = 3 vergleicht Excel VBA alle Werte des ersten Bereichs mit allen Werten des dritten Bereichs i = 2, j = 3, Excel VBA vergleicht alle Werte des zweiten Bereichs mit allen Werten des dritten Bereichs Wenn die Werte gleich sind, wird die Hintergrundfarbe beider Zellen auf "No Fill" gesetzt, da sie nicht eindeutig sind .

Ergebnis, wenn Sie auf die Befehlsschaltfläche auf dem Blatt klicken:

Bereiche vergleichen Ergebnis

Lesen Sie auch: