我试图想出另一种写这条线的方法。目前,如果任何范围AA2:AA7 = 1,我可以调用代码OneLineItem。问题是,我需要设置的参数是,如果这些单元中只有一个等于1而且只有一个其他单元大于1。 AA2 = 1,AA7 = 200(例如)。我遇到的一个问题是AA2 = 1,AA3 = 100,AA7 = 200.但是我只需要一个单元格等于1而另一个单元格需要> 1而其他所有单元格都是0.如果该标准满足,然后调用代码OneLineItem。谢谢。
If ActiveSheet.Range("AA2") = 1 Or ActiveSheet.Range("AA3") = 1 Or
ActiveSheet.Range("AA4") = 1 Or ActiveSheet.Range("AA5") = 1 Or
ActiveSheet.Range("AA6") = 1 Or _
ActiveSheet.Range("AA7") = 1 Then
Call OneLineItem
Else
答案 0 :(得分:1)
有6个数字:
所以我们可以使用COUNTIF()来查找它是否遵循模式
Dim OneTrue As Boolean
Dim MoreTrue As Boolean
Dim RestTrue As Boolean
RestTrue = Application.WorksheetFunction.CountIf([AA2:AA7], 0) = 4 [AA2:AA7].Cells.Count - 2
OneTrue = Application.WorksheetFunction.CountIf([AA2:AA7], 1) = 1
MoreTrue = Application.WorksheetFunction.CountIf([AA2:AA7], ">1") = 1
If RestTrue And OneTrue And MoreTrue Then
Call OneLineItem
End If
另一种方法是嵌套IF:
IF Application.WorksheetFunction.CountIf([AA2:AA7], 0) = [AA2:AA7].Cells.Count - 2 Then
IF Application.WorksheetFunction.CountIf([AA2:AA7], 1) = 1 Then
'we do not need the third, If the others are true then the last must be true.
'Unless you can have negative numbers. Then you can add the third.
Call OneLineItem
End If
End If
第二个优点是它只需要COUNTIF,直到找到一个False返回,然后它不再做了。而无论如何,第一个都是三个。