我有这样一张纸:
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中是输入日期不足的百分比,则程序将在类型Share之后清除M to O中的所有单元格。我有这样的事情:
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在移除条件If x1> 0 Then后,一切都可以工作,但我必须把它放在这里,以保护自己不被除以0。你知道为什么它不起作用吗?
发布于 2018-06-21 09:32:32
您可以删除您的If...End If语句并替换您的z1=.与:
z1 = IIf(x1 = "", 0, (y1 / x1) * 100)它是未经测试的,所以我不知道它将如何影响您的其余代码,但您将不会得到该行的Div/0错误。
它使用的不是If,而是Iif函数(内联If或即时If的缩写,取决于您询问的对象)。
您没有理由不能以同样的方式使用标准的If..Then语句,只位于一行附近,而不是阻止代码部分的执行。
更多资料:
https://stackoverflow.com/questions/50964035
复制相似问题