Supportnet / Forum / Tabellenkalkulation
Daten aus Excel-Zellen teilen
Frage
Hi.
Ich habe folgendes Problem
24000 Datensätze mit jeweils einer Spalte, wo Werte enthalten sind, die jetzt auf einzelne Spalten aufgesplittet werden.
Trennzeichen ist ein /.
--------------------------------------
Public Sub SplittFunktion()
Dim adresse() As String, Basiszelle As String
Dim i As Byte
Dim feld1 As Variant, feld2 As Variant, feld3 As Variant, feld4 As Variant, feld5 As Variant, Feld6 As Variant
Dim nCounter As Integer
Basiszelle = Range("a1")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b1") = feld1
Range("c1") = feld2
Range("d1") = feld3
Range("e1") = feld4
Range("f1") = feld5
Range("g1") = Feld6
Next nCounter
End Sub
-----------------------
Das hab ich auf Basis eines Codes aus diesem Forum umgebastelt und das funktioniert auch, um A1 so aufzuspalten, wie es sein soll.
Wie schaff ich das, dass der das auch in a2, a3 a4 usw. macht?
Ich hab leider keine Ahnung von Schleifenprogrammierung ....
Wer kann mir helfen?
Besten Dank
Norman
Antwort 1 von Leviathan1981
Achja, die Schleifenfragmente sind aus Versehen drin
Zitat:
Public Sub SplittFunktion()
Dim adresse() As String, Basiszelle As String
Dim i As Byte
Dim feld1 As Variant, feld2 As Variant, feld3 As Variant, feld4 As Variant, feld5 As Variant, Feld6 As Variant
Basiszelle = Range("a1")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b1") = feld1
Range("c1") = feld2
Range("d1") = feld3
Range("e1") = feld4
Range("f1") = feld5
Range("g1") = Feld6
End Sub
Public Sub SplittFunktion()
Dim adresse() As String, Basiszelle As String
Dim i As Byte
Dim feld1 As Variant, feld2 As Variant, feld3 As Variant, feld4 As Variant, feld5 As Variant, Feld6 As Variant
Basiszelle = Range("a1")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b1") = feld1
Range("c1") = feld2
Range("d1") = feld3
Range("e1") = feld4
Range("f1") = feld5
Range("g1") = Feld6
End Sub
Antwort 2 von Leviathan1981
Zitat:
Public Sub SplittFunktion()
Dim adresse() As String, Basiszelle As String
Dim i As Byte
Dim feld1 As Variant, feld2 As Variant, feld3 As Variant, feld4 As Variant, feld5 As Variant, Feld6 As Variant
Basiszelle = Range("a1")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b1") = feld1
Range("c1") = feld2
Range("d1") = feld3
Range("e1") = feld4
Range("f1") = feld5
Range("g1") = Feld6
Basiszelle = Range("a2")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b2") = feld1
Range("c2") = feld2
Range("d2") = feld3
Range("e2") = feld4
Range("f2") = feld5
Range("g2") = Feld6
Basiszelle = Range("a3")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b3") = feld1
Range("c3") = feld2
Range("d3") = feld3
Range("e3") = feld4
Range("f3") = feld5
Range("g3") = Feld6
End Sub
Public Sub SplittFunktion()
Dim adresse() As String, Basiszelle As String
Dim i As Byte
Dim feld1 As Variant, feld2 As Variant, feld3 As Variant, feld4 As Variant, feld5 As Variant, Feld6 As Variant
Basiszelle = Range("a1")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b1") = feld1
Range("c1") = feld2
Range("d1") = feld3
Range("e1") = feld4
Range("f1") = feld5
Range("g1") = Feld6
Basiszelle = Range("a2")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b2") = feld1
Range("c2") = feld2
Range("d2") = feld3
Range("e2") = feld4
Range("f2") = feld5
Range("g2") = Feld6
Basiszelle = Range("a3")
adresse() = Split(Basiszelle, "/")
feld1 = adresse(0)
feld2 = adresse(1)
feld3 = adresse(2)
feld4 = adresse(3)
feld5 = adresse(4)
Range("b3") = feld1
Range("c3") = feld2
Range("d3") = feld3
Range("e3") = feld4
Range("f3") = feld5
Range("g3") = Feld6
End Sub
Das muss man doch in Schleifenform bekommen. So, dass die Basiszelle immer 1 dazuaddiert und bei der Beschrieben Zelle ebenfalls um 1 erhöht wird.
Antwort 3 von rainberg
Hallo Norman,
warum dazu ein Makro?
Das macht doch Menü > Daten > Text in Spalten viel einfacher!
Gruß
Rainer
warum dazu ein Makro?
Das macht doch Menü > Daten > Text in Spalten viel einfacher!
Gruß
Rainer
Antwort 4 von Leviathan1981
Ach herje, des is ja ein Traum. Ich hab halt beim Googlen nach Daten trennen ausschließlich VAB-Hinweise gefunden. Die von Dir genannte Funktion tuts natürlich auch :) Besten Dank
Antwort 5 von Leviathan1981
Zitat:
1,5K zu 1,5 | K
4,7K zu 4,7 | K
1,5K zu 1,5 | K
4,7K zu 4,7 | K
Gibts denn, wenn wir grad mal so schön dabei sind, eine Funktion die Zahlen von Buchstaben trennen kann und beide Werte in verschiedene Zellen befördert?
Antwort 6 von nighty
hi all :-)
wenn es flexibel sein sollte haett ich diese function anzubieten
gruss nighty
beispiele
tel.123
waere die erste zahl gefordert,setzt man den parameter auf 1
=Sumtext(A1;1)
waere 123
michael tel.123berlin 23456
waere die zweite zahl gefordert,setzt man den parameter auf 2
=Sumtext(A1;2)
waere 23456
usw.
einzufuegen in ein allgemeines modul
wenn es flexibel sein sollte haett ich diese function anzubieten
gruss nighty
beispiele
tel.123
waere die erste zahl gefordert,setzt man den parameter auf 1
=Sumtext(A1;1)
waere 123
michael tel.123berlin 23456
waere die zweite zahl gefordert,setzt man den parameter auf 2
=Sumtext(A1;2)
waere 23456
usw.
einzufuegen in ein allgemeines modul
Function Sumtext(Zellen As Range, zaehler1 As Integer) As String
Dim Zelle As Range
Dim zeich1 As Integer
Dim schalter As Boolean
Dim zaehler3 As Integer
ReDim zaehler2(Len([Zellen])) As String
zaehler3 = 1
Application.Volatile
If zaehler1 > Len([Zellen]) Then zaehler1 = Len([Zellen])
For zeich1 = 1 To Len([Zellen])
If Mid([Zellen], zeich1, 1) Like "[0-9,]" = True Then
zaehler2(zaehler3) = zaehler2(zaehler3) & Mid([Zellen], zeich1, 1)
schalter = True
End If
If schalter = True And Mid([Zellen], zeich1, 1) Like "[0-9,]" = False Then
zaehler3 = zaehler3 + 1
schalter = False
End If
Next zeich1
Sumtext = zaehler2(zaehler1)
End FunctionAntwort 7 von nighty
hi all :-)
mit text ist genauso zu verfahren :-)
gruss nighty
tel.123michael456
waere das zweite wort gefordert,setzt man den parameter auf 2
=Sumtext(A1;2)
waere michael
123michael456test789karl5,8
waere das dritte wort gefordert,setzt man den parameter auf 3
=Sumtext(A1;3)
waere karl
mit text ist genauso zu verfahren :-)
gruss nighty
tel.123michael456
waere das zweite wort gefordert,setzt man den parameter auf 2
=Sumtext(A1;2)
waere michael
123michael456test789karl5,8
waere das dritte wort gefordert,setzt man den parameter auf 3
=Sumtext(A1;3)
waere karl
Function Sumtext(Zellen As Range, zaehler1 As Integer) As String
Dim Zelle As Range
Dim zeich1 As Integer
Dim schalter As Boolean
Dim zaehler3 As Integer
ReDim zaehler2(Len([Zellen])) As String
zaehler3 = 1
Application.Volatile
If zaehler1 > Len([Zellen]) Then zaehler1 = Len([Zellen])
For zeich1 = 1 To Len([Zellen])
If Mid([Zellen], zeich1, 1) Like "[A-Z,.a-zäöüßAÖÜ]" = True Then
zaehler2(zaehler3) = zaehler2(zaehler3) & Mid([Zellen], zeich1, 1)
schalter = True
End If
If schalter = True And Mid([Zellen], zeich1, 1) Like "[A-Z,.a-zäöüßÄÖÜ]" = False Then
zaehler3 = zaehler3 + 1
schalter = False
End If
Next zeich1
Sumtext = zaehler2(zaehler1)
End FunctionAntwort 8 von nighty
hi all :-)
sollten beide genutzt werden waere der functionsname zu aendern :-))
gruss nighty
sollten beide genutzt werden waere der functionsname zu aendern :-))
gruss nighty

