micmac
Goto Top

Excel 2007 Stringwurst zerlegen

Guten Tag,

Ich habe folgendes Problem:

Mir liegt eine Tabelle mit ca. 2000 Zeilen vor, die eine Spalte enthält, in deren Zellen ein String
in einer Wurst abgelegt ist:

Bsp.

Greinweg11EnnsdorfTeilewestlichesNiederösterreich4050

Ich suche nun nach einer Möglichkeit, diese "Wurst" zu zerteilen, und zwar in der Form, dass der String

bei Wechsel Kleinbuchstabe auf Zahl, Zahl auf Großbuchstabe, Kleinbuchstabe auf Großbuchstabe und

Kleinbuchstabe auf Zahl in entsprechende Spalten aufgeteilt wird.


Also: Greinweg 11 | Ennsdorf | Teile westliches Niederösterreich | 4050 |

Google hilft leider nicht weiter, daher hoffe ich auf Hilfe von Euch.
Hat jemand eine Idee ?

Lg

Michael

Content-Key: 287486

Url: https://administrator.de/contentid/287486

Printed on: April 16, 2024 at 22:04 o'clock

Member: BlackVictory
Solution BlackVictory Nov 04, 2015, updated at Nov 11, 2015 at 13:23:27 (UTC)
Goto Top
also mit

Function ErsterGrossbuchstabe(Zeichenkette As String) As Integer
Dim zeichen As String
Dim x As Integer
Dim laenge As Integer
laenge = Len(Zeichenkette)
For x = 1 To laenge
    zeichen = Mid(Zeichenkette, x, 1)
    Select Case zeichen
        Case "A" To "Z"  
            ErsterGrossbuchstabe = x
            Exit For
        Case "Ä", "Ö", "Ü"  
            ErsterGrossbuchstabe = x
            Exit For
    End Select
Next
End Function


kannst du nach dem ersten Großbuchstaben in dem Feld suchen.
Member: Lochkartenstanzer
Solution Lochkartenstanzer Nov 04, 2015, updated at Nov 11, 2015 at 13:23:30 (UTC)
Goto Top
Moin,

cat exceldatei.alt | sed "s/[A-Z]/|&/g" >exceldatei.neu

sollte es (fast) tun. face-smile
Mitglied: 122990
Solution 122990 Nov 04, 2015, updated at Nov 11, 2015 at 13:23:36 (UTC)
Goto Top
Sub SplitLines()
    Set regex = CreateObject("vbscript.regexp")  
    regex.Global = True: regex.IgnoreCase = False: regex.MultiLine = True
    regex.Pattern = "(?=([a-z][A-Z])|([a-z]\d+)|(\d[A-Z]))"  

    With ActiveSheet
        For Each cell In .Range("A1:A" & .Cells(Rows.Count, "A").End(xlUp).Row)  
            Set matches = regex.Execute(cell.Value)
            Dim SplitArray()
            ReDim SplitArray(matches.Count)
            P = 0: I = 0
            For Each myMatch In matches
                SplitArray(I) = Mid(cell.Value, P + 1, myMatch.FirstIndex + 1 - P)
                P = myMatch.FirstIndex + myMatch.Length + 1
                I = I + 1
            Next
            SplitArray(I) = Mid(cell.Value, P + 1)
            cell.Resize(1, UBound(SplitArray) + 1).Value = SplitArray
        Next
    End With
End Sub

Macht aus
A
Greinweg11EnnsdorfTeilewestlichesNiederösterreich4050

schon mal das hier:

ABCDEF
Greinweg11EnsdorfTeilewestlichesNiederösterreich4050

Die Spalten kannst du dir dann nach Bedarf mit Formeln zusammenfassen.
Das Teilewestliches lässt sich natürlich jetzt nicht trennen (zwei Kleinbuchstaben).

Aber woher hast du solche komischen Daten, klingt mir eher danach als Hätte da ein Noob versucht das aus einem Browser rauszukopieren.
Gruß grexit
Member: micmac
micmac Nov 05, 2015 at 11:01:51 (UTC)
Goto Top
Liebe Leute, ich bedanke mich herzlichst. Und ja, diese Datei stammt von einem
Azubi, der nicht wirklich wusste was er tat.
Ich finde Eure Lösungen toll, die Reduktion aufs wesentliche (Ausschlußverfahren), das ist es!

Danke nochmals

L G

Michael
Mitglied: 122990
122990 Nov 05, 2015 updated at 11:38:46 (UTC)
Goto Top
Und ja, diese Datei stammt von einem Azubi, der nicht wirklich wusste was er tat.
[Sarkasmus Modus an] Dann hätt ich für den "Stift" eine schöne Aufgabe => zu Fuß zerlegen lassen face-wink beim nächsten mal macht er's dann bestimmt besser, wenn er dann am Abend mit rauchenden Fingern und wunden Augen nach Hause stolpert face-big-smile [Sarkasmus Modus aus]
Member: micmac
micmac Nov 05, 2015 at 12:20:32 (UTC)
Goto Top
Er lässt "BesteGrüsse" und "DanKe1DaNke2Danke" ausrichten und verneigt sich vor seinem neuen Excel-Gott .
Ehre sei Dir, oh grexit in der excelsischen Höhe. face-smile

lg

Michael