Daten aus Excel-Zellen teilen
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 schreiben
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
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
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 vom 25.09.2019, 14:43 Options
Hallo Norman,
warum dazu ein Makro?
Das macht doch Menü > Daten > Text in Spalten viel einfacher!
Gruß
Rainer
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
Zitat:
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 vom 25.09.2019, 16:21 Options
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
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 Function
Antwort 7 von nighty vom 25.09.2019, 17:51 Options
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
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 Function
Antwort 8 von nighty vom 25.09.2019, 17:52 Options
hi all :-)
sollten beide genutzt werden waere der functionsname zu aendern :-))
gruss nighty