Anzeige
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender

Forumthread: suchen und ersetzen von bestimmten Zeichenfolgen

suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 15:13:45
bestimmten
Hallo zusammen,
ich habe folgendes Problem:
In einer Tabelle soll nach der Zeichenfolge "BxxW;=G" gesucht werden und durch "BxxWG" ersetzt werden. Mein Problem besteht darin, dass die beiden Zeichen, die ich mit "xx" eingetragen habe unterschiedlche 2-stellige Zahlen sind. Verwende ich als Platzhalter "?" so werden beim ersetzen auch die beiden "?" eingesetzt. Das selbe passiert, wenn ich als Platzhalter "*" verwende. Auch hier wird nach dem Ersetzen "*" angezeigt.
Z.Zt. habe ich folgenden Befehl:
Cells.Replace What:="B*W;=G", Replacement:="B*WG", LookAt:= _
xlPart, SearchOrder:=xlByColumns, MatchCase:=True
Nochmal als Info: vor dem Ersetzen steht "B01W;=G" nachher sollte "B01WG" stehen.
Mit welchem Befehl würde das funktionieren?
Anzeige

11
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 15:31:43
bestimmten
hi
hier ist mal ein Sub! weiß nich wie ich das mit ner function machen sollte

Sub replace()
Dim zelle As Range
For Each zelle In UsedRange
If Left(zelle.Value, 1) = "B" And Right(zelle.Value, 4) = "W;=G" Then
If IsNumeric(Mid(zelle.Value, 2, 2)) Then
zelle.Value = "B" & Mid(zelle.Value, 2, 2) & "WG"
Else
zelle.Value = "B" & Mid(zelle.Value, 2, 1) & "WG"
End If
End If
Next zelle
End Sub

benutze lieber "UsedRange" anstatt "Cells" weil dann nur die beschriebenen zellen überprüft werden => Wesentlich schneller
Viel spaß
Gruß a.gerken
Anzeige
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 15:33:01
bestimmten
hi versuchs mal hiermit

Sub replace()
Dim zelle As Range
For Each zelle In UsedRange
If Left(zelle.Value, 1) = "B" And Right(zelle.Value, 4) = "W;=G" Then
If IsNumeric(Mid(zelle.Value, 2, 2)) Then
zelle.Value = "B" & Mid(zelle.Value, 2, 2) & "WG"
Else
zelle.Value = "B" & Mid(zelle.Value, 2, 1) & "WG"
End If
End If
Next zelle
End Sub

Anzeige
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 15:33:51
bestimmten
aaaah ich hasse es! srry wenn ich es jetzt ein wenig öfter gepostet hat liegt an meinem pc ^^
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 16:09:25
bestimmten
Hallo,
ich hab das Makro ausprobiert, aber leider bleibt es an der dritten Zeile hängen:
For Each zelle In UsedRange
Ich bekomme die Meldung "Code kann im Haltemodus nicht ausgeführt werden".
Was bedeutet das.
Gruß
Josef
Anzeige
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 15:36:00
bestimmten
Hallo,
dafür musst du jede Zelle einzeln untersuchen und entsprechend ersetzen.
Für folgendes Makro muss die Tabelle in A1 anfangen:

Sub ersetzen()
Dim iRows As Long, iCols As Integer, iRow As Long, iCol As Integer, vntArr, strTmp
iRows = ActiveSheet.UsedRange.Rows.Count
iCols = ActiveSheet.UsedRange.Columns.Count
vntArr = ActiveSheet.UsedRange
For iRow = 1 To iRows
For iCol = 1 To iCols
strTmp = vntArr(iRow, iCol)
If strTmp Like "B?W" Then vntArr(iRow, iCol) = "B" & Mid(strTmp, 2, 2) & "WG"
Next
Next
Range(Cells(1, 1), Cells(iRows, iCols)) = vntArr
End Sub

Gruß
Geist ist geil!
Anzeige
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 16:05:39
bestimmten
Hallo,
ich habs ausprobiert es funzt aber leider nicht. Beim Ausführen des Makro´s bleibt die Zeichenfolge leider so wie sie war. Es steht nachher auch immer noch "B01W;=G"
Gruß
Josef
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 16:12:11
bestimmten
Hallo,
steht etwa nicht nur B01W in der Zelle, sonder etwas wie blablaB01Wblabla?
Gruß
Geist ist geil!
Anzeige
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 16:18:26
bestimmten
Hallo,
die Zeichenfolge "B01W;=G" steht innerhalb einer längeren Zeichenfolge.
Ich will aber nur diese Zeichen auswählen in "B01WG" und das 01 kann auch 02,03,04 bzw. jede zweistellige Zahl sein.
Gruß
Josef
AW: suchen und ersetzen von bestimmten Zeichenfolgen
24.10.2005 16:25:54
bestimmten
Hallo,
jetzt hab ichs kapiert.

Sub ersetzen()
Dim iRows As Long, iCols As Byte, iRow As Long, iCol As Byte, vntArr, strTmp
Dim i As Integer
With ActiveSheet
With .UsedRange
iRows = .Rows.Count
iCols = .Columns.Count
End With
vntArr = .UsedRange
End With
For iRow = 1 To iRows
For iCol = 1 To iCols
strTmp = vntArr(iRow, iCol)
For i = 1 To Len(strTmp) - 6
If Mid(strTmp, i, 7) Like "B?W;=G" Then
vntArr(iRow, iCol) = Left(strTmp, i - 1) & "B" & Mid(strTmp, i + 1, 2) & "WG" & Mid(strTmp, i + 7, 255)
Exit For
End If
Next i
Next
Next
ActiveSheet.UsedRange = vntArr
End Sub

Gruß
Geist ist geil!
Anzeige
AW: suchen und ersetzen von bestimmten Zeichenfolgen
26.10.2005 06:48:48
bestimmten
Hallo,
danke für diese Info; jetzt funktioniert es!!
;

Forumthreads zu verwandten Themen

Anzeige
Anzeige
Anzeige
Anzeige
Entdecke relevante Threads

Schau dir verwandte Threads basierend auf dem aktuellen Thema an

Alle relevanten Threads mit Inhaltsvorschau entdecken
Anzeige
Anzeige

Infobox / Tutorial

Zeichenfolgen in Excel suchen und ersetzen


Schritt-für-Schritt-Anleitung

Um in Excel eine bestimmte Zeichenfolge zu suchen und durch eine andere zu ersetzen, kannst du VBA verwenden. Hier ist eine Schritt-für-Schritt-Anleitung:

  1. Öffne den VBA-Editor: Drücke ALT + F11, um den Visual Basic for Applications (VBA) Editor zu öffnen.

  2. Füge ein neues Modul hinzu: Klicke im Projektfenster mit der rechten Maustaste auf "VBAProject (deine Arbeitsmappe)" und wähle Einfügen -> Modul.

  3. Kopiere den folgenden Code in das Modul:

    Sub ersetzen()
       Dim iRows As Long, iCols As Byte, iRow As Long, iCol As Byte, vntArr, strTmp
       Dim i As Integer
       With ActiveSheet
           With .UsedRange
               iRows = .Rows.Count
               iCols = .Columns.Count
           End With
           vntArr = .UsedRange
       End With
       For iRow = 1 To iRows
           For iCol = 1 To iCols
               strTmp = vntArr(iRow, iCol)
               For i = 1 To Len(strTmp) - 6
                   If Mid(strTmp, i, 7) Like "B?W;=G" Then
                       vntArr(iRow, iCol) = Left(strTmp, i - 1) & "B" & Mid(strTmp, i + 1, 2) & "WG" & Mid(strTmp, i + 7, 255)
                       Exit For
                   End If
               Next i
           Next
       Next
       ActiveSheet.UsedRange = vntArr
    End Sub
  4. Schließe den VBA-Editor und gehe zurück zu Excel.

  5. Führe das Makro aus: Drücke ALT + F8, wähle ersetzen aus der Liste und klicke auf Ausführen.

Mit diesem Makro werden alle Vorkommen der Zeichenfolge „BxxW;=G“ durch „BxxWG“ ersetzt, wobei „xx“ für zweistellige Zahlen steht.


Häufige Fehler und Lösungen

  • Fehler: "Code kann im Haltemodus nicht ausgeführt werden"
    Lösung: Stelle sicher, dass keine Zelle im Bearbeitungsmodus ist. Beende alle Bearbeitungen und probiere es erneut.

  • Fehler: Die Zeichenfolge bleibt unverändert
    Lösung: Überprüfe, ob die gesuchte Zeichenfolge innerhalb anderer Texte steht. Das Makro sucht nur nach exakten Übereinstimmungen.


Alternative Methoden

  1. Excel-Funktion Suchen und Ersetzen: Du kannst auch die eingebaute Funktion Suchen & Ersetzen verwenden, indem du STRG + H drückst. Diese Methode ist jedoch weniger flexibel als das VBA-Makro, wenn es um Platzhalter geht.

  2. Formeln verwenden: Du kannst die Funktion WECHSELN verwenden, um bestimmte Textteile zu ersetzen, z.B.:

    =WECHSELN(A1, "B01W;=G", "B01WG")

Praktische Beispiele

  1. VBA-Makro zur Ersetzung mehrerer Werte: Wenn du mehrere Zeichenfolgen ersetzen möchtest, kannst du das Makro entsprechend erweitern, indem du zusätzliche If-Bedingungen hinzufügst.

    If strTmp Like "B?W;=G" Then
       vntArr(iRow, iCol) = Left(strTmp, i - 1) & "B" & Mid(strTmp, i + 1, 2) & "WG"
    ElseIf strTmp Like "C?W;=G" Then
       vntArr(iRow, iCol) = Left(strTmp, i - 1) & "C" & Mid(strTmp, i + 1, 2) & "WG"
    End If
  2. Ersetzen von Platzhaltern: Wenn du Platzhalter verwenden möchtest, um z.B. das erste Zeichen zu ersetzen, kannst du Like in Kombination mit Mid verwenden.


Tipps für Profis

  • Benutze UsedRange: Dies sorgt dafür, dass nur die tatsächlich verwendeten Zellen durchsucht werden, was die Ausführungsgeschwindigkeit erhöht.
  • Debugging: Setze Haltepunkte im VBA-Code, um den Ablauf zu überprüfen und Probleme zu identifizieren.
  • Wildcards: Nutze Wildcards wie ? und *, um flexiblere Suchen durchzuführen, jedoch mit Bedacht, um unerwünschte Ersetzungen zu vermeiden.

FAQ: Häufige Fragen

1. Was sind Wildcards in Excel?
Wildcards sind Platzhalter, die du in Funktionen wie Suchen & Ersetzen verwenden kannst. ? steht für ein beliebiges einzelnes Zeichen und * für eine beliebige Anzahl von Zeichen.

2. Kann ich das Makro anpassen, um andere Zeichenfolgen zu ersetzen?
Ja, du kannst die Bedingungen im VBA-Code anpassen, um andere Zeichenfolgen zu suchen und zu ersetzen.

3. Funktioniert das auch in Excel Online?
Leider ist VBA nicht in Excel Online verfügbar. Du musst die Desktop-Version verwenden, um VBA-Makros auszuführen.

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