Anzeige
Archiv - Navigation
448to452
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
448to452
448to452
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

String verändern

String verändern
03.07.2004 11:21:48
Russi
Hallo Zusammen,
folgende Frage. Wie kann ich es per VBA bewerkstelligen, dass in einem String der in etwa so aussieht:
";AUFTRAG-NR. 85911BETR. 173,770;AUFTRAG-NR. 85790BETR. 203,93;AUFTRAG-NR. 86157;PLZ55120BETR. 48,37;AUFTRAG-NR. 86163;PLZ88690BETR. 80,85"
am Ende so aussieht:
";AUFTRAG-NR. 85911;BETR. 173,770;AUFTRAG-NR. 85790;BETR. 203,93;AUFTRAG-NR. 86157;PLZ55120BETR. 48,37;AUFTRAG-NR. 86163;PLZ88690BETR. 80,85"
Abfragekriterien:
Prüfe, wenn mindestens 10 Stellen (incl. Leerzeichen) vor der Zeichenfolge "BETR" keine Zeichenfolge "PLZ" kommt, soll vor der Zeichenfolge "BETR" ein Semikolon gesetzt werden.
Problem ist, dass nicht alle auszuwertenden Zeilen gleich aufgebaut sind..., habe zwar schon viele Eventualitäten abgefangen, aber hierbei komme ich leider nicht mehr weiter und in der Recherche werde ich nicht wirklich fündig...
Für Hilfe besten Dank
Andreas

4
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: String verändern
03.07.2004 11:39:33
Annett
Hallo Andreas
für VBA gut reicht Instr
Gruß Annett
AW: String verändern
03.07.2004 13:28:55
Russi
Hallo Annett,
vielen Dank für den Tip..., habe es lösen können...
Für die Nachwelt folgender Codeausschnitt. Schönes WE noch...

Sub teil_aus_import_aufbereiten()
introw = 7
aufträgekopieren:
While ActiveSheet.Cells(introw, 1).Value <> ""
If Right(ActiveSheet.Cells(introw, 9), 13) = "NN-GUTSCHRIFT" Then
Kette = ""
For anzahlzellen = 11 To 22
Kette = Kette & ActiveSheet.Cells(introw, anzahlzellen)
Next
If InStr(1, Kette, "BETR") >= 1 Then
For intcounter = 1 To Len(Kette)
PosBETR = InStr(intcounter, Kette, "BETR")
betragsuchen = Mid(Kette, PosBETR - 10, 10)
If InStr(1, betragsuchen, "PLZ") = 0 Then
Kette = Mid(Kette, 1, PosBETR - 1) & "PLZ" & Mid(Kette, PosBETR, Len(Kette))
End If
intcounter = PosBETR + 7
Next intcounter
End If
With WorksheetFunction
Kette = .Substitute(Kette, "AUFTRAG NR.", "AUFTRAG-NR.")
Kette = .Substitute(.Substitute(Kette, "AUFTRAG-NR.", ";AUFTRAG-NR."), "PLZ", ";PLZ")
Kette = .Substitute(Kette, " ", "")
Kette = .Substitute(Kette, "BETR.", "BETR. ")
Kette = .Substitute(Kette, "NR.", "NR.  ")
Kette = .Substitute(Kette, "0Auftrag", ";Auftrag")
If Left(Kette, 2) = "0;" Then Kette = .Substitute(Kette, "0;", ";")
End With
ActiveSheet.Cells(introw, 11).Value = Kette
ActiveSheet.Cells(introw, 11).Value = Right(ActiveSheet.Cells(introw, 11).Text, Len(ActiveSheet.Cells(introw, 11).Text) - 1)
Application.DisplayAlerts = False
ActiveSheet.Cells(introw, 11).Select
Selection.TextToColumns Destination:=Selection, DataType:=xlDelimited, _
TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, _
Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), _
Array(7, 1), Array(8, 1), Array(9, 1), Array(10, 1), Array(11, 1), Array(12, 1)), TrailingMinusNumbers:=True
Application.DisplayAlerts = True
End Sub

Anzeige
AW: String verändern
FP
Hallo Andreas,
du schmetterst uns an
a)
While ohne Wend !
If ohne End If
b)
Du kennst die Funktion Substitute ( wendest sie ja selbst an ) und fragst dann, wie man einen ; vor BETR bekommt ?
Ich habe gedacht, heute ist der 3.Juli. Aber scheinbar haben wir 1. April ;-)
Servus aus dem Salzkammergut
Franz
AW: String verändern
03.07.2004 15:33:51
Russi
Lieber Franz,
wer lesen kann ist gefährlich, und wer es nicht kann, scheinbar auch ;-)
Es ist ein "Codeausschnitt" (da dürfen wohl ein paar End if's und Wend's fehlen) und sicher weiß ich, wie ich ein ";" vor den Betreff bekomme, aber wenn Du Dir die Beispielzeilen anschaust, siehst Du, dass ich auf normalen Weg ein ";" vor PLZ, welches in der Regel zehn Zeichen vor BETR sitzt, setze. Nur wenn PLZ innerhalb von zehn Zeichen nicht vor "BETR" erscheint, funktionieren meine folgenden "Substitute"-Funktionen nicht richtig. Ergo der kleine Umweg.
Es geht bei dem Codeausschnitt auch nur um die in der Frage angesprochene Stringproblematik.
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige