我在网上发现了一个有效的代码,但我没有按照我的目的改变它。我的电子表格中的每个条目都包含不同的公式以及Iferror
函数,目的是使包含错误消息的单元格显示为空白。例如,假设单元格E3依赖于具有特定公式的单元格F3(为了澄清,可以说F3 / 2.5)。很明显,如果单元格F3中没有条目,则在单元格E3中将显示错误消息。因此,我使用IFERROR
函数将单元格显示为空白。单击宏按钮后我想删除空白行时出现困难。但是,由于该单元格确实有一个条目(一个公式反过来又返回一条错误消息),该单元格不会删除。此外,我需要在3个不同的选择范围内运行此代码。请有人帮忙!我找到的代码来自这个论坛的另一个主题,是:
`sub foo()
dim r As Range, rows As Long, i As Long
Set r = ActiveSheet.Range("A1:Z50")
rows = r.rows.Count
For i = rows To 1 Step (-1)
If WorksheetFunction.CountA(r.rows(i)) = 0 Then r.rows(i).Delete
Next
End Sub`
非常感谢!
答案 0 :(得分:0)
编辑:如果语句添加到自动过滤器,因为它在没有空格时删除了一行
您需要在电子表格中设置一个包含以下sumproduct的列:
=SUMPRODUCT((LEN(A1:F1)>0)*1)
这是计算有多少单元格的值长度大于0,因此不是空白,当我测试一小部分假数据时,您需要相应地调整单元格引用。
在此之后你可以循环:
For i = rows To 1 Step (-1)
If Cells(i,"G") = 0 Then r.rows(i).Delete 'My formula is in column "G"
Next
或设置自动过滤器并删除可见单元格的整行:
Dim lrow As Integer
If Not WorksheetFunction.CountIf(Range("G:G"), "0") = 0 Then
Range("A1:G1").AutoFilter
Range("A1:G1").AutoFilter Field:=7, Criteria1:="0"
lrow = Cells(rows.Count, 7).End(xlUp).Row + 1
Range("G2:G" & lrow).SpecialCells(xlCellTypeVisible).EntireRow.Delete
Range("A1:G1").AutoFilter
End If
使用前导列计算此问题的唯一问题是,如果您需要补充公式,那么您需要补充公式,但是您可以在代码中使用自动完成。