我有这样一张床单:
G M N O
Warrant/Rights 08-06-2020
NA
Share 1
Share
Share 1
Share 4,5 15-02-2026
Share 06-01-2026
Share 4 15-03-2023
Share 30-09-2027
然后,我尝试按日期将G
列与Share
列进行比较。这样,如果在列O
中输入的日期不足的百分比,则程序将清除类型O
之后的M to O
中的所有单元格。我有这样的东西:
Share
在删除条件Sub aaa()
x1 = Application.WorksheetFunction.CountIfs(Range("G2:G" & rows.Count), "Share")
y1 = Application.WorksheetFunction.CountIfs(Range("G2:G" & rows.Count), "Share", Range("O2:O" & rows.Count), "")
If x1 > 0 Then
z1 = (y1 / x1) * 100
Dim LR24 As Long, i24 As Long
LR24 = Range("G" & rows.Count).End(xlUp).Row
For i24 = LR24 To 1 Step -1
If (Range("G" & i24).Value = "Share" And z1 < 90) Then Range("M" & i24 & ":O" & i24).Clear
Next i24
End If
End Sub
之后,一切正常,但是为了保护自己不被0除,我必须将其放入。您知道为什么它不起作用吗?
答案 0 :(得分:1)
您可以删除If...End If
语句,而将z1 = ...行替换为:
z1 = IIf(x1 = "", 0, (y1 / x1) * 100)
它未经测试,所以我不知道它将如何影响其余的代码,但是您不会在该行上看到Div / 0错误。
它使用If
函数(而不是Iif
(Inline If或Instant If的缩写,取决于您询问的人)。
没有理由您也不能以相同的方式使用标准If..Then
语句,该语句仅位于一行的周围,而不是阻止代码段的执行。
MSDN:IIf
Function
维基百科:IIf
Panopticon:"IIF, a True Ternary Operator and Backwards Compatibility"