Excel関数 逆引き集 | 論理式のデバッグ → N

Excel VBA Excel
スポンサーリンク

概要

複雑な論理式(IF、AND、OR、IFS…)を書いているときに、

  • TRUE / FALSE のままだと、どこがおかしいか直感的に分かりにくい
  • 条件式を「数値」として扱えたら、計算や合計でチェックしやすいのに…

という場面が出てきます。

そこで使える小技が N 関数で TRUE/FALSE を 1/0 に変換してデバッグする 方法です。
N は本来「値を数値にする」関数ですが、論理式のチェックにもとても便利です。


N 関数の基本

N の動き

N 関数の書式はとてもシンプルです。

=N(値)

主な動きは次の通りです。

  • 値が数値 → そのまま数値を返す
  • 値が TRUE → 1 を返す
  • 値が FALSE → 0 を返す
  • それ以外(文字列など) → 0 を返す

論理式のデバッグでよく使うのは、
「TRUE → 1」「FALSE → 0」という変換です。

例えば、

=N(TRUE)   ' → 1
=N(FALSE)  ' → 0

この性質を使って、複雑な条件がどれだけ「TRUE になっているか」を数値で確認できます。


論理式を N で数値化してみる

単純な条件を 1/0 で見る

B2 に売上が入っていて、
「100,000 以上かどうか」をチェックしたいとします。

通常の論理式はこうです。

=B2>=100000

結果は TRUE か FALSE です。

これを N で数値化します。

=N(B2>=100000)

B2>=100000 が TRUE のとき → N(TRUE)=1
B2>=100000 が FALSE のとき → N(FALSE)=0

TRUE/FALSE のままより、
「1 なら条件を満たしている」「0 なら満たしていない」
と数字として扱えるので、合計や平均などにも利用できます。


AND / OR の結果も N でチェックする

AND の結果を 1/0 で確認

売上と利益、両方の条件を満たしているかを確認する例です。

B2:売上
C2:利益

条件:
売上 100,000 以上、利益 10,000 以上

AND を使った判定はこうです。

=AND(B2>=100000, C2>=10000)

これを N で数値化します。

=N(AND(B2>=100000, C2>=10000))

両方満たしていれば 1、どちらかだけ/どちらも満たさなければ 0。

この 1/0 を使えば、複数行にコピーしたあと、
「合計すると何件条件を満たしているか」を簡単にチェックできます。

OR の結果も同様

期限切れか未処理か、どちらか一方でも該当すれば要注意、のようなケースでも同じです。

=N(OR(A2<TODAY(), B2="未処理"))

どちらかの条件でも TRUE → 1
どちらも FALSE → 0


複数の論理式の「どこで落ちているか」を見る

複数条件を並べて 1/0 で可視化する

例えば、次の条件があるとします。

B2:売上
C2:利益
D2:ランク(”A”,”B”,”C”)

条件A:売上>=100,000
条件B:利益>=10,000
条件C:ランクが “A” または “B”

それぞれの判定を N で見てみます。

条件A の数値化:

=N(B2>=100000)

条件B の数値化:

=N(C2>=10000)

条件C の数値化:

=N(OR(D2="A", D2="B"))

この 3 列を並べておけば、

  • 1,1,1 → すべての条件を満たしている
  • 1,0,1 → 利益条件だけ満たしていない
  • 0,1,1 → 売上だけ足りない

と、「どこで落ちているか」が一目で分かります。

完成した AND 式がうまく動かないとき、
こうやって条件ごとに 1/0 で確認すると、原因が見つけやすくなります。


N を使って「条件が何件 TRUE か」を数える

フラグ列として使って SUM で合計

条件を N で 1/0 にしておけば、その列の合計は
「条件を満たした行数」になります。

例えば、E2 に

=N(AND(B2>=100000, C2>=10000))

と入れて、E列にコピーしておきます。

その上で、全体の件数を数えたいときは、

=SUM(E2:E100)

とするだけで、「条件を満たした行の数」が出ます。

このとき E列は「TRUE/FALSE ではなく 1/0」として持っているので、
SUM や AVERAGE との相性がとても良くなります。


N を IF の中で使う小技(デバッグしながら表示切替)

条件の結果を見つつラベルも返したいとき

「デバッグ中は条件の 1/0 を見たいけれど、最終的にはラベル表示にしたい」
というときは、IF と組み合わせると便利です。

例えば、売上条件の 1/0 を見たい場合に、

=IF(N(B2>=100000)=1, "対象", "対象外")

の代わりに、まずは

=N(B2>=100000)

で動作確認をしてから、
確信が持てたところで IF に戻す、という流れが分かりやすいです。


例題

問題1

B2 に売上金額が入っています。
売上が 100,000 以上のとき 1、そうでないとき 0 を返す式を、N 関数と比較演算子を使って書いてください。

=N(B2>=100000)

問題2

B2 に売上、C2 に利益が入っています。
売上>=100,000 かつ 利益>=10,000 のとき 1、それ以外は 0 を返す式を、AND と N を使って書いてください。

=N(AND(B2>=100000, C2>=10000))

問題3

A2 に期限日、B2 にステータス(”未処理” / “処理中” / “完了”)が入っています。
期限日が今日より前 もしくは ステータスが「未処理」の場合に 1、それ以外は 0 を返す式を、OR と N を使って書いてください。

=N(OR(A2<TODAY(), B2="未処理"))

問題4

B2 に売上、C2 に利益、D2 にランク(”A”,”B”,”C”)が入っています。
次の3つの条件をそれぞれ 1/0 で返す式を書いてください。
(1) 売上>=100,000
(2) 利益>=10,000
(3) ランクが “A” または “B”

=N(B2>=100000)
=N(C2>=10000)
=N(OR(D2="A", D2="B"))

問題5

E2 に =N(AND(B2>=100000, C2>=10000)) という式を入れて、E2:E100 にコピーしたとします。
「条件を満たした行数」を求める式を、E列を使って書いてください。

=SUM(E2:E100)

まとめ

N 関数は地味ですが、論理式のデバッグにとても役立ちます。

  • TRUE / FALSE を 1 / 0 に変換できる
  • 条件ごとの 1/0 を並べることで「どこで落ちているか」を可視化できる
  • フラグ列として使えば、SUM で「条件を満たした件数」がすぐ分かる

複雑な IF や AND / OR がうまく動かないとき、
まずは N で 1/0 にして「条件単位で目で見る」習慣をつけると、
原因を落ち着いて追えるようになります。

タイトルとURLをコピーしました