Live-Forum - Die aktuellen Beiträge
Anzeige
Archiv - Navigation
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Übersicht Verzeichnisse
Vorheriger Thread
Rückwärts Blättern
Nächster Thread
Vorwärts blättern
Anzeige
HERBERS
Excel-Forum (Archiv)
20+ Jahre Excel-Kompetenz: Von Anwendern, für Anwender
792to796
792to796
Aktuelles Verzeichnis
Verzeichnis Index
Verzeichnis Index
Übersicht Verzeichnisse
Inhaltsverzeichnis

Text aufspalten in verschiedene Spalten

Text aufspalten in verschiedene Spalten
16.08.2006 11:06:35
Sven
Hallo zusammen,
ich hab das Problem, einer Zeichenkette ("C:\programme\aaa\bbb\ccc\dateiname.csv") in einer Spalte.
Jetzt sollen "aaa", "bbb", "ccc" und der Dateiname (ohne Endung) jeweils in eine eigene Spalte kommen. Zeilen, die nicht mit csv enden, sollen gelöscht werden.
Ich hab jetzt angefangen, mit dem Makrorekorder vorzuturnen. Aber es gibt leider viele verschiedene "aaa's" "bbb's" und "ccc's". Also wird der Code entsprechend lang und sonderlich performant ist das ganze auch nicht.
Leider kenn ich mich syntaktisch noch nicht so sehr aus in VBA, als das ich alleine jetzt mit verschiedenen For, if und while Schleifen zum Ziel käme. Mit der texttocolumns-Methode kam ich nicht zurecht. Hat jemand eine Idee wie ich das ganze performanter und kürzer entwickeln kann?
Danke schon mal !
Gruß

5
Beiträge zum Forumthread
Beiträge zu diesem Forumthread

Betreff
Datum
Anwender
Anzeige
AW: Text aufspalten in verschiedene Spalten
16.08.2006 11:22:11
Jutta
Hallo Sven,
kannst Du nicht erst mal die Daten, die nicht mit *.csv enden über Filter löschen und dann den Rest mit "Text in Spalten" aufteilen ? Ganz ohne VBA...
Gruß
Jutta
AW: Text aufspalten in verschiedene Spalten
17.08.2006 00:43:46
MichaV
Hallo,
markiere die betreffenden Zellen der Spalte und lasse dieses Makro rüberlaufen:


Option Explicit
Sub TeileAuf()
Dim a As Long '1. Zeile der Markierung
Dim b As Long ' letzte Zeile der Markierung
Dim c As Integer 'Spalte der Markierung
Dim r As Integer 'aktuelle Zeile
Dim t As String
Dim e() As String
Const z = "\" 'Trennzeichen
Const x = 2 'nur Text nach dem x-ten Trennezeichen ausgeben
If Selection.Columns.Count <> 1 Then MsgBox "Nur eine Spalte wählen!": Exit Sub
a = Selection.Row
b = a + Selection.Rows.Count - 1
c = Selection.Column
For r = b To a Step -1 'von unten nach oben
    'Text holen
    t = Cells(r, c)
    If Not t Like "*.csv" Then
        'löschen, wenn Endung nicht *.csv
        Cells(r, c).EntireRow.Delete
    Else
        'Text vor dem x-ten Trennzeichen löschen
        t = Replace(t, z, Chr(0), 1, x)
        t = Mid(t, InStrRev(t, Chr(0)) + 1)
        'Endung löschen und Text aufsplitten
        e = Split(Left(t, Len(t) - Len(".csv")), z)
        'eintragen
        Range(Cells(r, c + 1), Cells(r, c + 1 + UBound(e))) = e
    End If
Next r
End Sub


Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Text aufspalten in verschiedene Spalten
17.08.2006 15:44:32
Sven
Hallo,
da bin ich wieder. Erstmal vielen Dank für die Antworten. Ich hab mich selbst noch mal dran gesetzt und hab die Split Funktion entdeckt. Dafür fällt jetzt eine neue Frage an.
Aufteilen kann ich jetzt die Zeichenkette mit
Public

Sub SplitAndJoin()
Dim sText As String, vX As Variant, i As Long
sText = [B5]
vX = Split(sText, "\")
For i = 0 To UBound(vX)
vX(i) = i + 1 & ". " & vX(i)
vX (i) ' spaltenweise schreiben
Next i
sText = Join(vX, ",")
MsgBox sText
End Sub

vX(i) liefert die einzelnen Werte wie ich sie brauche. Nur wie bekomme ich die jetzt spaltenweise abgespeichert, sprich: Teil bis zum ersten "\" in Spalte C, 2.Teil in Spalte D usw.?
Gruß!
Anzeige
AW: Text aufspalten in verschiedene Spalten
17.08.2006 19:00:36
MichaV
Hallo,
was denkst Du, was in der Zeile

'eintragen
Range(Cells(r, c + 1), Cells(r, c + 1 + UBound(e))) = e

passiert?
Hier noch eine deutlichere Variante:


Option Explicit
Sub erklaere()
Const s = "ich bin ein text"
Dim t() As String
t = Split(s, " ")
Range("a1:d1") = t
'wenn Du die Grenze des Datenfeldes nicht kennst:
Range(Cells(2, 1), Cells(2, 1 + UBound(t))) = t
End Sub


Gruß- Micha
PS: Rückmeldung wäre nett.
Anzeige
AW: Text aufspalten in verschiedene Spalten
18.08.2006 09:28:57
Sven
Hallihallo,
okay, danke - jetzt hab ich's geschnallt. Manchmal dauert's halt länger. Aber jetzt das nächste Problem. Er liest zwar korrekt die String-Elemente ein, nur springt er nicht in die nächste Zeile, wenn alle String-Elemente aus z.B. "B2" abgearbeitet ist sondern schreibt ein String-Element "zeilen"-mal in die Spalten.
Public

Sub SplitAndJoin()
Dim sText As String, vX As Variant, i As Long, j As Long
Zeile = ActiveSheet.Range("B65535").End(xlUp).Offset(1, 0).Row 'die Zeile mit der letzten beschriebenen Zelle
For j = 1 To Zeile
sText = Range("B" & j)
vX = Split(sText, "\")
For i = 0 To UBound(vX)
vX(i) = i + 1 & ". " & vX(i)
'vX(i) spaltenweise schreiben
Range(Cells(j & i), Cells(j & i & UBound(vX))) = vX(i)
Next i
Next j
End Sub

Anzeige

312 Forumthreads zu ähnlichen Themen

Anzeige
Anzeige
Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige

Beliebteste Forumthreads (12 Monate)

Anzeige
Anzeige
Anzeige