Supportnet Computer
Planet of Tech

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


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


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

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


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

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

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

hi all :-)

sollten beide genutzt werden waere der functionsname zu aendern :-))

gruss nighty

Ich möchte kostenlos eine Frage an die Mitglieder stellen:


Ähnliche Themen:


Suche in allen vorhandenen Beiträgen: