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

Forumthread: Suchen und Ersetzen mit variablen Inhalt

Suchen und Ersetzen mit variablen Inhalt
05.01.2018 12:54:51
dove
Hallo zusammen,
ich habe ein kleines Problem und hoffe ihr könnt mir helfen.
Ich würde gerne mit folgendem Code nach einer bestimmten Spalte "SNDCMPS" suchen und in dieser Spalte nach einer Versionsnummer suchen und diese ersetzen / löschen.
DIe Versionsnummer ist folgendermaßen aufgabaut: [VXX]
Die XX stehen für Zahlen die beliebig sein können.
Ich steh grad auf dem Schlauch, was ich eingeben muss, damit er die beliebige Zahl nach dem V mitlöscht.
Sub DeleteVersionNumber()
Dim ColName As Range
Set ColName = ThisWorkbook.Worksheets(wbkZiel.Sheets.Count).Rows(1).Find(what:=SNDCMPS, lookat:= _
_xlWhole)
If ColName Is Nothing Then
MsgBox "Spalte konnte nicht gefunden werden!"
Else
ColName.EntireColumn.Select
Selection.Replace what:=" ", Replacement:=" ", lookat:=xlPart, _
SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
ReplaceFormat:=False
End If
End Sub

Anzeige

8
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: immer [Vxx]? owT
05.01.2018 14:12:45
Fennek
AW: immer [Vxx]? owT
05.01.2018 14:38:00
dove
Hallo Fennek,
[VXX] steht ja nicht in den Zellen, sondern [V21], [V77] usw. Deswegen habe ich ja darauf hingewiesen, dass es beliebige Zahlen sein können.
LG
AW: like "V##"
05.01.2018 14:53:13
Fennek
nicht präzise genug!
teste, ob

msgbox Range("A1") like "*~[V##~]*"
"Wahr" ergibt. Als Range muss eine geeignete Zelle gewählt werden.
mfg
Anzeige
AW: kleiner Test
05.01.2018 15:30:56
Fennek
Hallo,
mit "like" hat es nicht geklappt, aber mit der "Echse". Mein Code zum Testen:

'asdh [V12] djasi
Sub Rex()
Dim Tx As String
Tx = Cells(1, 1)
Neu = "34"
With CreateObject("vbscript.regexp")
.Pattern = "(\[V)(\d{2})(\])"
If .test(Tx) Then
Tx = .Replace(Tx, "$1" & Neu & "$3")
End If
End With
Debug.Print Tx
End Sub
Kannst Du das in deine Suche einbauen?
mfg
Anzeige
AW: komplet
05.01.2018 15:48:57
Fennek
Hallo,
der Code sollte die Frage beantworten. Zur Prüfung wird das Ergebnis in die nächste Spalte geschrieben. Wenn alles passt, einfach das "offset" löschen.

Function Rex(rng As Range) As String
Tx = rng.Value
Neu = "34"
With CreateObject("vbscript.regexp")
.Pattern = "(\[V)(\d{2})(\])"
If .test(Tx) Then
Tx = .Replace(Tx, "$1" & Neu & "$3")
End If
End With
Debug.Print Tx
Rex = Tx
End Function
Sub dove()
Such = "SNDCMPS"
Col = WorksheetFunction.Match(Such, Rows(1), 0)
For Each ar In Columns(Col).SpecialCells(2, 2).Areas
Debug.Print ar.Address
ar.Cells(1).Offset(, 1) = Rex(ar.Cells(1))
Next ar
End Sub
Es wurde angenommen, dass nicht in zwei Zeilen untereinander Treffet sind.
mfg
Anzeige
AW: komplet
05.01.2018 17:17:24
dove89
Hallo Fennek,
ich habe deinen Code nicht ausprobiert, da deine Annahme unzutreffend war. Ich hätte erwähnen sollen, dass in so gut wie in jeder Zeile in der Spalte eine Versionsnummer steht.
Kannst du deinen Code dementsprechend anpassen?
Danke.
LG
AW: untested
05.01.2018 17:46:45
Fennek

Sub dove()
Such = "SNDCMPS"
Col = WorksheetFunction.Match(Such, Rows(1), 0)
For i = 2 to cells(rows.count, Col).end(xlup).row
cells(i, Col) = Rex(ar.Cells(i, Col))
Next ar
End Sub

Anzeige
AW: untested (Korrektur)
05.01.2018 20:01:28
Fennek

Sub dove()
Such = "SNDCMPS"
Col = WorksheetFunction.Match(Such, Rows(1), 0)
For i = 2 to cells(rows.count, Col).end(xlup).row
cells(i, Col) = Rex(Cells(i, Col))
Next i
End Sub

;

Forumthreads zu verwandten Themen

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

Suchen und Ersetzen von Versionsnummern in Excel


Schritt-für-Schritt-Anleitung

  1. Öffne Excel und lade die Datei, in der Du die Versionsnummern ersetzen möchtest.

  2. Öffne den VBA-Editor mit ALT + F11.

  3. Füge ein neues Modul ein:

    • Rechtsklick auf „VBAProject (DeinWorkbookName)“ -> Einfügen -> Modul.
  4. Kopiere den folgenden Code in das Modul:

    Sub DeleteVersionNumber()
       Dim ColName As Range
       Set ColName = ThisWorkbook.Worksheets(1).Rows(1).Find(what:="SNDCMPS", lookat:=xlWhole)
       If ColName Is Nothing Then
           MsgBox "Spalte konnte nicht gefunden werden!"
       Else
           ColName.EntireColumn.Select
           Selection.Replace what:=" [V##]", Replacement:=" ", lookat:=xlPart, _
           SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
           ReplaceFormat:=False
       End If
    End Sub
  5. Passe den Code an, falls Du eine andere Spalte als „SNDCMPS“ verwenden möchtest.

  6. Führe das Skript aus, indem Du im VBA-Editor auf „Run“ klickst oder F5 drückst.


Häufige Fehler und Lösungen

  • Fehler: „Spalte konnte nicht gefunden werden!“

    • Lösung: Stelle sicher, dass die Spalte „SNDCMPS“ tatsächlich existiert und richtig geschrieben ist.
  • Fehler: Keine Ersetzung erfolgt.

    • Lösung: Überprüfe, ob die Versionsnummern im Format [VXX] vorliegen und dass Du die Platzhalter im Code richtig ersetzt hast.

Alternative Methoden

Eine alternative Methode zur Bearbeitung von Versionsnummern ist die Verwendung von regulären Ausdrücken. Hier ist ein Beispiel:


Sub ReplaceVersionWithRegex()
    Dim Tx As String
    Dim Neu As String
    Dim regex As Object
    Set regex = CreateObject("VBScript.RegExp")

    Neu = "34" ' Neue Versionsnummer
    regex.Pattern = "\[V\d{2}\]"

    For i = 2 To Cells(Rows.Count, "SNDCMPS").End(xlUp).Row

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