Live-Forum - Die aktuellen Beiträge
Datum
Titel
24.04.2024 19:29:30
24.04.2024 18:49:56
Anzeige
Archiv - Navigation
1608to1612
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

Spezifischen Teil eines String ersetzen

Spezifischen Teil eines String ersetzen
15.02.2018 11:09:13
Sraljo
Hallo zusammen,
Momentan habe ich ein Problem mit der Replace-fkt. welches sich wie folgt darstellt:
Ich habe eine Zelle mit Zahlen/Buchstaben (1, 2, 2a, 2b, .... 14, c1, ...c6,)
welche immer aufsteigend sind, aber nicht notgedrungen immer alle vorhanden.
So kann sich z.B. auch 2, 3, 9, 12, 13, ergeben.
Diese Zahlen muss ich nun je nach Fall verschieden aussortieren.
Im 1. Fall wäre 2, 3, 4, 9, zu behalten.
Im 2. Fall wäre 12, 13, zu behalten.
Erseres ist kein Thema und wird dadurch abgefangen: ("column_c_domains" ist die besagte Zelle)
Sheets(sheet_fkt).Range(column_c_domains).Replace "11,", "", xlPart
Sheets(sheet_fkt).Range(column_c_domains).Replace "12,", "", xlPart
Sheets(sheet_fkt).Range(column_c_domains).Replace "13,", "", xlPart
Sheets(sheet_fkt).Range(column_c_domains).Replace "14,", "", xlPart
Sheets(sheet_fkt).Range(column_c_domains).Replace "c6,", "", xlPart
Der Zweite Fall ist das Problem da er mit die 2, und die 3, von 12, und 13, löscht.
Sheets(sheet_fkt).Range(column_c_domains).Replace "1,", "", xlPart
Sheets(sheet_fkt).Range(column_c_domains).Replace "2,", "", xlPart
Sheets(sheet_fkt).Range(column_c_domains).Replace "2a,", "", xlPart
Sheets(sheet_fkt).Range(column_c_domains).Replace "2b,", "", xlPart
Sheets(sheet_fkt).Range(column_c_domains).Replace "3,", "", xlPart
...
Einschränkungen mit Left/Right/Mid kann ich nicht setzen da die Zahlen zufällig auftreten können.
Den Rest des Codes ist etwas umfangreicher und kann deswegen hier nicht eingefügt werden. Kann ihn aber gern per Mail versenden sollten unklarheiten bestehen.
Leider bin ich ein kompletter VBA-Rookie und ganz und garnicht Syntax-Sattelfest.
Ich hoffe mir kann man bei dieser Problemstellung helfen.
Vielen Dank dafür im Vorraus.
Sraljo

6
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Spezifischen Teil eines String ersetzen
15.02.2018 11:43:51
UweD
Hallo
nur so eine Idee
- Setze ein Leerzeichen vor und ein Komma hinter den Text
- Ersetze dann immer inkl. Leerzeichen und Komma
-zum Schluss das Leerzeichen vorne wegnehmen und hinten noch das Komma
Sub repl()
    Dim AText As String, NText As String, Finden As String
    AText = "1, 2, 3, 12, 13, 15"
    Finden = "2,"
    
    
    AText = " " & AText & ","
    Finden = " " & Finden
    
    NText = Replace(AText, Finden, "")
    
    NText = Mid(NText, 2, Len(NText) - 2)
    
    
    MsgBox NText
End Sub

LG UweD
Anzeige
AW: Spezifischen Teil eines String ersetzen
15.02.2018 13:18:53
Sraljo
Dank dir vielmals UweD,
Hat geklappt!! :-)
Habe es jetzt z.B. so implementiert:
###################################################################################
Case Else
value_buffer = Sheets("general_report").Range(column_h)
value_buffer = " " & value_buffer
value_buffer = Replace(value_buffer, "11,", "")
value_buffer = Replace(value_buffer, "12,", "")
value_buffer = Replace(value_buffer, "13,", "")
value_buffer = Replace(value_buffer, "14,", "")
value_buffer = Replace(value_buffer, "c6,", "")
value_output = Mid(value_buffer, 2, Len(value_buffer) - 2)
Sheets(sheet_fkt).Range(column_c_domains) = value_output
sheet = ""
End Select
###################################################################################
Vielen Dank nochmals für den Tipp!
Anzeige
Danke (mit weiterem Text)
15.02.2018 14:30:42
UweD
für die Rückmeldung.
ABER:
value_output = Mid(value_buffer, 2, Len(value_buffer) - 2)
Die minus 2 nur, wenn du vorher auch noch ein Komma hinten angefügt hast.
Das sehe ich in deinem Code nicht. (sonst nur -1)
In deinem Beispiel war hinten KEIN Komma. Also hättest du die Letze Zahl so nie erwischt...
LG UweD
AW: Danke (mit weiterem Text)
15.02.2018 14:50:21
Sraljo
Jain... ;-)
Die Kommata und ein Leerzeichen werden schon beim Einfügen dahinter gesetzt.
Das Komma möchte ich in dem Fall sogar haben, das Leerzeichen wird jetzt entfernt was mir auch sehr recht ist! :)
Sub ap_missing(ap_number, row_no)
column_g = "G" & row_no
column_h = "H" & row_no
column_f = "F" & row_no
Select Case ap_number
Case "1"
Sheets("general_report").Range(column_h) = Sheets("general_report").Range(column_h) & "1, "
Case "2"
Sheets("general_report").Range(column_h) = Sheets("general_report").Range(column_h) & "2, "
Case "2a"
Sheets("general_report").Range(column_h) = Sheets("general_report").Range(column_h) & "2a, "
Case "2b"
Sheets("general_report").Range(column_h) = Sheets("general_report").Range(column_h) & "2b, "
Anzeige
AW: Spezifischen Teil eines String ersetzen
15.02.2018 14:51:18
fcs
Hallo Sraljo,
ich hab nicht auch mit deinem Problem beschäfftigt und eine etwas anderen Ansatz gewählt.
Zellinhalt und Vergleichstexte/-Zahlen werden am Komma(=Trennzeichen) getrennt.
Dann werden die übereinstimmenden Zahlen/Texte wieder zum Ergebnis zusammengebaut.
Gruß
Franz
Sub Ersetzen()
Dim Fall As Variant
Fall = 2
Select Case Fall
Case 1
Call prcReplace_domain(rngBereich:=Sheets(sheet_fkt).Range(column_c_domains), _
strBehalten:="2, 3, 4, 9")
Case 2
Call prcReplace_domain(rngBereich:=Sheets(sheet_fkt).Range(column_c_domains), _
strBehalten:="12, 13")
End Select
End Sub
Sub prcReplace_domain(rngBereich As Range, ByVal strBehalten, _
Optional ByVal strSep As String = ",", _
Optional ByVal strFill As String = " ", _
Optional ByVal Row1 As Long = 2)
'rngBereich =Zellbereich in dem ersetzt werden soll
'strSep = Trennzeihen zwischen den Zahlen
'strFill = Füllzeichen zwischen Trennzeichen und Zahl
'Row1 = Zeile ab der ersetzt werden soll, wenn gesamte Spalte als Bereich übergeben wird.
Dim Zelle As Range
Dim stext As String
Dim arrBehalten
Dim arrZahlen, varZ, varB
Dim bolBehalten As Boolean
Dim rowL As Long
If Trim(strBehalten) = "" Then
Exit Sub
End If
strBehalten = Replace(strBehalten, strFill, "")
arrBehalten = Split(strBehalten, strSep)
If rngBereich.Rows.Count = rngBereich.Parent.Rows.Count Then
'gesamte Spalte ist als Bereich für das Ersetzten definiert
With rngBereich.Parent
'letzte Zeile mit Inhalt in Spalte
rowL = .Cells(.Rows.Count, rngBereich.Column).End(xlUp).Row
If rowL  "" Then
'Zellinhalt in Einzelzahlen zerlegen
arrZahlen = VBA.Split(stext, strSep)
stext = ""
'Zahlen im Zelltext mit den zu behaltenen Zahlen vergleichen
For Each varZ In arrZahlen
bolBehalten = False
For Each varB In arrBehalten
If varZ = varB Then
bolBehalten = True
Exit For
End If
Next varB
If bolBehalten = True Then
stext = stext & IIf(stext = "", "", strSep & strFill) & varZ
End If
Next varZ
Zelle.Value = "'" & stext
End If
Next Zelle
End Sub

Anzeige
AW: Spezifischen Teil eines String ersetzen
15.02.2018 20:57:37
Sraljo
Hallo Franz,
Dank dir für einen weiteren Ansatz!
Ich werde das morgen früh mal ausprobieren!
:-)
BR
Sraljo

303 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige