Excel VBA:循环遍历范围并删除所有0值的列

时间:2017-09-08 16:17:31

标签: excel

我刚刚开始学习VBA,我一直困在一个问题上,希望有人可以提供帮助。

我想要做的是首先遍历动态范围中的每一行,我从58列中的第8列开始从另一张表中复制,并检查该行中每个单元格中的值是否为“0”或另一个值。

如果值为“0”,那么我希望它转到下一行并检查该值是否也为零。如果所有单元格值都为0,则继续执行此操作直到最后一行;如果单元格值不是0,则继续执行到下一列。

如果列中的所有单元格都为0,我想在转到下一列之前删除该列。对范围内的所有列重复此过程。

最终结果将是删除初始范围中只有0值的所有列,而具有值的列将保留。

有人可以帮忙吗?

以下是我目前的代码:

Dim CopyRange as Range 
Dim iRow as Range

Set CopyRange = Range("H2", Range("H2").End(xldown))

For each iRow in CopyRange

if iRow = "0" then
activecell.offset(1,0).select
else

end if 

next iRow

*删除列 *转到下一列并重复剩下的列

1 个答案:

答案 0 :(得分:0)

试试这个简单的代码,

Sub searchForZero()
Dim i As Long, j As Long
For i = 58 To 8 Step -1
    j = Cells(Rows.Count, i).End(xlUp).Row
    If Application.WorksheetFunction.CountIf(Range(Cells(1, i), Cells(j, i)), 0) = j - 1 Then
        Columns(i).Delete
    End If
    Next i
End Sub

此代码从第58列到第8列循环,并删除其中包含全部0的列。

注意: - 仅当您的数据从第1行开始时才有效。如果不是,您必须修改' j'因此变量