vba - 如何选择并删除每第三列

标签 vba excel

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

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

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

在此之后,我使用 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

那么该怎么做呢?

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

这是我在您很好的回答后实现的代码(感谢: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

最佳答案

反转方向。从右边开始删除。我想你知道如何修改你的代码

关于vba - 如何选择并删除每第三列,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19265508/

相关文章:

vba - Excel-VBA 命名范围行总和

apache-flex - 弹性 : Write data to file to open in Excel

java - 使用java创建带有Web查询链接的excel文件

Python - 使用现有格式保存新的 Excel 工作表

c# - 以编程方式获取 Excel 列的最后一个非空单元格

c# - Excel VBA 到 C#

vba - 命名范围内的通配符

VBA:VLookUp 多个结果

excel - VBA XML : Find root nodes for multiple namespaces

c# - 使用 C# 在 Excel 中查找表格边界