基本上我希望将一个位置的列移动到另一个位置。
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
我需要将第3列移到右边的末尾。
这是我到目前为止所尝试的:
Sub moveColumn()
With ActiveSheet
Excel.Columns(3).Cut
Excel.Columns(6).PasteSpecial
End With
End Sub
但是这个方法不起作用,因为它得到运行时错误'1004'。
非常感谢任何帮助。
答案 0 :(得分:10)
Pastespecial不适用于Cut。你可以这样做:
Columns(3).Cut Range("F1")
Columns(3).Delete Shift:=xlToLeft 'if you want to delete the empty column
答案 1 :(得分:10)
对于那些想知道的人,可以在不替换目标列的内容的情况下执行此操作。
例如,要剪切B列并将其插入F列的左侧,您可以使用
Columns("B").Cut
Columns("F").Insert Shift:=xlToRight
您还可以使用列索引替换指定的列标题,以便尝试(Columns("B")
变为Columns(2)
)
答案 2 :(得分:6)
给出的其他答案的问题是剪切/粘贴技术使用剪贴板覆盖其中的任何内容,并且如果另一个也使用剪贴板的程序正在运行,则使程序无法正常运行(例如同一个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
请注意,如果存在对现有列的引用,它们将会中断并且不会更新。