Excel宏移动列

Dar*_*ylF 6 excel vba

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

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)


Eri*_*ikE 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
Run Code Online (Sandbox Code Playgroud)

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