2つの列をループして状態を確認する


0

列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

一致が一致しなかったExcel行をmsgboxで削除できますか?
-user582635

@ user582635編集を参照してください。
スコットクレーナー

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

また、デバッグのヒントです。2つのIFブランチに2 つの異なるメッセージがある場合、非常に役立ちます。それ以外の場合、どのIFブランチがトリガーされたのかをどのようにして知るのですか?


...私は上記のコードを試してみましたが、私は私が比較てるの欄に「1」を持っていたにもかかわらず、それはまだ私の行のMSGの空白を表示
user582635

私のためにうまくいった。データを確認してください。
テイリン

これは私が取ったであろうルートですが、スコットはコラム文字を使用する方が初心者にとっては簡単です。+1
レイスタファリアン
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.