2016-05-13 22 views
1

我有一張3列30行的表格。我正在嘗試編寫一個VBA宏,它將第一行右移1格,第二行2格右移等等。用VBA以不同的給定範圍移動每一行

例如,這

AAA 
BBB 
CCC 

應該是這樣的:

AAA 
    BBB 
    CCC 

我試過到目前爲止,只能將整個選擇的範圍:

Sub Macro() 
Set Table = Application.InputBox("Select table", Title:="Table", Type:=8) 
Table.Cut Table.Offset(0, 1) 
End Sub 

回答

2

這應該做你想要什麼:

Sub Macro() 

Set Table = Application.InputBox("Select table", Title:="Table", Type:=8) 
Set Dest = Application.InputBox("Select destination", Title:="Destination", Type:=8) 

For i = 1 To Table.Rows.Count 
    For j = 1 To Table.Columns.Count 
     Table.Cells(i, j).Copy Dest.Cells(i + j - 1, i + 1) 
    Next j 
Next i 
End Sub 
1

之前:

enter image description here

的代碼:

Sub asdfg() 
    Dim N As Long, i As Long 

    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For i = 1 To N 
     Cells(i, 1).Cut (Cells(i, i + 1)) 
    Next i 
End Sub 

和後:

enter image description here

EDIT#1:

要偏移整個行使用:

Sub zxcvb() 
    Dim N As Long, i As Long 

    N = Cells(Rows.Count, "A").End(xlUp).Row 
    For i = 1 To N 
     Range(Cells(i, 1), Cells(i, i)).Insert Shift:=xlToRight 
    Next i 
End Sub 

前:

enter image description here

後:

enter image description here

+0

謝謝,但它不工作多列 – Lanza

+0

@Lanza你想讓整行轉移嗎? –

+0

我想將選區的第一行向右移1格,第二行2格向右移等等。 – Lanza