parseLine mit variablen?

plexton

Grünschnabel
Servus,

ist es möglich, eine Zelle in Excel auszulesen und dann Teilbereiche in die nächst freie Zeile in einem anderen Arbeitsblatt in mehrere Zellen auszugeben

Code:
Worksheets("Tabelle1").Columns("A").Parse _
    parseLine:="                 [xxx][xxxxxxxxx][xxxx]", _
    Destination:=Worksheets("Tabelle1").Range("E2")
Hier wird die Zelle A1 ausgelesen und ab dem Feld E2 eingefügt.

parseLine liest lediglich die Anzahl der Zeichen, die innerhalb der [] stehen (in dem Fall die 3, bzw. 8 und 4, Zeichen) und lässt alle Zeichen außerhalb dieser [ ] aus, egal ob das Text oder Leerzeichen sind.

Mein Problem ist, dass die Breite der 1. und 3. [ ] variable sind und zwar brauche ich immer den Bereich ab dem 15. Zeichen bis zum ersten " (". Dann kommt ein fester 8 stelliger Bereich und dannach kommt wieder ein ") " und alles was dannach kommt soll in den dritten Bereich.

Nun such ich schon den ganzen Morgen lang in der MS VB Hilfe und googel mich durch die grenzenlosen Welten des Internets und finde einfach keine Lösung um variable Größen mit VB aus einer Excel-Zelle auszulesen.

Konkret zu meinem Vorhaben:

Das ist der Teil, den ich auslesen möchte:

Tabelle 1:

Ankunftszeit: Köln (14:12:56) Meier
Ankunftszeit: München (16:12:56) Müller
Ankunftszeit: Berlin (00:22:22) Schmitz


Gewünschtes Ergebnis:

Code:
Ort     Uhrzeit  Name
------------------------
Köln    14:12:56 Meier
München 16:12:56 Müller
Berlin  00:22:22 Schmitz

Kann man so etwas mit VB in Excel via Makro realisieren? Denn mit parseLine finde ich keine Möglichkeit variable Breiten auszulesen.

thx 4 reply & help

Plexton
 
Zuletzt bearbeitet:
Hallo plexton,

ja kann man. In etwa so:
Code:
Public Sub OwnParse()
    Dim nCounter                    As Integer
    Dim szCellValue                 As String
    Dim szSplitResult()             As String

    For nCounter = 1 To 3
        szCellValue = Worksheets("Tabelle1").Cells(nCounter, 1).Value
        szSplitResult = Split(szCellValue, " ")
        Worksheets("Tabelle2").Cells(nCounter, 1).Value = szSplitResult(1)
        szSplitResult(2) = Replace(szSplitResult(2), "(", "")
        szSplitResult(2) = Replace(szSplitResult(2), ")", "")
        Worksheets("Tabelle2").Cells(nCounter, 2).Value = szSplitResult(2)
        Worksheets("Tabelle2").Cells(nCounter, 3).Value = szSplitResult(3)
    Next nCounter
End Sub

Gruß
Das Orakel
 
Oh, Danke.

Bis das nicht immer die selbe Zelle geparst wurde, sondern pro count eine Zelle tiefer, hat es hinterher funktioniert.
Hät ja nicht gedacht, dass das dann so viel code benötigt.

Nochmals Dange ;)
 
Jetzt tut sich bei mir doch noch ein, bzw. zwei Fragen auf:

Wie kann ich einen Wert wiedergeben, wenn ich weiß, was über, bzw. links neben des zu übernehmenden Wertes steht:

z.B.

Code:
  A          B
1 Geburtstag 08.08.2005
2 Telefon
3 0190 11111
4 Straße     Musterstraße 1

Da möchte ich die Tabelle jetzt nach Geburtstag durchsuchen und weiß, dass der Wert eine Zelle links daneben steht und bei Telefon steht der Wert eine Zelle darunter.

Des weiteren ergibt sich das Problem, das wenn ich bereits einen eingelesen habe, die Werte vom zweiten überschrieben werden. Wie kann ich das einstellen, dass automatisch die nächste freie Zeile genommen wird, wenn sich ein neuer Datensatz ergibt?

thx 4 help
 
Spontan würde ich sagen: Zu deiner Suchfunktion, so wie du das vorhast, ist das glaube ich nicht möglich, doch kannst du eine Suchfunktionstarten, falls deine Telenummern, immer im gleichen Format ist, das er dir zB Suchen nach: "xxx xxx xx xx" anzahl zeichen oder so, das mit dem leeren feld, würde ich spontan mit einer if not empty oder if not isnull, abfrage machen, und dann halt einfach die spalte um 1 erhöhen wenn geprüfte spalte nicht leer ist

Hoffe, du kannst damit was anfangen

mfg
zioP
 
Tja so einfach ist das für mich nicht.

auch oben mit dem auslesen klappt nicht so ganz, wenn in dem Ort ein Leerzeichen vorkommt. Wie z.B. Bad Bevensen, das haut die ganze parserei auseinander und gibt völlig falsche Werte aus.

Und coden in VBA kann ich auch nicht. Bei mir reicht es gerade mal zu html und php aber der Rest sind für mich alles Bömische Dörfer :(

Muss mal weiter suchen
 
Zurück