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

Forumthread: String in zeile suchen und ändern

String in zeile suchen und ändern
03.07.2018 15:17:10
Johny
Liebes Forum,
Ich habe ein Problem und komme partout nicht weiter.
Ich habe eine Datei mit ca. 3000 Zeilen die jeweils in einer Zelle einen String enthalten. In einigen dieser Zeilen muss ein Wert im String geändert werden, die betroffenen Zeilen haben eine Kennung mit der ich sie suchen kann jedoch bekomme ich es nicht hin den Teil im String zu ändern und es als schleife zu verpacken.
eine zelle sieht schematisch so aus:
test123 idnumber=111 pipapo item=12345
Ich will die Zeile durch die item nummer finden (z.b. 12345) und dann die idnumber ( z.b. 111) verändern ohne den string als solches zu zerstören. Vor der zahlenkombination der idnumber steht immer "idnumber", wenn das etwas hilft.
ich bekomme es im Moment leider nicht hin.
Vielen Dank im vorraus
Anzeige

3
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String in zeile suchen und ändern
03.07.2018 15:44:06
ChrisL
Hi
Vielleicht so...
Sub t()
Dim strSuche As String, strErsatz As String, strAltItem As String
Dim c As Range
strSuche = "111"
strErsatz = "54321"
For Each c In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
If InStr(1, c, "idnumber=" & strSuche & " ") Then
strAltItem = Right(c, Len(c) - InStr(1, c, "item=") - 4)
If InStr(1, strAltItem, " ") Then _
strAltItem = Left(strAltItem, InStr(1, strAltItem, " ") - 1)
c = Replace(c, "item=" & strAltItem, "item=" & strErsatz)
End If
Next c
End Sub
Für allfällige Anschlussfragen bitte Beispieldatei mit mehr Datensätzen laden. Um das genaue Muster zu erkennen sind mehr als eine Zeile hilfreich.
cu
Chris
Anzeige
AW: String in zeile suchen und ändern
03.07.2018 17:03:34
ChrisL
ups... "idnumber=" und "item=" im Code umtauschen
Die ID-Nummer 111 ist im Voraus nicht bekannt, oder?
AW: String in zeile suchen und ändern
03.07.2018 16:52:53
Daniel
Hi
kommt halt darauf an, was du konkret verändern willst.
ohne VBA könnte man mit dem Autofilter nach "endet mit item=12345" filtern und dann mit ERSTETZEN "idnumber=111 " durch "idnumber=222 " ersetzen (kein Haken bei "gesmaten Zellinhalt vergleichen)
in gefilterten Tabellen werden nur die sichtbaren Zeilen bearbeitet.
per VBA kann man das dann genauso machen (der Recorder ist dein Freund)
komplizierter wird's, wenn du nicht einfach nur bestimmte fixe idnummern austauschen willst sondern so Sachen machen willst, wie "erhöhe jede ID-Nummer um 1"
aber hier solltest du genauer beschreiben, was du willst.
Gruß Daniel
Anzeige
;

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

String in Excel-Zeilen suchen und ändern


Schritt-für-Schritt-Anleitung

Um einen bestimmten Teil eines Strings in Excel zu suchen und zu ändern, kannst du entweder VBA oder die integrierten Funktionen von Excel verwenden. Hier ist eine Schritt-für-Schritt-Anleitung für beide Methoden:

Mit VBA:

  1. Öffne Excel und drücke ALT + F11, um den VBA-Editor zu öffnen.

  2. Wähle Einfügen > Modul, um ein neues Modul zu erstellen.

  3. Kopiere den folgenden VBA-Code in das Modul:

    Sub t()
       Dim strSuche As String, strErsatz As String, strAltItem As String
       Dim c As Range
       strSuche = "111" ' Die ID-Nummer, die du suchen möchtest
       strErsatz = "54321" ' Die neue ID-Nummer
       For Each c In ActiveSheet.UsedRange.SpecialCells(xlCellTypeConstants)
           If InStr(1, c, "idnumber=" & strSuche & " ") Then
               strAltItem = Right(c, Len(c) - InStr(1, c, "item=") - 4)
               If InStr(1, strAltItem, " ") Then _
                   strAltItem = Left(strAltItem, InStr(1, strAltItem, " ") - 1)
               c = Replace(c, "item=" & strAltItem, "item=" & strErsatz)
           End If
       Next c
    End Sub
  4. Ändere strSuche und strErsatz entsprechend deinen Bedürfnissen.

  5. Führe das Skript mit F5 aus.

Ohne VBA:

  1. Filtere deine Daten nach der gewünschten item-Nummer.
  2. Wähle die Zellen aus, die die idnumber enthalten.
  3. Nutze Suchen und Ersetzen (Strg + H).
  4. Suche nach idnumber=111 und ersetze es durch idnumber=222. Stelle sicher, dass der Haken bei „Gesamten Zellinhalt vergleichen“ nicht gesetzt ist.

Häufige Fehler und Lösungen

  • Fehler: Der VBA-Code funktioniert nicht.

    • Lösung: Überprüfe, ob das Makro in der richtigen Arbeitsmappe ausgeführt wird. Stelle sicher, dass die ID-Nummer und item-Nummer korrekt im Code angegeben sind.
  • Fehler: Ersetzen funktioniert nicht mit Suchen und Ersetzen.

    • Lösung: Stelle sicher, dass du nicht den Haken bei „Gesamten Zellinhalt vergleichen“ gesetzt hast, sonst wird nur die gesamte Zelle ersetzt.

Alternative Methoden

Wenn VBA nicht die bevorzugte Methode ist, kannst du auch den Excel-Autofilter verwenden:

  1. Aktiviere den Autofilter über Daten > Filter.
  2. Filtere nach item=12345.
  3. Wähle die gefilterten Zeilen aus und benutze Suchen und Ersetzen, um idnumber=111 durch die gewünschte neue Zahl zu ersetzen.

Praktische Beispiele

Angenommen, du hast folgende Strings in deinen Zellen:

  • test123 idnumber=111 pipapo item=12345
  • test456 idnumber=222 pipapo item=67890

Wenn du die idnumber von 111 auf 54321 ändern möchtest, kannst du den oben genannten VBA-Code verwenden oder die Suchen und Ersetzen Funktion nutzen, um das Ziel zu erreichen.


Tipps für Profis

  • Nutze Variablen: Du kannst die strSuche und strErsatz Variablen dynamisch gestalten, indem du sie durch Zellreferenzen ersetzt.
  • Schleifen optimieren: Wenn du große Datenmengen bearbeitest, achte darauf, die Schleifen so zu optimieren, dass sie nicht zu viel Zeit in Anspruch nehmen.
  • Fehlerbehandlung: Integriere Fehlerbehandlung in deinen VBA-Code, um unerwartete Ergebnisse zu vermeiden.

FAQ: Häufige Fragen

1. Frage Kann ich auch mehrere idnumbers gleichzeitig ersetzen?

Antwort: Ja, du kannst den VBA-Code anpassen, um mehrere idnumbers in einer Schleife zu ersetzen, indem du eine Array-Variable für die Such- und Ersatzwerte verwendest.

2. Frage Wie kann ich sicherstellen, dass ich keine Daten überschreibe?

Antwort: Mache immer eine Sicherungskopie deiner Daten, bevor du Batch-Operationen wie Suchen und Ersetzen durchführst. So kannst du im Falle eines Fehlers die Originaldaten wiederherstellen.

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