Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
1600to1604
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
Inhaltsverzeichnis

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

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
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

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

Anzeige

320 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige