Einführung:

Fehler wie #N/A, #NAME? und #VALUE! sind häufige Probleme, auf die Excel-Benutzer stoßen, wenn sie mit großen Datensätzen oder komplexen Formeln arbeiten. Das manuelle Überprüfen jeder Zelle in mehreren Excel-Dateien auf Fehler, kann zeitaufwändig sein. In diesem Artikel erfahren Sie, wie Sie den Prozess automatisieren können, indem Sie ein Makro erstellen, das auf mehreren Excel-Dateien ausgeführt wird, diese Fehler identifiziert und einen umfassenden Fehlerbericht bereitstellt.

Warum brauchen wir das?

Ein Makro zum Suchen von Fehlern wie #N/A, #NAME? und #VALUE in Excel kann Ihnen helfen, Fehler in Ihren Daten schnell zu identifizieren und zu beheben. Diese Fehler können beim Importieren von Daten, bei der Verwendung von Formeln oder bei der Verarbeitung von Daten auftreten. Durch die Verwendung eines Makros können Sie den Prozess automatisieren und Zeit sparen, indem Sie potenzielle Fehler effizient aufspüren und korrigieren. Optimieren Sie Ihre Arbeitsblätter und stellen Sie sicher, dass Ihre Daten korrekt und fehlerfrei sind.

Voraussetzungen:

Um diesem Tutorial folgen zu können, benötigen Sie grundlegende Kenntnisse in Excel und VBA (Visual Basic for Applications). Stellen Sie sicher, dass auf Ihrem Computer eine aktuelle Version von Microsoft Excel installiert ist.

Schritt 1: Bereiten Sie die makrofähige Arbeitsmappe vor

Erstellen Sie eine neue Excel-Arbeitsmappe und speichern Sie sie als makrofähige Arbeitsmappe (.xlsm), um die Ausführung von VBA-Code zu ermöglichen.

Schritt 2: Greifen Sie auf den Visual Basic-Editor zu

Drücken Sie „Alt+F11“, um den Visual Basic Editor (VBE) zu öffnen.

Klicken Sie im VBE-Fenster im Menü auf „Einfügen“ und wählen Sie „Modul“, um ein neues Modul zu erstellen.

Schritt 3: Schreiben Sie den VBA-Code

Fügen Sie im Modul den folgenden VBA-Code ein:

Sub CheckErrorsInFiles()

    Dim wb As Workbook

    Dim ws As Worksheet

    Dim filePath As String, filename As String

   

    Dim err_inFormulas As String, err_inConstants As String

    Dim arr_inFormulas() As String, arr_inConstants() As String

    Dim iter_inFormulas As Long, iter_inConstants As Long

    Dim isNull_inFormulas As Boolean, isNull_inConstants As Boolean

   

    \' Set the folder path where the Excel files are located

    filePath = "C:\\Users\\Cristin\\Desktop\\New folder\\" \' Update with your desired folder path

    \' Loop through each file in the folder

    filename = Dir(filePath)

   

    While filename <> ""

        \' Open the file

        Set wb = Workbooks.Open(filePath & filename)

        \' Loop through each worksheet in the workbook

        For Each ws In wb.Worksheets

            \'instantiate variables

            err_inFormulas = ""

            err_inConstants = ""

            isNull_inFormulas = False

            isNull_inConstants = False

            \'capture all the error cells (both in Formulas and Constants)

            On Error Resume Next

            err_inFormulas = ws.Cells.SpecialCells(xlCellTypeFormulas, 16).Address

            err_inConstants = ws.Cells.SpecialCells(xlCellTypeConstants, 16).Address

            On Error GoTo 0

            \'checks if variable \'err_inFormulas\' is not empty

            \'if True, then store in array variable, otherwise, skip the process

            If Len(err_inFormulas) > 0 Then

                If InStr(err_inFormulas, ",") > 0 Then

                    arr_inFormulas = Split(err_inFormulas, ",")

                Else

                    arr_inFormulas(0) = err_inFormulas

                End If

            Else

                isNull_inFormulas = True

            End If

            \'checks if variable \'err_inConstants\' is not empty

            \'if True, then store in array variable, otherwise, skip the process

            If Len(err_inConstants) > 0 Then

                If InStr(err_inConstants, ",") > 0 Then

                    arr_inConstants = Split(err_inConstants, ",")

                Else

                    arr_inConstants(0) = err_inConstants

                End If

            Else

                isNull_inConstants = True

            End If

            \'checks if variable \'isNull_inFormulas\' is False (meaning its not empty)

            \'if True, then display the cell address, otherwise, skip the process

            If isNull_inFormulas = False Then

                For iter_inFormulas = LBound(arr_inFormulas) To UBound(arr_inFormulas)

                    Debug.Print "File: " & filename & " | Worksheet: " & ws.Name & " | Cell: " & arr_inFormulas(iter_inFormulas)

                Next iter_inFormulas

            End If

            \'checks if variable \'isNull_inConstants\' is False (meaning its not empty)

            \'if True, then display the cell address, otherwise, skip the process

            If isNull_inConstants = False Then

                For iter_inConstants = LBound(arr_inConstants) To UBound(arr_inConstants)

                    Debug.Print "File: " & filename & " | Worksheet: " & ws.Name & " | Cell: " & arr_inFormulas(iter_inConstants)

                Next iter_inConstants

            End If

        Next ws

        \' Close the workbook without saving changes

        wb.Close SaveChanges:=False

        \' Move to the next file

        filename = Dir()

    Wend

End Sub

Schritt 4: Passen Sie den Code an

Passen Sie die Variable filePath an den Ordnerpfad an, in dem sich Ihre Excel-Dateien befinden.

Passen Sie die Aktion an, die Sie ausführen möchten, wenn ein Fehler gefunden wird. Im bereitgestellten Beispiel zeigt der Code den Dateinamen, den Arbeitsblattnamen und die Zellenadresse im Direktfenster an. Sie können diesen Abschnitt ändern, um die Fehlerdetails in einem separaten Arbeitsblatt oder einer Protokolldatei zu speichern.

Schritt 5: Führen Sie das Makro aus

Drücken Sie „F5“ oder klicken Sie auf die Schaltfläche „Ausführen“ in der VBE-Symbolleiste, um das Makro auszuführen.

Das Makro durchläuft jede Excel-Datei im angegebenen Ordner und prüft auf #N/A, #NAME? und #VALUE! Fehler

Ausgabe im Direktfenster

Ausgabe im Direktfenster

Benötigen Sie einen VBA Programmierer?

Wir als exact construct programmieren mit einem Team von rd. 20 Mitarbeitern seit über 10 Jahren Excel-Tools. Wir sind ein Nischenanbieter der spezialisiert auf Makros/VBA-Codes ist. Daneben unterstützen wir auch als 3rd Level Support die IT-Abteilungen rund um Probleme bei MS Office (Excel, Word, PowerPoint, etc.).

Haben Sie ein Excel-Problem? Benötigen Sie einen Makro-Programmierer? Rufen Sie uns unverbindlich an +41 52 511 05 25 oder kontaktieren Sie uns via Kontaktformular.

Kommentar verfassen

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Nach oben scrollen