如何选择和删除每个第3列

And*_*ski 3 excel vba excel-vba

我有一组数据,其中每第三列是相同的.我想只留下第一列,必须删除其他相同的列.

起初我尝试了这个代码,但它删除了错误的列,因为在每个循环中其他列的位置都被更改了.

Sub DeleteMultipleColumns()
Dim i As Integer
Dim LastColumn As Long
Dim ws As Worksheet

Set ws = Sheets("Arkusz2")
LastColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column
ws.Activate
For i = 4 To (LastColumn - 2)
   ws.Columns(i).Select
   Selection.Delete Shift:=xlToLeft
   i = i + 3
Next i
End Sub
Run Code Online (Sandbox Code Playgroud)

在此之后我尝试了另一个使用Union.它不起作用:

Sub DeleteMultipleColumns()
Dim i As Integer
Dim LastColumn As Long
Dim ws As Worksheet

Set ws = Sheets("Arkusz2")
LastColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column
ws.Activate
For i = 4 To (LastColumn - 2)
   Application.Union.Columns(i).Select
   i = i + 3
Next i
Selection.Delete Shift:=xlToLeft
End Sub
Run Code Online (Sandbox Code Playgroud)

那怎么办呢?

我的新想法是尝试使用数组.我还有其他选择吗?

这是我在你的好答案之后实现的代码(谢谢:sam092,meohow,mattboy):

Sub DeleteMultipleColumns()
Dim i As Integer
Dim LastColumn As Long
Dim ws As Worksheet
Application.ScreenUpdating = False
Set ws = Sheets("Arkusz2")
LastColumn = ws.Cells(1, Columns.Count).End(xlToLeft).Column - 2
For i = LastColumn To 4 Step -3
   ws.Columns(i).Delete Shift:=xlToLeft
Next i
Application.ScreenUpdating = True
End Sub
Run Code Online (Sandbox Code Playgroud)

sam*_*092 5

扭转方向.从右侧开始删除.我想你知道如何修改你的代码

  • 你真的认为这是一个很好的答案吗?这对我来说听起来不错;) (5认同)