
我不久前遇到過這段程式碼,它運行得很好,但我想對其進行一些修改以反映我想要的內容。我已經修改了這段程式碼一段時間,到目前為止我無法自己解決它並需要幫助。
原問題連結: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
如果我有更多列需要按照此程式碼目前對資料進行排序的方式進行排序,我該如何更改此程式碼。因為目前它只處理「B」列左側和右側的 3 列。
我不知道我是否含糊,但我真的不知道該如何解釋我的問題。任何和所有的幫助將不勝感激。
答案1
你改變這部分程式碼 -
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, 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)
或者,換句話說,你抵消了n在哪裡n將其放入函數中可以是正數或負數(右/左或下/上)offset()
。