我在這方面有點菜鳥,想完善我的 xlsx 檔案,但沒有找到任何容易的方法。假設我有這張桌子:
一個 | 乙
![列 [i-1] 的 VBA 中的 For 回圈](https://img.uj5u.com/2022/06/09/ba4d9aa66638443c96ea80c3b6c953c7.png)
我希望結果是這樣的:
對于 i 從 0 到 4 (i )
列 A = B[i-1]
所以結果看起來像
![列 [i-1] 的 VBA 中的 For 回圈](https://img.uj5u.com/2022/06/09/2c65619c3fbc429280ac0a763bd1dfee.png)
uj5u.com熱心網友回復:
而不是回圈遍歷所有行,您可能
- 將源值分配給陣列,
- 通過
Application.Index添加新的第一個元素重新排列它們 - 將結果寫回位于源區域左側的列。
Sub ExampleCall()
'a) define source range
Dim rng As Range
Set rng = Sheet1.Range("B1:B5") ' << change to project's sheet Code(Name)
'b) assign rearranged values to variant array by adding a 1st element 0
Dim newOrder As Variant
newOrder = Evaluate("Row(1:6)-1") ' ~~> {0;1;2;3;4;5}
Dim v As Variant
v = Application.Index(rng.Value, newOrder, 1)
v(1, 1) = 0 ' enter value 0 to first (=new) element
'c) write to left neighbour column
rng.Offset(0, -1).Value = v
End Sub
另一種方法是只復制B1:B4到A2:A5并更改A1為 value 0。
uj5u.com熱心網友回復:
可能是一個簡單的回圈,如:
For i = 1 To 5
Cells(i,1) = Cells(i-1,2)
Next i
uj5u.com熱心網友回復:
可能像下面這樣的東西?
For i = 1 To 5
If i = 1 Then
ActiveSheet.Range("A" & i).Value = 0
Else
ActiveSheet.Range("A" & i).Value = ActiveSheet.Range("B" & i - 1).Value
End If
Next i
轉載請註明出處,本文鏈接:https://www.uj5u.com/ruanti/487653.html
