2012-02-08 84 views
1

下面是我不包括數據:列數據移動到正確的用Excel VBA

A B  c .... F    G 

1 test vb1  testing1  open 
2 test1 vb2  testing1  close 
2 test2 vb3  testing1 
4 test3 vb4  testing1 

我要到F列數據移動到B柱和B柱的數據轉移到右側,所以在B將被C.

我該如何處理Excel VBA編程。

感謝,

Chaitu

+2

您是否嘗試過手動記錄宏並查看代碼? – assylias 2012-02-08 14:11:37

回答

8

試試這個:

Option Explicit 

Sub MoveColumns() 

With ActiveSheet 
    .Columns("F:F").Cut 
    .Columns("B:B").Insert Shift:=xlToRight 
    .Columns("C:C").Cut 
    .Columns("E:E").Insert Shift:=xlToRight 
End With 
Application.CutCopyMode = False 
End Sub 

要使用此:

  • 打開Visual Basic編輯器:工具>宏> Visual Basic編輯器
  • 插入一個模塊(右鍵單擊VBAProject和Ins ert> Module)
  • 將上面的代碼粘貼到這個新模塊中。

然後,您可以執行從Excel代碼:工具>宏...>宏...

[編輯]另一種嘗試沒有複製粘貼

Option Explicit 

Sub copyWithArray() 
Dim lLastrow As Long 
Dim aValues As Variant 

With ActiveSheet 
    lLastrow = .Cells(.Rows.Count, "AE").Row 
    'store data from the column F 
    aValues = .Range("F1:F" & lLastrow).Value 
    '"move" data a column further 
    .Range("C1:AE" & lLastrow).Value = .Range("B1:AD" & lLastrow).Value 
    'copy data from column C to column B 
    .Range("B1:B" & lLastrow).Value = .Range("C1:C" & lLastrow).Value 
    'restore data copied from column F to column B 
    .Range("B1:B" & lLastrow).Value = aValues 
End With 
End Sub 
+0

我有列upto AE.Is有可能沒有削減和插入每列 – user569125 2012-02-08 14:30:05

+0

@ user569125:我編輯了我的答案與另一個嘗試,但我真的認爲這不會比第一個更快 – JMax 2012-02-08 14:42:54

+0

你是什麼意思通過「是否有可能沒有剪切和插入每一列」? Jmax的第一種方法不會剪切並插入每一列。它會剪切並粘貼一列,並將所有其他列移動到右側。你試過了嗎? – Reafidy 2012-02-08 22:57:17

1

so before B will C.

我不得不重讀多次才能真正理解你想說的話。我可能還沒有弄清楚它的正確性。 :)你是說這個嗎?請確認。

「那麼B就目前到位的C爲C向右移動1個地方,當你在B位置插入F」

如果是,那麼你需要的是剛剛從J最大的代碼的前兩行

Sub Sample() 
    Columns("F:F").Cut 
    Columns("B:B").Insert Shift:=xlToRight 
End Sub 
+0

這真的很有幫助! – henry 2014-05-08 14:51:51