AW: Split - Funktion?
28.03.2013 13:00:15
fcs
Hallo Peter,
du hättest ja ruhig die Frage von gester fortsetzen können. Du musst dann nur darauf achten, dass du bei deiner weiteren Frage/Anwort deine Frage ggf. noch ofen setzt (Kästchen ankreuzen).
bei den per Split erzeugten Arrays hat das 1. Element immer den Index-Zähler 0.
Wie bereits von Scheldon erwähnt, musst du die Werte nicht auf ein 2. Array umschreiben.
In der Summe sollte es etwa wie folgt aussehen.
Beim Start des Makros muss das Blatt mit den Ausgangsdaten das aktive Blatt sein oder du musst die Objektvariable wksQ entsprechend setzen.
Gruß
Franz
Sub Test()
Dim belegt As Worksheet, Zeile As Long
Dim wksQ As Worksheet
Dim i As Long, k As Long, dauer As Long
Dim var As Variant
Set wksQ = ActiveSheet 'Tabellenblatt mit den Ausgangsdaten
Set belegt = Worksheets("Tabelle2") 'Zieltabelle
With belegt
Zeile = .Cells(.Rows.Count, 1).End(xlUp).Row
End With
With wksQ
For i = 3 To .Cells(.Rows.Count, 1).End(xlUp).Row
For k = 2 To .UsedRange.Columns.Count
If .Cells(i, k) "" Then
var = Split(.Cells(i, k), "/")
Zeile = Zeile + 1
'Zeile - vom Eintrag, den er findet
belegt.Cells(Zeile, 1).Value = i 'Zeile des Eintrags
'Nummer - 1. aus dem String
belegt.Cells(Zeile, 2).Value = var(0) 'Spalte B
'Haus - Wert aus Spalte A
belegt.Cells(Zeile, 3).Value = wksQ.Cells(i, 1)
'Anrede - 2. aus String
belegt.Cells(Zeile, 4).Value = var(1)
'Name - 3. aus String
belegt.Cells(Zeile, 5).Value = var(2)
'Vorname - 4. aus String
belegt.Cells(Zeile, 6).Value = var(3)
'Anf. - von wann
belegt.Cells(Zeile, 7).Value = wksQ.Cells(2, k).Value
'Ende - bis wann
If .Cells(i, k).MergeArea.Address = .Cells(i, k).Address Then
dauer = 1
Else
dauer = .Cells(i, k).MergeArea.Areas(1).Columns.Count
End If
belegt.Cells(Zeile, 8).Value = wksQ.Cells(2, k + dauer - 1).Value
'zug. Monat - welcher Monat, hier nur Beispielmonat Jan 2013
belegt.Cells(Zeile, 9).Value = _
"'" & wksQ.Cells(1, k).MergeArea.Cells(1, 1).Text
'sonstiges - 5. aus String
belegt.Cells(Zeile, 10).Value = var(4)
End If
Next k
Next i
End With
End Sub