Excel VB Code erweitern

Entilzha

Lt. Commander
Registriert
Feb. 2010
Beiträge
1.298
Hi,
ich habe eine Datenliste die nach dem Muster in Spalte A: ID-User#123456789 aufgebaut ist, diese wird per:
Code:
Sub SubstringTest()
Const ROWMAX = 100
Dim i, nRow As Long

For nRow = 1 To ROWMAX
  i = InStr(1, Cells(nRow, 1), "#")
  If i > 0 Then
     Cells(nRow, 2) = Mid(Cells(nRow, 1), 1, i - 1)
     Cells(nRow, 3) = Mid(Cells(nRow, 1), i + 1)
   End If
Next
End Sub
in ID-User und 123456789 in die Spalte B und C zerlegt.

Jetzt wird das um eine weitere # und Text dahinter erweitert und sieht dann nach dem Muster: ID-User#123456789#FooBar aus.

Ich möchte dann auch die dritte Stelle in einer neben Spalte zerlegen.
Zu guter letzt kommt die Datenliste nicht in Spalte A sondern in B Spalte und die zerlegten Werte sollen daneben in C, D und E Spalte ausgegeben werden.

Kann mir bitte jemand den Code anpassen und erweitern.
 
Sieht aus wie eine CSV. Warum speicherst du die Daten nicht in eine CSV und lädst sie anschließend wieder, das # als Trennzeichen?
 
vander schrieb:
Sieht aus wie eine CSV. Warum speicherst du die Daten nicht in eine CSV und lädst sie anschließend wieder, das # als Trennzeichen?
Nein es ist keine.

Es gibt viele Möglichkeiten wie man das lösen kann zB. per Daten und Text in Spalten und schon hat man den String zerlegt.

Es geht mir um die VB Lösung.
Danke
 
Verstehst Du grundsätzlich den VBA Code?
i = InStr(1, Cells(nRow, 1), "#") liefert die erste Position des # im string zurück.
j = InStr(i, Cells(nRow, 1), "#") liefert dann die position des zweiten #. Usw usf.
 
Servus,

hab eben etwas mit deinem "Code" rumgespielt :Freak

Code:
Sub SubstringTest()

Dim i
Dim nRow As Long
Dim letztezeile As String

letztezeile = WorksheetFunction.CountA(Sheets("Tabelle1").Range("B:B"))

'MsgBox letztezeile

For nRow = 1 To letztezeile
i = Split(Cells(nRow, 2), "#")
  
     Cells(nRow, 3) = i(0)
     Cells(nRow, 4) = i(1)
     Cells(nRow, 5) = i(2)
  
Next

End Sub

- Habe den instring-befehl durch split ersetzt
- die Suche läuft in der Spalte B
- Ausgabe ist C,D,E
- und die If-Bedingung ist draußen
- Aushilfe für die If-Bedingung, ich lasse die gefüllten Zellen in der B-Spalte zählen, und nehme das als Endpunkt für die For-Schleife

Wie weit das für dich durchhält musst du testen, und natürlich auch anpassen.
-> Vor allem "...letztezeile blabla Sheets("xyz")..."


Viel Erfolg
 
Danke euch für die Hilfe.
Ich habe es jetzt etwas anders gemacht und es macht das was es soll :-)
 
Zurück
Oben