論理式の実務テクニック集|TRUE/FALSEを使いこなす
Excelの論理式は、IF関数の中だけでなく、さまざまな場面で活用できます。TRUE/FALSEの仕組みを理解し、条件付き書式やデータの入力規則、集計処理と組み合わせることで、実務の効率を大きく高められます。この記事では、論理式の基本的な性質から実務で使えるテクニックまでを解説します。
TRUE/FALSEの基本的な性質
Excelでは、比較演算子を使った式はTRUEまたはFALSEの論理値を返します。この論理値にはいくつかの重要な性質があります。
論理値と数値の関係
TRUEは数値の1、FALSEは数値の0として扱えます。この性質を利用すると、条件の判定結果を直接計算に組み込めます。
=--(A2>=100)
この数式は、A2が100以上ならTRUEが返され、—(ダブルマイナス)で数値の1に変換されます。100未満なら0になります。
ダブルマイナスの仕組み
ダブルマイナス(—)は、論理値を数値に変換するテクニックです。最初のマイナスでTRUEが-1に、FALSEが0になり、2つ目のマイナスで-1が1に戻ります。
| 論理値 | -(1回目) | —(2回目) |
|---|---|---|
| TRUE | -1 | 1 |
| FALSE | 0 | 0 |
他にも、1を掛ける(*1)や0を足す(+0)でも同じ変換ができます。
論理値の比較
TRUE同士、FALSE同士は等しいと評価されます。ただし、TRUE=1という比較はFALSEを返します。論理値と数値は型が異なるためです。
=TRUE=1 結果: FALSE
=--(TRUE)=1 結果: TRUE
この違いを理解しておくことは、数式のデバッグで役立ちます。
論理式を使った集計テクニック
SUMPRODUCT関数での条件集計
SUMPRODUCT関数の中で論理式を使うと、SUMIFSでは表現しにくい複雑な条件での集計が可能です。
=SUMPRODUCT((A2:A100="東京") * (B2:B100>=100000) * C2:C100)
この数式は、A列が「東京」かつB列が10万以上の行について、C列の合計を計算します。論理式の結果(TRUE=1, FALSE=0)が掛け算に利用されるため、条件を満たさない行は0になり合計に含まれません。
複数条件のカウント
条件を満たすデータの件数を数える場合も、SUMPRODUCT関数と論理式を組み合わせます。
=SUMPRODUCT((A2:A100="東京") * (B2:B100>="2026/1/1") * (B2:B100<="2026/3/31"))
東京の2026年1月から3月のデータ件数を返します。
OR条件の集計
OR条件の場合は、足し算と符号関数を組み合わせます。
=SUMPRODUCT(((A2:A100="東京")+(A2:A100="大阪")>0) * C2:C100)
東京または大阪の売上合計を計算します。足し算の結果が0より大きければ、いずれかの条件を満たしていることになります。
条件付き書式での論理式活用
条件付き書式に数式を使うことで、柔軟な書式設定が可能になります。
行全体の書式変更
特定の列の値に基づいて行全体の色を変える例です。
- 書式を設定する範囲(例:A2:E100)を選択する
- 「条件付き書式」から「新しいルール」を選択する
- 「数式を使用して、書式設定するセルを決定」を選択する
- 数式欄に論理式を入力する
=$D2="完了"
D列が「完了」の行全体に指定した書式(グレーの背景色など)が適用されます。列参照に$をつけて固定し、行参照は固定しないのがポイントです。
土日の行を自動着色
日付列を基準に、土曜日と日曜日の行を自動で着色します。
=OR(WEEKDAY($A2, 2)=6, WEEKDAY($A2, 2)=7)
WEEKDAY関数の第2引数に2を指定すると、月曜日=1から日曜日=7の値が返されます。
期限切れの強調表示
期限列の日付が今日より前の行を赤字にします。
=AND($C2<TODAY(), $C2<>"")
C列が空欄でなく、かつ今日より前の日付の場合にTRUEになります。空欄チェックを入れることで、未入力の行が誤って書式設定されるのを防ぎます。
1行おきの背景色
ROW関数と論理式を使って、1行おきに背景色をつけます。
=MOD(ROW(), 2)=0
行番号を2で割った余りが0(偶数行)の場合にTRUEを返します。表の視認性を高めるための定番テクニックです。
データの入力規則での論理式活用
データの入力規則(データ検証)にカスタム数式を設定して、入力値を制御できます。
設定手順
- 入力規則を設定するセル範囲を選択する
- 「データ」タブの「データの入力規則」をクリックする
- 「入力値の種類」で「ユーザー設定」を選択する
- 「数式」欄に論理式を入力する
実務例:重複入力の防止
同じ列に同じ値が入力されるのを防ぐ検証式です。
=COUNTIF(A:A, A2)<=1
A列全体で同じ値が2つ以上ある場合にFALSEを返し、入力が拒否されます。
実務例:日付の範囲制限
入力できる日付を今月中に制限する検証式です。
=AND(A2>=DATE(YEAR(TODAY()), MONTH(TODAY()), 1),
A2<=EOMONTH(TODAY(), 0))
DATE関数で今月の初日を、EOMONTH関数で今月の末日を取得し、その範囲内かどうかを判定します。
実務例:特定のパターンに一致する入力のみ許可
社員番号が「EMP-」で始まる5桁の値のみを許可する例です。
=AND(LEFT(A2, 4)="EMP-", LEN(A2)=9, ISNUMBER(VALUE(MID(A2, 5, 5))))
先頭4文字が「EMP-」で、全体が9文字で、5文字目以降が数値に変換可能な場合にTRUEを返します。
論理式と配列数式の組み合わせ
条件に一致する最大値を取得
特定の条件を満たすデータの中で最大値を取得します。
=MAX(IF(A2:A100="東京", B2:B100))
Excel 365ではそのまま入力できます。古いバージョンでは Ctrl+Shift+Enter で配列数式として確定する必要があります。
複数条件に一致する最新日付
=MAX(IF((A2:A100="東京") * (B2:B100="受注"), C2:C100))
東京の受注データの中で最新の日付を返します。
条件付きの一意カウント
重複を除いた件数を条件付きでカウントするテクニックです。
=SUMPRODUCT((A2:A100="東京") / COUNTIFS(A2:A100, A2:A100, B2:B100, B2:B100))
東京のデータについて、B列の値の重複を除いた件数を返します。ただし、この数式はデータに空白がある場合にエラーが発生するため、IFERROR関数との併用が必要です。
実務で使える論理式パターン集
パターン1:ステータスの自動判定
複数の列の入力状況からステータスを自動判定する例です。
=IF(AND(B2<>"", C2<>"", D2<>""), "完了",
IF(OR(B2<>"", C2<>"", D2<>""), "進行中", "未着手"))
B、C、Dの3列すべてに入力があれば「完了」、いずれかに入力があれば「進行中」、すべて空欄なら「未着手」と判定します。
パターン2:営業日の判定関数
指定した日付が営業日かどうかを判定する数式です。
=AND(WEEKDAY(A2, 2)<=5, COUNTIF(祝日リスト, A2)=0)
平日(月曜から金曜)であり、かつ祝日リストに含まれていない場合にTRUEを返します。
パターン3:範囲内チェック
値が指定した範囲内に収まっているかを判定します。
=AND(B2>=下限, B2<=上限)
名前の定義で「下限」「上限」を設定しておけば、数式が直感的になります。
パターン4:連続する空白の検出
データの途中に空白行がないかチェックする数式です。
=AND(A2="", A1<>"")
直前の行にデータがあり、当該行が空白の場合にTRUEを返します。データの欠損をチェックするのに使えます。
デバッグと注意点
中間結果を確認する
複雑な論理式がうまく動かない場合は、条件部分だけを別のセルに入力して結果を確認します。
=A2>=100 セルF2に入力してTRUE/FALSEを確認
=B2="東京" セルG2に入力してTRUE/FALSEを確認
=AND(F2, G2) セルH2で組み合わせた結果を確認
数式の評価機能を使う
「数式」タブの「数式の検証」機能を使うと、数式がステップごとにどう評価されるかを確認できます。論理式の各部分がTRUE/FALSEのどちらになるかを順番に追えます。
条件付き書式のデバッグ
条件付き書式の数式が期待通りに動かない場合は、同じ数式をセルに入力してテストします。条件付き書式では、数式の先頭セルが基準になるため、セル参照の$の有無に注意が必要です。
文字列の”TRUE”と論理値のTRUE
セルに文字列として「TRUE」と入力されている場合と、論理値のTRUEは異なります。
=A2=TRUE A2が論理値TRUEなら TRUE、文字列"TRUE"なら FALSE
文字列として比較する場合は =“TRUE” と指定してください。
空文字列とFALSEの違い
IF関数で空文字列("")を返した場合と、FALSEは異なる値です。
=IF(A2>100, "OK", "") 偽の場合は空文字列
=IF(A2>100, "OK", FALSE) 偽の場合はFALSE
後続の数式でこの値を参照する場合、空文字列とFALSEでは動作が異なることがあるため注意してください。
論理値の暗黙的な型変換
SUM関数は論理値を無視しますが、加算演算子(+)は論理値を数値に変換します。
=SUM(TRUE, TRUE, TRUE) 結果: 0(論理値は無視される)
=TRUE + TRUE + TRUE 結果: 3(数値に変換される)
SUMPRODUCTで論理値を集計する際は、ダブルマイナスや *1 で明示的に数値に変換してください。Google スプレッドシートでも論理式の基本的な動作は同じです。条件付き書式やデータの入力規則にカスタム数式を設定する手順は若干異なりますが、数式の構文は同じです。
まとめ
論理式はIF関数の中だけでなく、Excelのさまざまな機能と組み合わせて活用できます。
- TRUE=1、FALSE=0の性質を利用して集計処理に組み込める
- SUMPRODUCT関数と組み合わせることで複雑な条件集計が可能
- 条件付き書式にカスタム数式を設定して柔軟な書式制御ができる
- データの入力規則で入力値の検証に使える
- 論理値と文字列の”TRUE”は別物であることに注意
論理式の仕組みを理解すると、IF関数に限らず幅広い場面で条件処理を活用できるようになります。まずは条件付き書式やSUMPRODUCTでの条件集計から試してみてください。