我刚刚开始学习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
*删除列 *转到下一列并重复剩下的列
答案 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'因此变量