Wenn Sie mit Datenarrays in Excel arbeiten, müssen Sie oft zwei Arrays vergleichen und Unterschiede zwischen ihnen finden. Dies kann beispielsweise nützlich sein, wenn Sie eine Datenbank aktualisieren oder Informationen abgleichen.
Microsoft Excel verfügt über ein spezielles Tool, mit dem Sie Werte in zwei Arrays vergleichen und Unterschiede finden können. Dazu wird die Programmiersprache VBA (Visual Basic for Applications) verwendet.
Mit VBA können Sie Code schreiben, der jedes Element eines Arrays durchläuft und es mit jedem Element eines anderen Arrays vergleicht. Wenn die Werte nicht übereinstimmen, werden diese Elemente als Unterschiede betrachtet.
Sub CompareArrays()
Dim array1() As Variant, array2() As Variant
Dim i As Long, j As Long, k As Long
array1 = Sheet1.Range("A1:A10").Value
array2 = Blatt2.Bereich ("B1:B10").Wert
k = 1
Für i = lgebunden (array1, 1) bis gebunden (array1, 1)
Für j = lgebunden (array2, 1) bis gebunden (array2, 1)
Wenn array1(i, 1) <> array2(j, 1) Dann
Blatt3.Zellen(k, 1).Wert = array1(i, 1)
Blatt3.Zellen(k, 2).Wert = array2(j, 1)
k = k + 1
Beenden, wenn
Nächster j
Nächstes i
Ende Sub
In diesem Codebeispiel werden die Arrays array1 und array2 verwendet, die mit Werten aus den Bereichen A1:A10 bzw. B1:B10 gefüllt werden. Der Code durchläuft dann jedes Element von array1 und vergleicht es mit jedem Element von array2. Wenn die Werte nicht übereinstimmen, werden sie in den dritten Bereich der Spalten A und B in Sheet3 geschrieben.
Auf diese Weise können Sie mit VBA zwei Arrays vergleichen und die Unterschiede zwischen ihnen finden. Es ist ein sehr nützliches Werkzeug für die Arbeit mit Daten in Excel, das den Abgleich von Informationen erheblich vereinfacht und automatisiert.
Wie vergleicht man zwei Arrays in VBA Excel und findet Unterschiede
Zuerst müssen Sie bestimmen, welche Unterschiede wir finden möchten. Zum Beispiel können wir Arrays nacheinander vergleichen und Unterschiede in den Werten der Array-Elemente erkennen. Der einfachste Weg, zwei Arrays in Excel VBA zu vergleichen, besteht darin, eine Schleife und Vergleichsoperatoren wie "If" zu verwenden. Then".
Angenommen, wir haben zwei eindimensionale Arrays arr1 und arr2, und wir möchten die Unterschiede zwischen ihnen finden. Hier ist ein Beispielcode:
Sub CompareArrays()
Dim arr1() As Variant
Dim arr2() As Variant
Dim i As Integer
Dim diffArr() As Variant
' Weisen Sie den Arrays arr1 und arr2 Werte zu
' .
' Erstellen Sie ein neues leeres Array, um Unterschiede zu speichern
ReDim diffArr(1 To UBound(arr1))
' Vergleichen Sie die Elemente von Arrays und schreiben Sie die Unterschiede in ein neues Array
For i = LBound(arr1) To UBound(arr1)
If arr1(i) <> arr2(i) Then
diffArr(i) = arr1(i)
End If
Next i
' Wir zeigen die gefundenen Unterschiede an
' .
End Sub
In diesem Beispiel erstellen wir ein neues diffArr-Array, um die Unterschiede zwischen arr1 und arr2 zu speichern. Dann vergleichen wir jedes Element aus beiden Arrays mit einer For-Schleife und einer If-Bedingung. Wenn die Elemente nicht übereinstimmen, schreiben wir den Wert arr1(i) in die entsprechende Zelle des diffArr-Arrays.
Nach Abschluss des Zyklus können wir die gefundenen Unterschiede ableiten oder sie in weiteren Operationen verwenden.
Es gibt andere Möglichkeiten, Arrays in VBA Excel zu vergleichen und Unterschiede mithilfe verschiedener Funktionen und Ansätze zu finden. Sie können beispielsweise WorksheetFunction-Funktionen wie "CountIf" oder "Match" verwenden, um einen Vergleichsvorgang auszuführen. Sie können auch die Funktion "Filter()" verwenden, um nur eindeutige Werte aus einem Array abzurufen, die in einem anderen Array nicht vorhanden sind.
Abhängig von der Aufgabe und den Anforderungen können Sie die am besten geeignete Methode zum Vergleichen von Arrays und zum Auffinden von Unterschieden in VBA Excel auswählen. Es ist wichtig, die Besonderheiten Ihres speziellen Falles zu berücksichtigen und den entsprechenden Algorithmus auszuwählen, um die gewünschten Ergebnisse zu erzielen.
Verwenden von Schleifen zum Vergleichen von Array-Elementen
Wenn Sie mit Arrays in VBA Excel arbeiten, müssen Sie zwei Arrays vergleichen und die Unterschiede zwischen ihnen finden. Sie können Schleifen für diese Aufgabe verwenden.
Eine der gebräuchlichsten Möglichkeiten, Arrays zu vergleichen, besteht darin, Elemente mit Übereinstimmungen zu vergleichen. Dazu können Sie verschachtelte Schleifen verwenden, um alle Elemente beider Arrays nacheinander zu durchlaufen.
Hier ist ein Beispiel für einfachen Code, der die Verwendung von Schleifen veranschaulicht, um Elemente zweier Arrays zu vergleichen:
Sub CompareArrays()Dim array1() As VariantDim array2() As VariantDim i As LongDim j As LongDim foundMatch As Boolean' Заполните первый и второй массивы данными' Пройдемся по элементам первого массиваFor i = LBound(array1) To UBound(array1)foundMatch = False' Пройдемся по элементам второго массиваFor j = LBound(array2) To UBound(array2)' Если элементы совпадают, установим foundMatch в TrueIf array1(i) = array2(j) ThenfoundMatch = TrueExit ForEnd IfNext j' Если не найдено совпадений, выведите элемент на экранIf Not foundMatch ThenDebug.Print array1(i)End IfNext iEnd Sub
In diesem Beispiel wird die foundMatch-Variable verwendet, die auf True festgelegt wird, wenn eine Übereinstimmung der Elemente gefunden wird. Wenn keine Übereinstimmung gefunden wird, wird das Element mit der Debug-Funktion angezeigt.Print .
Auf diese Weise können Schleifen jedes Element eines Arrays konsequent mit jedem Element eines anderen Arrays vergleichen und Unterschiede zwischen ihnen finden.
Verwenden der Match-Funktion, um nach übereinstimmenden Elementen zu suchen
In Excel VBA können Sie die Match-Funktion verwenden, um nach übereinstimmenden Elementen in zwei Arrays zu suchen. Die Match-Funktion gibt den Index des ersten übereinstimmenden Elements im angegebenen Bereich zurück.
Um die Match-Funktion zu verwenden, müssen Sie den gewünschten Wert und den Bereich angeben, in dem die Suche durchgeführt werden soll. Um beispielsweise übereinstimmende Elemente in den Arrays arr1 und arr2 zu finden, können Sie den folgenden Code verwenden:
Dim i As LongFor i = LBound(arr1) To UBound(arr1)If Not IsError(Application.Match(arr1(i), arr2, 0)) Then' элемент найден' выполняйте необходимые действия здесьEnd IfNext i
In diesem Beispiel durchlaufen wir alle Elemente des Arrays arr1 und suchen mit der Match-Funktion nach jedem Element im Array arr2. Wenn ein Element gefunden wird, führen Sie die erforderlichen Schritte aus.
Es ist wichtig zu beachten, dass die Match-Funktion den Index des ersten übereinstimmenden Elements zurückgibt. Wenn also mehrere übereinstimmende Elemente in Arrays vorhanden sind, werden diese möglicherweise nicht innerhalb dieses Konstrukts verarbeitet. Wenn Sie alle übereinstimmenden Elemente verarbeiten müssen, können Sie mit einer Schleife alle gefundenen Indizes durchlaufen.
Mit der Match-Funktion können Sie problemlos übereinstimmende Elemente in zwei Arrays finden und die gewünschten Aktionen für diese Elemente ausführen. Dies kann beispielsweise nützlich sein, um Unterschiede zwischen zwei Listen zu finden oder Operationen an gemeinsamen Elementen durchzuführen.
Verwenden einer Kombination von Index- und IsError-Funktionen, um nach unterschiedlichen Elementen zu suchen
Mit der Index-Funktion können Sie einen Wert aus einer bestimmten Zelle eines Arrays abrufen. Es nimmt zwei Argumente an: ein Array und die Nummer der Zeile oder Spalte, aus der der Wert abgerufen werden soll. Wenn die angegebene Zeilen- oder Spaltennummer außerhalb des Bereichs des Arrays liegt, gibt die Funktion den Fehler #N/A zurück.
Mit der Funktion IsError können Sie überprüfen, ob ein Wert ein Fehler ist. Es nimmt ein Argument an - den zu überprüfenden Wert. Wenn der Wert ein Fehler ist, gibt die Funktion TRUE zurück; wenn der Wert kein Fehler ist, gibt die Funktion FALSE zurück.
Sie können den folgenden Algorithmus verwenden, um eine Kombination aus Index- und IsError-Funktionen zu verwenden, um nach unterschiedlichen Elementen zu suchen:
- Erstellen Sie zwei Arrays, die Sie vergleichen möchten.
- Durchlaufen Sie jedes Element des ersten Arrays und überprüfen Sie, ob es im zweiten Array vorhanden ist, indem Sie die Index- und IsError-Funktion verwenden.
- Wenn die Index-Funktion einen Fehler für das aktuelle Element des ersten Arrays zurückgibt, ist das Element im zweiten Array nicht vorhanden und kann in die Liste der abweichenden Elemente aufgenommen werden.
- Wiederholen Sie den Vorgang für jedes Element im zweiten Array und prüfen Sie, ob es im ersten Array vorhanden ist.
Am Ende werden alle Elemente gefunden, die nur in einem der Arrays vorhanden sind.