Live-Forum - Die aktuellen Beiträge
Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

VBA Ersetzen gemäß Mapping Tabelle

Forumthread: VBA Ersetzen gemäß Mapping Tabelle

VBA Ersetzen gemäß Mapping Tabelle
18.12.2019 14:25:33
Addi
Hallo Zusammen,
ich habe eine Tabelle in der z.B. in der Spalte E diverse Zahlen (Kontierungen) hinterlegt sind.
Aufgrund der Umstellung auf eine neue Software müssen diese Kontierungen in einer Parallelphase immer wieder in diversen Reports angepasst werden.
Hierzu möchte ich gerne ein VBA Script laufen lassen, welches den aktuellen Wert in dieser Spalte E mit dem Wert aus einer Mappingtabelle welche in einem zweiten Reiter desselben Excelsheets hinterlegt ist ersetzt.
Zum Beispiel steht in der Zelle E2 der Wert 4550 - in der Mappingtabelle im gleichlautenden Reiter steht in A2 der Wert der ersetzt werden soll, in dem Fall 4550 und in B2 der neue Wert, der hinterlegt werden soll z.B. 3123456.
Die Mappingtabelle geht von A1 bis B20 -- sprich neben den Überschriften sind insgesamt 19 Mappingeinträge enthalten.
Könnt Ihr mir hierbei helfen?
Leider kann ich kein Beispiel hochladen, upload ist hier gesperrt...
Vielen Dank und Gruß
Addi
Anzeige

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: VBA Ersetzen gemäß Mapping Tabelle
18.12.2019 14:51:33
Daniel
Hi
kopiere die Spalte E ans Tabellenende und füge in sie Spalte E die SVerweis-Formel ein, um die neuen Kontonummern einzutragen.
dh Spalte E nach bspw Spalte Z kopieren und dann in E2 und nach unten:
=SVerweis(Z2;MappingTabelle!$A:$B;2;0)
dann noch die Spalte E auf #NV-Fehler kontrollieren und ggf die Mappingtabelle um fehlende Einträge ergänzen.
Gruß Daniel
Anzeige
AW: VBA Ersetzen gemäß Mapping Tabelle
18.12.2019 14:55:55
Nepumuk
Hallo Addi,
teste mal:
Public Sub Ersetzen()
    Dim avntValues As Variant
    Dim ialngIndex As Long
    With Worksheets("Mapping") 'Anpassen !!!
        avntValues = .Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp)).Value
    End With
    With Worksheets("Tabelle1").Columns(5) 'Anpassen !!!
        For ialngIndex = LBound(avntValues) To UBound(avntValues)
            Call .Replace(What:=avntValues(ialngIndex, 1), _
                Replacement:=avntValues(ialngIndex, 2), LookAt:=xlWhole)
        Next
    End With
End Sub

Gruß
Nepumuk
Anzeige
AW: VBA Ersetzen gemäß Mapping Tabelle
18.12.2019 16:22:57
Addi
Danke Daniel und Nepumuk!
Beide Varianten sind zielführend...bevorzugend werde ich die von Nepumuk anwenden.
Funktioniert einwandfrei!!
Viele Grüße
Addi
Und wieso noch offen ?
18.12.2019 17:09:06
onur
Und wieso noch offen ?
;
Anzeige
Anzeige

Infobox / Tutorial

VBA Ersetzen gemäß Mapping Tabelle


Schritt-für-Schritt-Anleitung

Um Werte in Excel gemäß einer Mappingtabelle zu ersetzen, kannst du ein einfaches VBA-Skript verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne dein Excel-Dokument.

  2. Erstelle eine Mappingtabelle: In einem neuen Blatt (z.B. "Mapping") erstelle eine Tabelle mit zwei Spalten. In der ersten Spalte (A) stehen die alten Werte, die ersetzt werden sollen, und in der zweiten Spalte (B) die neuen Werte.

  3. Öffne den VBA-Editor: Drücke ALT + F11, um den VBA-Editor zu öffnen.

  4. Füge ein neues Modul hinzu: Rechtsklick auf "VBAProject (DeinDokumentName)" > Einfügen > Modul.

  5. Füge den folgenden VBA-Code ein:

    Public Sub Ersetzen()
       Dim avntValues As Variant
       Dim ialngIndex As Long
       With Worksheets("Mapping") ' Anpassen !!!
           avntValues = .Range(.Cells(2, 1), .Cells(.Rows.Count, 2).End(xlUp)).Value
       End With
       With Worksheets("Tabelle1").Columns(5) ' Anpassen !!!
           For ialngIndex = LBound(avntValues) To UBound(avntValues)
               Call .Replace(What:=avntValues(ialngIndex, 1), _
                             Replacement:=avntValues(ialngIndex, 2), LookAt:=xlWhole)
           Next
       End With
    End Sub
  6. Schließe den VBA-Editor: Drücke ALT + Q, um den Editor zu schließen.

  7. Führe das Skript aus: Drücke ALT + F8, wähle Ersetzen aus und klicke auf "Ausführen".


Häufige Fehler und Lösungen

  • Fehler: "Laufzeitfehler 9 – Index außerhalb des gültigen Bereichs"

    • Lösung: Stelle sicher, dass die Blattnamen in der VBA-Anweisung korrekt sind. Überprüfe, ob das Blatt "Mapping" und "Tabelle1" exakt so benannt sind.
  • Fehler: "Die Ersetzung wurde nicht durchgeführt"

    • Lösung: Überprüfe, ob die Werte in der Mappingtabelle exakt mit den Werten in Spalte E übereinstimmen. Achte auf mögliche Leerzeichen oder unterschiedliche Formate.

Alternative Methoden

Wenn du kein VBA verwenden möchtest, kannst du auch die SVERWEIS-Formel nutzen, um die Werte zu ersetzen:

  1. Kopiere die Spalte E in eine andere Spalte (z.B. Z).

  2. Verwende in der ersten Zelle der neuen Spalte die Formel:

    =SVERWEIS(Z2;Mapping!$A:$B;2;FALSCH)
  3. Ziehe die Formel nach unten, um alle Werte zu ersetzen.

Diese Methode ist einfach und benötigt kein Programmieren, jedoch kann sie bei sehr großen Datenmengen langsamer sein.


Praktische Beispiele

Angenommen, in deiner Mappingtabelle hast du die folgenden Werte:

Alte Werte Neue Werte
4550 3123456
1234 567890

Wenn du das VBA-Skript ausführst, werden alle Vorkommen von 4550 in Spalte E durch 3123456 ersetzt. Das gleiche gilt für 1234, das durch 567890 ersetzt wird.


Tipps für Profis

  • Nutze die Application.ScreenUpdating-Eigenschaft: Um die Ausführung zu beschleunigen, kannst du den Bildschirmaktualisierungsmodus während der Ersetzung deaktivieren:

    Application.ScreenUpdating = False
    ' Dein Code hier
    Application.ScreenUpdating = True
  • Überprüfe die Mappingtabelle regelmäßig: Achte darauf, dass deine mapping tabelle excel aktuell ist und alle notwendigen Einträge enthält.


FAQ: Häufige Fragen

1. Frage: Kann ich die Mappingtabelle auch in einer anderen Datei speichern? Antwort: Ja, du kannst die Mappingtabelle in einer anderen Excel-Datei speichern. Du musst jedoch den Pfad zur Datei im VBA-Code angeben.

2. Frage: Was passiert, wenn ein Wert nicht in der Mappingtabelle vorhanden ist? Antwort: Wenn ein Wert nicht in der Mappingtabelle vorhanden ist, bleibt der ursprüngliche Wert unverändert. Du kannst jedoch zusätzliche Logik im VBA-Code hinzufügen, um solche Fälle zu behandeln.

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Entdecke mehr
Finde genau, was du suchst

Die erweiterte Suchfunktion hilft dir, gezielt die besten Antworten zu finden

Suche nach den besten Antworten
Unsere beliebtesten Threads

Entdecke unsere meistgeklickten Beiträge in der Google Suche

Top 100 Threads jetzt ansehen
Anzeige