Vergleichen von Formeln in zwei Arbeitsblättern (Microsoft Excel)
Rick hat zwei Arbeitsblätter, die er miteinander vergleichen muss, um Unterschiede hervorzuheben. Der Vergleich muss nicht vergleichen, was angezeigt wird, sondern die Formeln in jeder der Zellen. Auf diese Weise hofft Rick herauszufinden, wo sich die Formeln auf jedem Arbeitsblatt unterscheiden.
Es gibt verschiedene Möglichkeiten, Formeln zu vergleichen. In bestimmten Versionen von Excel haben Sie Zugriff auf ein Vergleichs-Add-In, das die Aufgabe für Sie erledigen kann. Wenn Sie Office Professional Plus 2013 oder Office 365 ProPlus verwenden, können Sie das Add-In Spreadsheet Compare verwenden.
Informationen zu diesem Add-In finden Sie hier:
https://support.office.com/en-us/article/Overview-of-Spreadsheet-Compare-13fafa61-62aa-451b-8674-242ce5f2c986
Wenn Sie Office Professional Plus 2013 oder Office 365 verwenden, können Sie auch das Add-In Spreadsheet Inquire verwenden. Informationen zu diesem Add-In finden Sie hier:
https://support.office.com/en-nz/article/What-you-can-do-with-Spreadsheet-Inquire-ebaf3d62-2af5-4cb1-af7d-e958cc5fad42
Da Sie erkennen, dass nicht jeder eine dieser Excel-Versionen verwendet oder möglicherweise kein Add-In verwenden möchte, können Sie andere Maßnahmen ergreifen. In Excel 2013 und späteren Versionen gibt es eine praktische Arbeitsblattfunktion namens FORMULATEXT. Mit dieser Funktion können Sie die in einer Zelle gespeicherte Formel folgendermaßen abrufen:
=FORMULATEXT(A7)
Dies gibt die in Zelle A7 enthaltene Formel zurück (in diesem Fall). Wenn die Zelle keine Formel enthält, wird ein # N / A-Fehler zurückgegeben. Mit diesem Verhalten können Sie in einem „Vergleichsarbeitsblatt“ einen Indikator dafür erstellen, ob die Formeln gleich sind oder nicht. Erstellen Sie einfach das neue Arbeitsblatt und platzieren Sie es in Zelle A1:
=IF(FORMULATEXT(Sheet1!A1)=FORMULATEXT(Sheet2!A1),"","Different")
Kopieren Sie die Formel so weit nach unten und so weit wie gewünscht nach rechts. Es markiert Unterschiede zwischen den entsprechenden Zellen in Blatt1 und Blatt2.
Denken Sie daran, dass FORMULATEXT in Excel 2013 eingeführt wurde, sodass dieser Ansatz in älteren Excel-Versionen nicht funktioniert. Wenn Sie eine andere Version verwenden (oder sogar Excel 2013 verwenden), können Sie ein Makro verwenden, um die Unterschiede zwischen Arbeitsblättern zu markieren. Es gibt viele Makroansätze, die Sie verwenden können. Das Folgende ist eine kurze Möglichkeit, den Vergleich durchzuführen.
Sub ComparaFormulas1() Dim Check As Worksheet Dim Master As Worksheet Dim c As Range Set Check = ActiveSheet Set Master = Worksheets("Master") For Each c In Check.UsedRange If c.HasFormula Then If c.Formula <> Master.Range(c.Address).Formula Then c.Interior.Color = RGB(255, 0, 0) End If End If Next c End Sub
Um dieses Makro zu verwenden, zeigen Sie die Arbeitsmappe an, die Sie vergleichen möchten. Es wird davon ausgegangen, dass Sie mit denselben Zellen in einem Arbeitsblatt namens „Master“ vergleichen möchten.
(Sie können dies natürlich im Makro ändern, wenn Ihr „Standard“ -Arbeitsblatt einen anderen Namen hat.) Jede Zelle im aktuellen Arbeitsblatt wird mit der entsprechenden Zelle im „Master“ -Arbeitsblatt verglichen. Wenn die Zellen Formeln enthalten und diese Formeln unterschiedlich sind, wird die Hintergrundfarbe der Zelle im aktuellen Arbeitsblatt in Rot geändert.
Ein solcher Ansatz ändert offensichtlich die Formatierung des zu vergleichenden Arbeitsblatts. Wenn Sie die Formatierung nicht ändern möchten, sondern einfach eine Liste von Zellen mit Unterschieden wünschen, können Sie die folgende Variante des Makros verwenden:
Sub ComparaFormulas2() Dim Check As Worksheet Dim Master As Worksheet Dim c As Range Dim sTemp As String Dim lDif As Long Set Check = ActiveSheet Set Master = Worksheets("Master") sTemp = "" lDif = 0 For Each c In Check.UsedRange If c.HasFormula Then If c.Formula <> Master.Range(c.Address).Formula Then lDif = lDif + 1 sTemp = sTemp & vbCrLf & lDif & ": " & c.Address End If End If Next c If lDif > 0 Then sTemp = "These were the differences" & vbCrLf & sTemp Else sTemp = "There were no differences" End If MsgBox sTemp End Sub
Sie können auch eine benutzerdefinierte Funktion (UDF) erstellen, die Bereiche für die Vergleiche akzeptiert. Auf diese Weise können Sie es auf verschiedene Arten verwenden.
Function CompareFormulas3(rng1 As Range, rng2 As Range) Dim x As Long If rng1.Count <> rng2.Count Then 'Range sizes do not match CompareFormulas = CVErr(xlValue) Else CompareFormulas = True ' Assume all the same For x = 1 To rng1.Count If rng1(x).Formula <> rng2(x).Formula Then 'Formulas do not match CompareFormulas = False x = rng1.Count ' No need to keep comparing End If Next x End If End Function
Wenn Sie nur bestätigen möchten, dass ein Zellbereich in beiden Arbeitsblättern identische Formeln hat, können Sie einfach Folgendes verwenden:
=CompareFormulas3(Sheet1!A1:Z1000,Sheet2!A1:Z1000)
Die Funktion gibt TRUE zurück, wenn alle Zellen identische Formeln haben, FALSE, wenn eine der Zellen unterschiedliche Formeln hat, oder #Value error, wenn die beiden Bereiche nicht dieselbe Größe haben.
Wenn Sie Unterschiede hervorheben möchten, können Sie die UDF innerhalb einer bedingten Formatierungsregel verwenden. Angenommen, Sie möchten das bedingte Format auf die Zellen in Sheet1 anwenden, geben Sie einfach an, dass die Regel eine Formel verwenden soll, und verwenden Sie diese dann als Formel:
=NOT(CompareFormulas3(Sheet2!A1,A1))
Wenn eine der Zellen in Sheet1 nicht mit den entsprechenden Zellen in Sheet2 übereinstimmt, werden sie gemäß der in der bedingten Formatierungsregel definierten Formatierung formatiert.
_Hinweis: _
Wenn Sie wissen möchten, wie die auf dieser Seite (oder auf einer anderen Seite der ExcelTips-Websites) beschriebenen Makros verwendet werden, habe ich eine spezielle Seite vorbereitet, die hilfreiche Informationen enthält.
ExcelTips ist Ihre Quelle für kostengünstige Microsoft Excel-Schulungen.
Dieser Tipp (13400) gilt für Microsoft Excel 2007, 2010, 2013, 2016, 2019 und Excel in Office 365.