Anzeige
Archiv - Navigation
1348to1352
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

mit VBA vorangehendes Zeichen löschen

mit VBA vorangehendes Zeichen löschen
18.02.2014 15:05:59
Micha
Hallo zusammen,
mit einem Makro finde ich einen Teilstring in einer Zelle. Nun möchte ich ein vorangehendes "+" und diesen Teilstring löschen. Das Problem ist, dass das + manchmal direkt vor dem String steht und manchmal stehen noch andere Zeichen dazwischen, die aber nicht gelöscht werden dürfen.
Wie kann man das mittels VBA lösen?
Vielen Dank für die Hilfe und viele Grüße
Micha

15
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: mit VBA vorangehendes Zeichen löschen
18.02.2014 15:22:11
UweD
Hallo
meinst du das so?
Sub raus()
Dim TXT$, R1$, R2$, Neu$
'Beispieldaten
TXT = "1234+abcdxxxyyy"
R1 = "+"
R2 = "xxx"
Neu = Replace(TXT, R1, "")
Neu = Replace(Neu, R2, "")
MsgBox Neu
End Sub
Gruß UweD

AW: mit VBA vorangehendes Zeichen löschen
18.02.2014 16:09:11
Micha
Hallo Tino und Uwe,
bitte entschuldigt, dass ich mich nicht präziser ausgedrückt habe. Der Text in der Zelle wäre zum Beispiel so:
"+bla+bla/bla/xxx/bla+bla+bla"
Jetzt soll nur das + direkt vor dem xxx und das xxx selbst weg. Den xxx Teilstring zu löschen ist kein Problem, aber das + will nicht.

Anzeige
AW: mit VBA vorangehendes Zeichen löschen
18.02.2014 16:27:37
Tino
Hmmm, hab ich nen Sehfehler? In deinem Bsp. steht kein + direkt vor dem xxx.
+bla+bla/bla/xxx/bla+bla+bla
Sollte dein Zellinhalt so aussehen
+bla+bla/bla+xxx/bla+bla+bla"
dann ändere in dem Code der Tabelle doch einfach die Zeile
Replace(Cells(Ze, Sp), "+", "")
in
Replace(Cells(Ze, Sp), "+xxx", "")
Damit würden + und xxx, wenn in dieser Reihenfolge, ersetzt.
Gruß Tino

AW: mit VBA vorangehendes Zeichen löschen
18.02.2014 17:56:13
Micha
Hi Tino,
genau das ist ja das Problem: mit direkt davor meine ich das erste + was links von xxx steht.
zur Erklärung: In dem vorgegebenen String stehen die + für "und" Verknüpfungen und die "/" für "oder" Verknüpfungen.
Viele Grüße
Micha

Anzeige
noch offen...
18.02.2014 18:42:17
Tino
Hi Micha,
hab da auch keine Idee, wie das Problem dann zu lösen wäre.
Deshalb offen
Gruß Tino
PS.: Eine Bsp.-Mappe wäre sicher hilfreich um zu sehen wie deine Tabelle aufgebaut ist.

AW: noch offen...
18.02.2014 19:03:17
Micha
Hi Tino,
trotzdem danke :)
Hier eine kleine Beispielmappe:
https://www.herber.de/bbs/user/89342.xlsm
Die Werte in Spalte A sollen in C gelöscht werden, inklusive dem ersten + das links neben dem Suchstring steht. Der neue String soll dann in Spalte D ausgegeben werden.
Für jede Hilfe wäre ich MEGA dankbar!
Grüße
Micha

Anzeige
AW: noch offen...
19.02.2014 09:00:35
UweD
Hallo nochmal
Wenn ich das richtig verstanden habe, soll das + was am nächsten VOR dem Suchbegriff steht weg und der Suchbegriff selbst.
Sieht dann so aus
Userbild
Dann versuch mal dieses.
Sub Plus_weg()
On Error GoTo Fehler
Dim TB, TMP, i&, RA$, Wo%, Oft%
Dim LR&
Dim stCalc%
With Application
.ScreenUpdating = False
stCalc = .Calculation
.Calculation = xlCalculationManual
End With
Set TB = ActiveSheet
LR = TB.Cells(Rows.Count, 3).End(xlUp).Row 'letzte Zeile der Spalte
TB.Range("D2:D" & LR).ClearContents
For i = 2 To LR
TMP = TB.Cells(i, 3)
RA = TB.Cells(i, 1) 'was soll weg
Wo = InStr(TMP, RA) 'wo steht der Suchbegriff
If Wo > 0 Then
Oft = Len(Left(TMP, Wo - 1)) _
- Len(Application.Substitute(Left(TMP, Wo - 1), "+", "")) 'wie oft ist das +  _
vor dem SB vorhanden
TMP = Application.Substitute(TMP, "+", "", Oft) ' das letzte + vor dem SB wird gelö _
scht
End If
TB.Cells(i, 4) = Application.Substitute(TMP, RA, "") ' der SB selbst wird gelöscht
Next
Err.Clear
Fehler:
If Err.Number  0 Then MsgBox "Fehler: " & Err.Number & vbLf & Err.Description: Err.Clear
With Application
.ScreenUpdating = True
If .Calculation  stCalc Then .Calculation = stCalc
End With
End Sub

Gruß UweD

Anzeige
AW: noch offen...
19.02.2014 12:49:47
Micha
Hi UweD,
vielen Dank!! Das funktioniert super!
Ich möchte jetzt noch einen Loop einbauen, dass zuerst xxx und dann abc der Suchbegriff sind und nach denen in allen Zellen gesucht wird. Da das abc aber zum Beispiel nicht in allen Zellen vorhanden ist, kommt ein Fehler hoch. An welcher Stelle kann ich den am besten abfangen?
Vielen Dank noch mal!
Grüße
Micha

AW: noch offen...
19.02.2014 13:33:51
UweD
Hallo
in welcher Spalte (oder wo) steht denn der 2. Suchbegriff? Oder ist der Fix immer abc?

AW: noch offen...
19.02.2014 13:35:06
Micha
Hi,
nein der ist nicht immer abc, aber steht in der gleichen Spalte wie das xxx.
grüße
Micha

Anzeige
AW: noch offen...
19.02.2014 13:36:47
UweD
verstehe ich nicht?
mach nach mal eine Neue Datei

AW: noch offen...
19.02.2014 13:45:44
Micha
hey,
in Spalte 3 sollen zuerst alle xxx gesucht und mit dem vorangehenden + gelöscht werden und dann nochmal das gleiche für abc. In Zeile 2 würde dann nur das xxx fehlen, 3 wäre komplett leer und in 4 würde das abc fehlen.
Danke für deine Hilfe!!
Micha
https://www.herber.de/bbs/user/89355.xlsm

AW: noch offen...
19.02.2014 14:08:31
UweD
Das ist mir zu hoch.
Mach doch mal Beispiele, die auch funktionieren würden..
Am besten Vorher und wie es werden soll...
Das Makro durchläuft so alle Zeilen und tauscht ZEILENWEISE
oder meinst du das so?
Tabelle1
 ABCD
1gesucht 1gesucht 2KombinationKombination neu
2xxxabc'+123/2abc/345/+346/xxx+yyy123/2abc/345/346/xxx+yyy

Tabellendarstellung in Foren Version 5.49


Anzeige
AW: noch offen...
19.02.2014 18:36:33
Micha
Hi Uwe,
ich glaube wir schreiben an einander vorbei. Ich habe jetzt aber alles so bauen können wie ich es benötige. Vielen vielen Dank für deine Hilfe mit dem +, ohne dich hätte ich das nie hingekriegt!
Viele Grüße
Micha

316 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige