アプリ版:「スタンプのみでお礼する」機能のリリースについて

初心者の質問です。
エクセルでⅭ列にはAとBの差額が計算されています。
Ⅽ1からⅭ6の全てのセル(6個)がそれぞれ0である場合にOKとなるマクロを教えてください。
+と-が同額の場合、Ⅽ8の合計が0となるので、Ⅽ8の値で判断できない場合があるためです。
 
Sub 確認()
If ActiveSheet.Range("C1:C6").Value = 0 Then  ←この箇所がエラーになります。
MsgBox "OK"
Else
MsgBox "NG"
End If
End Sub

よろしくお願いします。

「連続する複数のセル値がすべて0であること」の質問画像

A 回答 (3件)

マクロを使わない方法もあります。

セルC9などの適当な空いてるセルに以下の式を入れます。

=IF(COUNTIF(C1:C6,"=0")=6,"OK","NG")

できるだけマクロは使わないで、ワークシート関数で対応する方法を考えるべきだと私は思っています。

ちなみにVBAでRangeを使った場合、今のような式でエラーにならないのは含まれるセルが1個の時だけです。セル範囲を指定した場合はセル範囲の個数と同じ大きさの配列変数が必要になるし、その中身を調べるには1個ずつループで取り出して比較するしかないので、面倒です。

というわけでこのCOUNTIF関数をVBAから使えればそれが一番楽ちんだということになります。以下みたいにすればできます。

If Application.WorksheetFunction.CountIf(Range("C1:C6"), "=0")=6 Then
    • good
    • 1
この回答へのお礼

ご丁寧にありがとうございました。
アドバイスを踏まえて考えてみると、別の列を使うことなく「=IF(COUNTIF(C1:C6,"=0")=6,"OK","NG")」の式をC8で使えばC1~C6までの結果を判定できすます。
マクロで計数不一致を判断して帳票の印刷可否を制御する方法と合わせて利用します。

お礼日時:2019/05/02 08:43

シートに余裕があれば、空いているところにC列の二乗を出力し、それを合計して0ならば・・・。

    • good
    • 0
この回答へのお礼

ありがとうございました。今は、別の列に0でない場合には1とする条件を入れ、合計欄でチェック。
条件式を入れた列を非表示にして運用しています。マクロで一括処理する方法はないかと色々考えたのですが、知識不足でした。
今後ともよろしくお願いします。

お礼日時:2019/05/02 08:44

If WorksheetFunction.CountIf(ActiveSheet.Range("C1:C6"),0) = 6 Then



0 の個数で判定されては?
    • good
    • 0
この回答へのお礼

早速にありがとうございました。これで上手くできました。
今後ともよろしくお願いします。

お礼日時:2019/05/02 08:44

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人はこんなQ&Aも見ています


このQ&Aを見た人がよく見るQ&A