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