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
请注意,如果存在对现有列的引用,它们将会中断并且不会被更新。