[Excel] Benötige Makro, um aus Text bestimmte Zeichenfolgen zu löschen

Sgt_Stieglitz

Commander
Registriert
Okt. 2014
Beiträge
2.393
Hallo,

ich habe folgendes Problem in Excel zu lösen.

Im Tabellenblatt Tabelle1 stehen in den Zellen der Spalte A jeweils Indizes (Text, z.B. 9B9). Insgesamt sind es derzeit 64 verschiedene Indizes.

Diese sollen per Makro im Tabellenblatt Tabelle2 gesucht und gelöscht werden. Die Teilenummern, die den Index enthalten, stehen in ebenfalls in Spalte A.

Suchen und Ersetzen - diese Funktion kenne ich, händisch durchgehen ist aber keine Option, ich möchte das ganze per Makro lösen, z.B. können es statt 64 Indizes auch mal 1.400 Indizes sein, die in Teilenummern (500 bis 10.000 denkbar) gesucht und gelöscht werden sollen.

Ich habe wirklich keine Ahnung von VBA und Makros in Excel.

Meine Idee war es, eine Schleife zu verwenden. Die zieht sich den ersten Index aus Tabelle1, sucht in Spalte A von Tabelle 2 und löscht ihn jeweils. Nachdem das Ende (letzte Zelle mit Textinhalt) in Tabelle2 erreicht wurde, wird der nächste Index aus Tabelle1 genommen und dann wieder das gleiche Prozedere.

Hat jemand eine Idee, wie ich das in VBA-Code bringe?

Danke für jede Hilfe.
 
Mit dem Makrorekorder und einer while-Schleife außenrum hab ich Folgendes:
Code:
Sub Makro2()
    Dim i As Integer
    i = 1
    Do While Tabelle1.Cells(i, 1).Text <> ""
    Tabelle2.Columns("A:A").Select
    Selection.Replace What:=Tabelle1.Cells(i, 1).Text, Replacement:="", LookAt:=xlPart, _
        SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False
    i = i + 1
    Loop
End Sub
 
Wenn du dich mit SVERWEIS auskennst, könntest du es auch darüber lösen.

In Tabelle 2 eine Spalte mit dem SVERWEIS einfügen, als Matrix die Index-Spalte aus Tabelle 1, Rückgabewert dieselbe Spalte.

Anschließend alle Zeilen löschen, wo es einen Rückgabewert gab.

(ist natürlich nicht so komfortabel wie VBA, aber vielleicht kannst du es dann selbst nachvollziehen und ggf. auch anpassen)
 
Hallo und danke zunächst für den Tipp.

SVERWEIS kenne ich, scheint mir aver für mein Problem nicht praktikabel, weil ich nämlich den gefundenen Index aus der Teilenummer löschen möchte.
 
@simpsonsfan auch dir danke.

Das sieht vielversprechend aus. Mit Selection.replace hatte ich auch schon rum experimentiert, bin da aber noch zu keiner Lösung gekommen. Ich probiere das morgen gleich mal
 
Da ich auch einmal in meinem leben etwas konstruktives zu diesem genialen Forum beitragen will, habe ich mal mein eingerostetes VBA-Wissen bemüht. Vielleicht hilft es dir ja:

Code:
Sub StringLoeschen()

Dim rLastTab1 As Long, rLastTab2 As Long
Dim i As Long, j As Long

rLastTab1 = Sheets("Tabelle1").Cells(Rows.Count, 1).End(xlUp).Row 'Letzte Zeile in Spalte A in Tabelle1
rLastTab2 = Sheets("Tabelle2").Cells(Rows.Count, 1).End(xlUp).Row 'Letzte Zeile in Spalte A in Tabelle2

For i = 1 To rLastTab1              'Schleife durch Spalte A in Tabelle1
   For j = 1 To rLastTab2              'Schleife durch Spalte A in Tabelle2
      Sheets("Tabelle2").Cells(j, 1) = Replace(Sheets("Tabelle2").Cells(j, 1), Sheets("Tabelle1").Cells(i, 1), "", compare:=vbTextCompare)
   Next j
Next i

End Sub

evtl noch compare:=vbTextCompare in vbBinaryCompare ändern wenn Groß-/Kleinschreibung wichtig ist!

Lg,
P
 
Hallo Taschentuch,

vielen Dank auch dir. Ergibt vom durchlesen her auch Sinn, ich werde es ebenso testen.

Gruß
Stieglitz
Ergänzung ()

So, kurze Rückmeldung. Die Lösung von simpsonsfan funktioniert mit einer kleinen Modifikation. Statt z.B. Tabelle1 muss man Sheets("Tabelle1") verwenden.

Danke an dieser Stelle für die schnelle Hilfe!
 
Schön, dass es klappt. Bei mir funktioniert es übrigens direkt mit dem Tabellennamen, also ohne sheets. Mag aber daran liegen, dass auf diesem PC immer noch Office 2003 drauf ist.

Dann mal schönen Abend noch.
 
Zurück
Oben