
Ich bin vor einiger Zeit auf diesen Code gestoßen. Er funktioniert einwandfrei, aber ich möchte ein paar Änderungen daran vornehmen, damit er meinen Wünschen entspricht. Ich habe eine Weile an diesem Code herumgebastelt und konnte ihn bisher nicht alleine auf die Reihe kriegen und brauche Hilfe.
Link zur ursprünglichen Frage:https://stackoverflow.com/questions/19815321/text-to-rows-vba-excel
Option Explicit
Sub Main()
Columns("B:B").NumberFormat = "@"
Dim i As Long, c As Long, r As Range, v As Variant
For i = 1 To Range("B" & Rows.Count).End(xlUp).Row
v = Split(Range("B" & i), "/")
c = c + UBound(v) + 1
Next i
For i = 2 To c
Set r = Range("B" & i)
Dim arr As Variant
arr = Split(r, "/")
Dim j As Long
r = arr(0)
For j = 1 To UBound(arr)
Rows(r.Row + j & ":" & r.Row + j).Insert Shift:=xlDown
r.Offset(j, 0) = arr(j)
r.Offset(j, -1) = r.Offset(0, -1)
r.Offset(j, 1) = r.Offset(0, 1)
Next j
Next i
End Sub
Wie kann ich diesen Code ändern, wenn ich mehr Spalten habe, die so sortiert werden müssen, wie dieser Code die Daten derzeit sortiert? Denn im Moment verarbeitet er nur 3 Spalten links und rechts von Spalte „B“.
Ich weiß nicht, ob ich mich vage ausdrücke oder nicht, aber ich weiß wirklich nicht, wie ich mein Problem erklären soll. Ich bin für jede Hilfe dankbar.
Antwort1
Sie ändern diesen Teil des Codes -
r.Offset(j, 0) = arr(j)
r.Offset(j, -1) = r.Offset(0, -1)
r.Offset(j, 1) = r.Offset(0, 1)
um die zusätzlichen Spalten einzuschließen -
r.Offset(j, 0) = arr(j)
r.Offset(j, -1) = r.Offset(0, -1)
r.Offset(j, 1) = r.Offset(0, 1)
r.Offset(j, 2) = r.Offset(0, 2)
r.Offset(j, 3) = r.Offset(0, 3)
r.Offset(j, 4) = r.Offset(0, 4)
Oder anders gesagt: Sie kompensieren durchNWoNkann positiv oder negativ sein (rechts/links oder unten/oben), indem es in die offset()
Funktion eingefügt wird.