Gewusst wie: Vergleichen von Spalten mit VBA

March 30

Visual Basic für Applikationen (VBA) ist eine Programmiersprache für Microsoft Office-Programmen wie PowerPoint, Word und Excel. Es erlaubt Ihnen das Erstellen von benutzerdefinierten Tools, Buttons und Menüs, die Sie verwenden können, um Ihre Office-Anwendungen anpassen. Beispielsweise gibt es kein Tool in Excel, das können Sie Spalten vergleichen und die Unterschiede zu markieren. Allerdings können Sie mit einigen VBA-Code, ein nützliches Werkzeug für genau diesen Zweck erstellen.

Anweisungen

1 Klicken Sie auf die Registerkarte "Entwicklertools" in Excel, und klicken Sie dann auf "Visual Basic."

2 Klicken Sie auf "Einfügen". Klicken Sie auf "Module", um ein neues Modulfenster zu öffnen.

3 Kopieren Sie und fügen Sie den folgenden Code in das Fenster:

Sub CompareColumns()

Dim Column1 als Range

Dim Column2 As Range

'Prompt user for the first column range to compare...

'----------------------------------------------------

Set Column1 = Application.InputBox("Select First Column to Compare", Type:=8)

'Check that the range they have provided consists of only 1 column...

If Column1.Columns.Count > 1 Then

Do Until Column1.Columns.Count = 1

MsgBox "You can only select 1 column"

Set Column1 = Application.InputBox("Select First Column to Compare", Type:=8)

Loop

End If

'Prompt user for the second column range to compare...

'----------------------------------------------------

Set Column2 = Application.InputBox("Select Second Column to Compare", Type:=8)

'Check that the range they have provided consists of only 1 column...

If Column2.Columns.Count > 1 Then

Do Until Column2.Columns.Count = 1

MsgBox "You can only select 1 column"

Set Column2 = Application.InputBox("Select Second Column to Compare", Type:=8)

Loop

End If

'Check both column ranges are the same size...

'---------------------------------------------

Wenn Column2.Rows.Count <> Column1.Rows.Count dann

Do Until Column2.Rows.Count = Column1.Rows.Count

MsgBox "The second column must be the same size as the first"

Set Column2 = Application.InputBox("Select Second Column to Compare", Type:=8)

Loop

End If

'If entire columns have been selected (e.g. $AA), limit the range sizes to the

"UsedRange des aktiven Blatts. Dieses stoppt die routinemäßige Überprüfung das gesamte Blatt

"unnötig.

'-------------------------------------------------------------------------------

Wenn Column1.Rows.Count = 65536 dann

Set Column1 = Range(Column1.Cells(1), Column1.Cells(ActiveSheet.UsedRange.Rows.Count))

Set Column2 = Range(Column2.Cells(1), Column2.Cells(ActiveSheet.UsedRange.Rows.Count))

EndIf

'Perform the comparison and set cells that are the same to yellow

'----------------------------------------------------------------

Dim IntCell As Long

For intCell = 1 To Column1.Rows.Count

If Column1.Cells(intCell) = Column2.Cells(intCell) Then

Column1.Cells(intCell).Interior.Color = vbYellow

Column2.Cells(intCell).Interior.Color = vbYellow

End If

Next

EndSub

4 Drücken Sie "F5", um führen Sie die Routine und die Spalten zu vergleichen.

Tipps & Warnungen

  • Der Code wird wie geschrieben, die Unterschiede in den Spalten in Gelb geändert. Sie können eine andere Farbe auswählen, indem das Gelb in der zweifarbigen Auswahlpositionen eine andere Farbe ersetzt. Beispielsweise wenn Sie den Code in rot hervorheben möchten, ändern Sie "Column1.Cells(intCell). Interior.Color = VbYellow "und"Column2.Cells(intCell). Interior.Color = VbYellow "
  • An
  • "Column1.Cells(intCell). Interior.Color = VbRed "und"Column2.Cells(intCell). Interior.Color = VbRed. "