Microsoft Excel

Herbers Excel/VBA-Archiv

Text in Zellen trennen


Betrifft: Text in Zellen trennen von: Peter R.
Geschrieben am: 26.06.2017 14:19:27

Hallo liebe Excel Profis,

Habe zwar rudimentäre VBA Kenntnisse, scheitere aber seit Tagen klaglos (die Forenbeiträge habe ich mittlerweile fast alle durch  ) an folgender Problemstellung.
Ich bekomme 1 x täglich eine Excel Datei von einer Datenschnittstelle.
In den ca. 28000 Datensätzen befindet sich eine Spalte deren Inhalt ein textstring mit u.a. Format und unterschiedlicher Länge ist.
Dieser String sollte nun aufgeteilt werden und mit jew. 2 Trennzeichen („-„ und „/“ )getrennt werden (Überschreiben der Werte in der Spalte mit den neunen Werten).
Die zu trennenden Werte sollen immer an gleicher Stelle getrennt werden.
Bsp.
AB00019999X#BB00019999Z#CB00019999X
Oder
AB00019999Y
Oder
AB00019999X#BB00019999Z

Nach Trennung sollte das dann folgendermaßen aussehen (Die alten Werte der Spalte können überschrieben werden):
AB0001-9999/BB0001-9999/CB0001-9999
Oder
AB0001-9999
Oder
AB0001-9999/BB0001-9999

Kann mir hier bitte jemand helfen das Ganze in ein Makro zu packen ?
Wäre furchtbar nett.
Besten dank im Voraus

Viele Grüße
Peter

  

Betrifft: AW: Text in Zellen trennen von: Chris
Geschrieben am: 26.06.2017 14:54:52

hast du immer eine 9999 vor dem letzten Buchstaben?


  

Betrifft: AW: Text in Zellen trennen von: Peter R.
Geschrieben am: 26.06.2017 15:08:08

Hi Chris,
leider nein. Kann jede Zahl von 0001 bis 9999 sein.
Es handelt sich um Seriennummern, die den o.g. Wert annehmen können. (von 0001 bis 9999)
Die beiden Buchstaben kennzeichnen die möglichen Varianten (immer 2 Buchstaben).
Die komplette Nummer(Variante+Seriennummern bis Seriennummer).
Der letzte Buchstabe ist ohne Bedeutung und kann weg. z.B. das "X" bei AB00019999X
nach dem # kommt eine neue Nummer(Variante+Seriennummern bis Seriennummer), falls mehrere Varianten vorhanden sind.

VG
Peter


  

Betrifft: AW: Text in Zellen trennen von: Chris
Geschrieben am: 26.06.2017 15:26:19

reicht dir das?

Sub trennen()

Dim SN As Range
Dim teile, teil
Dim antwort As String

For Each SN In Range("A1:A28") 'Bereich hier anpassen
    teile = Split(SN.Value, "#")
    For Each teil In teile
        teil = Left(teil, 6) & "-" & Mid(teil, 7, 4)
        antwort = antwort & teil & "/"
    Next
    SN.Value = Left(antwort, Len(antwort) - 1)
    antwort = ""
Next

End Sub



  

Betrifft: AW: Text in Zellen trennen von: Peter R.
Geschrieben am: 26.06.2017 15:44:16

Hi Chris,
das ist ja suuuper.
Kann ich dir ein Bier ausgeben ?
Versuche schon seit Tagen auf einen grünen Zweig zu kommen und bin kläglich gescheitert.

Die Formatierung ist genau das was ich gesucht habe.

Ein kleines Problem ist noch aufgetaucht. das Makro bricht ab, sobald es auf eine leere Zelle trifft.
(Sind momentan 190 leere Zellen von 28507).

VG
Peter


  

Betrifft: AW: Text in Zellen trennen von: Chris
Geschrieben am: 26.06.2017 15:54:29

schreib mal
On Error Resume Next könnte helfen..

Sub trennen()

Dim SN As Range
Dim teile, teil
Dim antwort As String
On Error Resume Next

For Each SN In Range("A1:A28") 'Bereich hier anpassen
    teile = Split(SN.Value, "#")
    For Each teil In teile
        teil = Left(teil, 6) & "-" & Mid(teil, 7, 4)
        antwort = antwort & teil & "/"
    Next
    SN.Value = Left(antwort, Len(antwort) - 1)
    antwort = ""
Next

End Sub



  

Betrifft: AW: Text in Zellen trennen von: Peter R.
Geschrieben am: 26.06.2017 16:03:44

und wie das hilft.
Perfekt.
Vielen lieben herzlichen Dank


  

Betrifft: AW: alle Varianten zeigen von: Fennek
Geschrieben am: 26.06.2017 15:23:50

Hallo,

mit RegEx sollte dies möglich sein, aber es wäre hifreich, wenn eine Bsp-Datei mit möglichst vielen Varianten und der gewünschten Lösung bereitgestellt würde.

mfg


  

Betrifft: AW: alle Varianten zeigen von: snb
Geschrieben am: 26.06.2017 21:32:19

Sub M_snb()
   Selection.Replace "?#", "/"
   Selection.Replace "?19999", "-19999"
End Sub



Beiträge aus den Excel-Beispielen zum Thema "Text in Zellen trennen"