Microsoft Excel

Herbers Excel/VBA-Archiv

n Anzahl eines Zeichen ersetzen mit #

Betrifft: n Anzahl eines Zeichen ersetzen mit # von: Nilo
Geschrieben am: 20.10.2020 15:13:55

Hallo zusammen,
darf ich um eure Hilfe bitten:

ich habe diverse Texte in A:A
jeder Eintrag kann x Leerzeichen oder x # haben (oder andere).
Per Suchen und Ersetzen komme ich nur bedingt weiter denn,
wenn ein Text jetzt 1 * y hat kann ich es ersetzen mit 1 * z = ok
wenn ein Text jetzt aber 2 * y hintereinander hat bekomme ich auch 2 * z hintereinander
das möchte ich nicht!
Ich brauche: xy=1z

Mein Ansatz:

Sub LeerzeichenRaus()
 Dim Bereich As Range
 Dim Zelle As Range
 
 Set Bereich = Selection
 With Bereich
   .Replace What:=" ", Replacement:="/", _
   LookAt:=xlPart, MatchCase:=True
   
   .Replace What:=Chr(160), Replacement:="/", _
   LookAt:=xlPart, MatchCase:=True
   
   For Each Zelle In Bereich
     Zelle.Value = Zelle.Value * 1
   Next Zelle

 End With
 End Sub
Danke mal und Gruß
Nilo

Betrifft: AW: n Anzahl eines Zeichen ersetzen mit #
von: Daniel
Geschrieben am: 20.10.2020 15:18:11

Hi

Ersetze "yy" durch "y" und wiederhole es ggf bis kein "yy" mehr vorkommt.
Ersetze dann "y" durch "z"

Gruß Daniel

Betrifft: AW: n Anzahl eines Zeichen ersetzen mit #
von: Nilo
Geschrieben am: 20.10.2020 15:47:44

Hi,
ja das wäre ein Ansatz jedoch weiß ich nicht:
a: wie eine Schleife automatisch prüfen und runterzählen könnte bis y1
b: wenn ich keine Schleife habe die das prüft und runterzählt wie oft muss ich denn .Replace anwenden? Das kann dann wieder x sein

Ich könnte jetzt sagen: 20x aber das ist doch irgendwie bescheu...

Betrifft: AW: n Anzahl eines Zeichen ersetzen mit #
von: Daniel
Geschrieben am: 20.10.2020 15:53:54

Hi
.replace " ", "/", xlpart
.replace chr(160), "/", xlpart
do
    set Zelle .find(what:="//", lookat:=xpart)
    if Zelle is Nothing then Exit do
    .replace "//", "/", xlpart
loop

Gruß Daniel

Betrifft: AW: n Anzahl eines Zeichen ersetzen mit #
von: Nilo
Geschrieben am: 20.10.2020 16:01:35

Hi,
ok das habe ich jetzt verstanden!

Jedoch habe ich nur bei Leerzeichen schon folgende Kombis nach der Ersetzung:
/
//
///
////
/////
//////
usw.
das können beliebig viele sein

Das gleich mit anderen Zeichen zB
_
___
____
_____
______
usw.

Daher kann ich (mit meinem KnowHow) die spezifischen Zeichen zählen und dann entsprechend oft
den Loop oder Replace durchführen
Das würde aber bedeuten: bei jeder Änderung der Rohdaten, durchzählen und den Loop manuell anpassen!

Gruß
Nilo

Betrifft: AW: n Anzahl eines Zeichen ersetzen mit #
von: Daniel
Geschrieben am: 20.10.2020 16:50:03

Hi
dann hast du es noch nicht verstanden.
der Loop, so wie ich in gezeigt habe, wird so oft durchgeführt, wie im Zellbereich die Zeichenkette "//" gefunden wird.
mit jedem Schleifendurchlauf reduziert sich die Anzahl der aufeinander folgenden "/", solange bis nur noch einzelne "/" vorhanden sind.
Die Schleife erkennt automatisch, ob sie nochmal durchgeführt werden muss oder ob sie beendet werden kann.
du musst das nicht manuell durchzählen und anpassen, dafür gibt es Computer.

Gruß Daniel

Betrifft: AW: ahh jupp, jetzt gehts
von: Nilo
Geschrieben am: 20.10.2020 17:01:31

Hi Daniel,

ok, habe nicht richtig geguckt und es nochmal anders gemacht da er nicht sauber durchlief (hätte ich sehen müssen), hier
lookat:=xpart

Danke und Gruß
Nilo

Beiträge aus dem Excel-Forum zum Thema "n Anzahl eines Zeichen ersetzen mit #"