概要
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))
動きはこうです。
(A2:A100>=100)が TRUE/FALSE の配列を作る--で TRUE=1、FALSE=0 に変換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 の“ロジック力”を一段引き上げるテクニックなので、
ぜひあなたのシートでも活用してみてください。
