Excelmacros移动列

基本上我正在寻找移动一列到另一个位置。

561 DISK_GROUP_003 0 545 1 561 Disk_Group_iS 95 84144 80210 561 DISK_GROUP_iS 99 26335 26304 1415 t1_200ea 93 8804 8203 1415 t2_30010k 35 59846 21121 1415 t3_1tb72k 19 184941 36590 1415 t3_3tb72k 86 258635 224328 5018 t1_200ea 98 9905 9802 5018 t2_30015k 89 39987 35986 5018 t2_60015k 67 59984 40700 5018 t3_1tb72k 89 87567 78807 5018 t3_2tb72k 84 94412 79620 

我需要将第三列移到最后。

这是我迄今为止所尝试的:

 Sub moveColumn() With ActiveSheet Excel.Columns(3).Cut Excel.Columns(6).PasteSpecial End With End Sub 

但是这个方法不能运行,因为它运行时错误“1004”。

任何帮助将非常感激。

Pastespecial不适用于Cut。 你可以这样做:

 Columns(3).Cut Range("F1") Columns(3).Delete Shift:=xlToLeft 'if you want to delete the empty column 

对于那些想知道的,可以做到这一点,而无需更换目标列的内容。

例如,要剪切B列并将其插入列F的左侧,可以使用

 Columns("B").Cut Columns("F").Insert Shift:=xlToRight 

您也可以使用列索引replace命名的列标题,以便品尝(所以Columns("B")变为Columns(2)

给出的其他答案的问题是,剪切/粘贴技术使用剪贴板覆盖任何内容,并使程序无法正常运行,如果另一个也使用剪贴板的程序正在运行(例如另一个相同的VBA项目)。

相反,这样做:

 Application.CutCopyMode = False ' don't want an existing operation to interfere Columns("F").Insert XlDirection.xlToRight Columns("F").Value = Columns("B").Value ' this would be one greater if to the right of F Columns("B").Delete 

请注意,如果存在对现有列的引用,它们将会中断并且不会被更新。