Vergleiche Bereiche in Excel VBA - Einfache Excel-Makros

Inhaltsverzeichnis

Im Folgenden sehen wir uns ein Programm in an Excel VBA das vergleicht zufällig ausgewählt Bereiche und hebt Zellen hervor, die eindeutig sind. Wenn Sie sich mit Bereichen noch nicht auskennen, empfehlen wir Ihnen dringend, zuerst dieses Beispiel zu lesen.

Lage:

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

Platzieren Sie eine Befehlsschaltfläche in Ihrem Arbeitsblatt 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 = Auswahl

3. Fügen Sie die Zeile hinzu, die die Hintergrundfarbe aller Zellen in „Keine Füllung“ ändert. Fügen Sie auch die Linie hinzu, die die Ränder aller Zellen entfernt.

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

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

Wenn Selection.Areas.Count <= 1 Then
MsgBox "Bitte mehr als einen Bereich auswählen."
Anders
Ende Wenn

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

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

rangeToUse.Interior.ColorIndex = 38

6. Grenzen Sie jeden Bereich ein.

Für jede einzelneArea In rangeToUse.Areas
singleArea.BorderAround ColorIndex:=1, Gewicht:=xlThin
Nächste SingleArea

7. Der Rest dieses Programms sieht wie folgt aus.

Für i = 1 Zu rangeToUse.Areas.Count
Für j = i + 1 Zu rangeToUse.Areas.Count
Für jede Zelle1 In rangeToUse.Areas(i)
Für jede Zelle2 in rangeToUse.Areas(j)
Wenn Zelle1.Wert = Zelle2.Wert Dann
cell1.Interior.ColorIndex = 0
cell2.Interior.ColorIndex = 0
Ende Wenn
Nächste Zelle2
Nächste Zelle1
Nächstes j
Als nächstes

Erklärung: Das sieht vielleicht etwas überwältigend aus, ist aber nicht so schwierig. rangeToUse.Areas.Count ist gleich 3, also reduzieren sich die ersten beiden Codezeilen auf For i = 1 bis 3 und For 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. Für i = 2, j = 3 vergleicht Excel VBA alle Werte des zweiten Bereichs mit allen Werten des dritten Bereichs. Bei gleichen Werten wird die Hintergrundfarbe beider Zellen auf "Keine Füllung" gesetzt, da sie nicht eindeutig sind.

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

Sie werden die Entwicklung der Website helfen, die Seite mit Ihren Freunden teilen

wave wave wave wave wave