循环遍历两列来检查条件

循环遍历两列来检查条件

我想循环遍历 P 列并查看其中是否有一个单元格包含数字“1”,然后同时循环遍历 N 列以查看同一行/列中是否也有数字“1”,如果 N 列中没有“1”,同时 P 列中有数字“1”,则应该出现错误消息。

这是我开始做的但似乎效果不太好。

    For Each a In Range("p6:p40")
    If a.Value = "1" Then
        For Each c In Range("n6:n40")
            If c.Value = "" Then
            msgbox("check again")
            Else
            msgbox("check again")
            End If
        Next
    End If
Next

答案1

您可以将循环更改为常规 for 循环:

For i = 6 To 40
    If Range("P" & i) = "1" Then
        If Range("N" & i) <> "1" Then
            MsgBox "P = 1 but N did not on row " & i
        End If
    Else

    End If
Next

答案2

如果要检查 P 列所检查的同一行中的值,则不需要对 N 列进行另一个循环。请尝试以下方法:

Sub test()

For Each a In Range("p6:p40")
    If a.Value = "1" Then
       If a.Offset(0, -2).Value = "" Then
           MsgBox ("blank in row " & a.Row)
       Else
           MsgBox ("not blank in row" & a.Row)
       End If
    End If
Next

End Sub

另外,还有一个调试技巧:如果你有两个不同的两个 IF 分支的消息。否则,您如何知道刚刚触发了哪个 IF 分支?

相关内容