У меня есть набор данных, где каждый третий столбец один и тот же. Я хочу оставить только первый столбец, а другие, которые должны быть одинаковыми, должны быть удалены.Как выбрать и удалить каждый третий столбец
Сначала я пробовал этот код, но он удалял неправильные столбцы, потому что в каждом цикле позиции других столбцов были изменены.
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
После этого я попробовал другой, используя Союз. Она не работает, а также:
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
Удаление диапазона в цикле худший способ пойти об этом. Я бы рекомендовал посмотреть [ЭТО] (http://stackoverflow.com/questions/19241905/vba-conditional-delete-loop-not-working/19241990#19241990) –