我有一张包含数据的表。我想根据行值删除列。
我的代码没有停止,当我点击逃逸时,它已从我的起始列中删除了所有列。
我想检查从列D到最后使用的列(我现在有大约100列)的第2行中的值,如果它们包含C15,C17等,则什么也不做,否则,删除列。
我只有4万行。我的范围,列和行每周都会扩展,因此我想使用VBA减少格式化时间。
Sub test()
'start
Dim LR1 As Long
Dim i As Long
Set ws = ThisWorkbook.ActiveSheet
With ws
LR1 = .Cells(2, .Columns.Count).End(xlToLeft).Column
Dim arr As Variant
Dim x
arr = Array("C15", "C17", "C19", "C20", "C21", "C22", "C23", "C24", "C25", "C28", "C29", "C30", "C32")
For x = LBound(arr) To UBound(arr)
For i = LR1 To 4 Step -1
If .Cells(2, i).Value = arr(x) Then
Else
.Columns(i).Delete
End If
Next i
Next x
End With
End Sub
答案 0 :(得分:3)
除了注释中的所有要点外,主要问题是循环逻辑已关闭。您的外循环应该是列,而内循环应该是数组。但是使用-lQt5Network
可以将其简化为一个循环。
也许是这样的:
Select Case