Excel関数 逆引き集 | TRUE/FALSEを数値化 → —

Excel VBA Excel
スポンサーリンク

概要

Excel では、TRUE / FALSE をそのまま数値として扱えない場面がよくあります。

しかし、
TRUE → 1、FALSE → 0
に変換できれば、

  • 条件を満たす件数を数える
  • 条件を満たす行だけ合計する
  • FILTER や COUNTIF の代わりに柔軟な集計を作る

といった“高度なロジック”が一気に書きやすくなります。

そこで使うのが –(ダブルマイナス) です。

これは Excel の世界でよく使われる「TRUE/FALSE を数値化するための変換スイッチ」です。


TRUE/FALSE を数値化する仕組み

ダブルマイナス(–)とは?

--(TRUE)  → 1  
--(FALSE) → 0

という動きをします。

Excel の内部では、

  • TRUE = 1
  • FALSE = 0

として扱えるのですが、
そのままでは数値として計算に使えないことがあります。

そこで — を前につけることで、強制的に数値化 します。


基本の書き方

TRUE/FALSE を 1/0 に変換する

=--(A2>100)

A2>100 が TRUE → 1
A2>100 が FALSE → 0


ISNUMBER と組み合わせる

=--ISNUMBER(A2)

A2 が数値 → 1
数値でない → 0


実務でよく使うパターン

条件を満たす件数を数える(COUNTIF より柔軟)

例:A2:A100 の中で「100 以上」の件数を数える

=SUM(--(A2:A100>=100))

動きはこうです。

  1. (A2:A100>=100) が TRUE/FALSE の配列を作る
  2. -- で TRUE=1、FALSE=0 に変換
  3. SUM で合計 → 条件を満たす件数になる

COUNTIF では書けない複雑な条件も、この方法なら自由自在です。


複数条件を満たす件数を数える(AND の数値化)

例:A列が100以上 かつ B列が「有効」の件数

=SUM(--(A2:A100>=100) * --(B2:B100="有効"))

ポイント:

  • (A2:A100>=100) → TRUE/FALSE
  • (B2:B100="有効") → TRUE/FALSE
  • -- で 1/0 に変換
  • 1×1 の行だけが 1 になる → その件数を SUM で合計

これは COUNTIFS の代わりに使える強力な方法です。


OR 条件の件数を数える(OR の数値化)

例:C列が「A」または「B」の件数

=SUM(--((C2:C100="A") + (C2:C100="B") > 0))

仕組み:

  • (C=”A”) → TRUE/FALSE
  • (C=”B”) → TRUE/FALSE
  • TRUE=1、FALSE=0 として足し算
  • 合計が 1 以上なら「A または B」
  • 最後に — で 1/0 に変換して SUM

COUNTIF では OR 条件が書きにくいので、
この方法は実務で非常に役立ちます。


FILTER と組み合わせて「条件一致の行だけ抽出」

例:A列が数値の行だけ抽出

=FILTER(A2:C100, --ISNUMBER(A2:A100))

ISNUMBER が TRUE の行だけが抽出されます。


SUMPRODUCT と組み合わせる(高度な集計)

例:A列が100以上 かつ B列が「有効」の行の C列合計

=SUMPRODUCT(--(A2:A100>=100), --(B2:B100="有効"), C2:C100)

SUMPRODUCT は配列計算に強いため、
— と組み合わせると COUNTIFS 以上の柔軟な集計が可能になります。


よくあるつまずき

TRUE/FALSE のままでは SUM できない

=SUM(A2:A100>=100)   'これは動かない

TRUE/FALSE は数値ではないため、SUM できません。
— をつける必要があります。


— をつける位置は「条件式の前」

正:

=--(A2>100)

誤:

=-(A2>100-)   '意味が変わる

配列計算が必要な場合は SUMPRODUCT が便利

Excel のバージョンによっては、
配列計算に Ctrl+Shift+Enter が必要なことがあります。

SUMPRODUCT を使うとその必要がありません。


例題

問題1

A2>100 の判定結果(TRUE/FALSE)を 1/0 に変換する式を書いてください。

=--(A2>100)

問題2

A2:A100 の中で「100以上」の件数を数える式を書いてください。

=SUM(--(A2:A100>=100))

問題3

B2:B100 の中で「文字列 ‘A’ または ‘B’」の件数を数える式を書いてください。

=SUM(--((B2:B100="A") + (B2:B100="B") > 0))

問題4

A列が100以上 かつ B列が「有効」の行数を数える式を書いてください。

=SUM(--(A2:A100>=100) * --(B2:B100="有効"))

問題5

A列が100以上 かつ B列が「有効」の行について、
C列の値を合計する SUMPRODUCT の式を書いてください。

=SUMPRODUCT(--(A2:A100>=100), --(B2:B100="有効"), C2:C100)

まとめ

TRUE/FALSE を数値化する –(ダブルマイナス) は、
Excel の中でも“上級者がよく使う必須テクニック”です。

基本形

--(条件式)

よく使う応用

SUM(--(条件式))                     ' 件数カウント
SUM(--(条件1) * --(条件2))          ' AND 条件
SUM(--((条件1)+(条件2)>0))          ' OR 条件
SUMPRODUCT(--(条件), 値範囲)        ' 条件付き合計

これを使いこなせると、
COUNTIF / COUNTIFS では書けない複雑な集計が自由自在になります。

Excel の“ロジック力”を一段引き上げるテクニックなので、
ぜひあなたのシートでも活用してみてください。

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