根据各种条件(大于0)运行的if语句

时间:2018-11-08 15:58:00

标签: excel vba excel-vba

我正在编写一个if语句,该语句基于5个独立的条件是否大于零。

我想根据0条条件> 0、1条条件> 0,2等等...最多5条条件> 0来创建6个独立的if语句。解决方案。

我要追求的是:

If 0 Criteria > 0 Then
    Do this
ElseIf 1 Criteria > 0 Then
    Do this
ElseIf 2 Criteria > 0 Then
    Do this
....
ElseIf 5 Criteria > 0 Then
    Do this
End If

3 个答案:

答案 0 :(得分:1)

您可以将SUMPRODUCT用于一系列条件的评估

Option Explicit
Public Sub test()
    Dim criteria1 As Long, criteria2 As Long,criteria3 As Long
    Dim criteria4 As Long, criteria5 As Long, arr()
    Dim numGreaterThanZero As Long

    criteria1 = -1
    criteria2 = 3
    criteria3 = 0
    criteria4 = 5
    criteria5 = 6

    arr = Array(criteria1, criteria2, criteria3, criteria4, criteria5)

    numGreaterThanZero = Application.Evaluate("=SUMPRODUCT(--({" & Join$(arr, ";") & "}>0))")

    Select Case numGreaterThanZero

    Case 1
    Case 2
    Case 3
    Case 4
    Case 5

    End Select
End Sub

如果您实际上只是想单独测试条件(而不是累计计数)并首先退出True,则:

Select Case True

Criteria1 > 0
'Do Something

Criteria2> 0
'Do something else

End Select

答案 1 :(得分:1)

(未经测试)

Dim c as long

c = 0

If criteria1 = 0 then CritNo = CritNo + 1
If criteria2 = 0 then CritNo = CritNo + 1
If criteria3 = 0 then CritNo = CritNo + 1
If criteria4 = 0 then CritNo = CritNo + 1
If criteria5 = 0 then CritNo = CritNo + 1
If criteria6 = 0 then CritNo = CritNo + 1

Select case CritNo 
    Case 1
         Do stuff
    Case 2
         Do other stuff
    ...
    Case Else
         Do nothing
End select

答案 2 :(得分:1)

这是另一个主意:

Select Case Abs(criteria1 > 0) + Abs(criteria2 > 0) + Abs(criteria3 > 0) + Abs(criteria4 > 0) + Abs(criteria5 > 0)
   Case 0
      MsgBox "0 criteria"
   Case 1
      MsgBox "1 criteria"
   Case 2
      MsgBox "2 criteria"
   Case 3
      MsgBox "3 criteria"
   Case 4
      MsgBox "4 criteria"
   Case 5
      MsgBox "5 criteria"
End Select
相关问题