VBA检查Value是否在条件列表中

时间:2017-12-14 23:37:26

标签: excel vba if-statement

Sub PullUniques()
LastRowColumnA = Cells(Rows.Count, 1).End(xlUp).Row
Dim rngCell As Range

For Each rngCell In Range("A1:A" & LastRowColumnA)
    If WorksheetFunction.CountIf(Range("B1:B" & LastRowColumnA), rngCell) <> 0 And _
       Range(WorksheetFunction.CountIf(Range("B1:B" & LastRowColumnA), rngCell) <> 0).Offset(0, 1).Row <= 0 Then
        MsgBox "Please correct Item" & rngCell & " Amount Data"
    End If
Next

此代码正在查找B列,以查看A列是否具有任何相同的值。 如果我不使用if语句的第二行,代码工作正常,但当我尝试添加第二个条件列A匹配B而列C的值不大于0时,它不起作用。如何使这段代码有效?

1 个答案:

答案 0 :(得分:0)

我想你要检查一下,

1)如果A中的值存在于B列和
2)如果为TRUE,则列C中的值小于或等于0。
如果这就是你需要的,下面的代码应该可行。

Sub PullUniques()
LastRowColumnA = Cells(Rows.Count, 1).End(xlUp).Row
Dim rngCell As Range

For Each rngCell In Range("A1:A" & LastRowColumnA)
    If WorksheetFunction.CountIf(Range("B1:B" & LastRowColumnA), rngCell) <> 0 And _
       Range("C" & rngCell.Row).Value <= 0 Then
       MsgBox "Please correct Item" & rngCell & " Amount Data"
    End If
Next

End Sub

但是,如果你的情况是, 1)如果A中的值与B中的值相同
2)如果为TRUE,则列C中的值小于或等于0。
然后你不需要使用countif

Sub PullUniques()
LastRowColumnA = Cells(Rows.Count, 1).End(xlUp).Row
Dim rngCell As Range

For Each rngCell In Range("A1:A" & LastRowColumnA)
Debug.Print Range("B" & rngCell.Row).Value & "/" & Range("C" & rngCell.Row).Value
    If Range("B" & rngCell.Row).Value = rngCell And _
       Range("C" & rngCell.Row).Value <= 0 Then
       MsgBox "Please correct Item" & rngCell & " Amount Data"
    End If
Next

End Sub