根据行值删除列

时间:2018-12-08 03:16:22

标签: excel vba

我有一张包含数据的表。我想根据行值删除列。

我的代码没有停止,当我点击逃逸时,它已从我的起始列中删除了所有列。

我想检查从列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

1 个答案:

答案 0 :(得分:3)

除了注释中的所有要点外,主要问题是循环逻辑已关闭。您的外循环应该是列,而内循环应该是数组。但是使用-lQt5Network可以将其简化为一个循环。

也许是这样的:

Select Case