概要
Excelの集計で「基本は1として数えるが、7と8は0.5として数えたい」といった要件に対応する方法をご紹介します。COUNTA、COUNTIF、SUMPRODUCTを用いた実用的な数式パターン、空文字(””)や数値・文字列の厳密判定、拡張パターンまで丁寧に解説します。
想定シナリオ
・範囲『4月』!$C9:$AG9の各セルをカウントします。
・原則は「非空セル=1」として数えます。
・ただし、セルの値が7または8である場合は「0.5」として数えます。
結論(最短の実用解)
最も手軽に実現する式は次のとおりです。
「非空セルの総数」から「7 と 8 の出現数の合計 × 0.5」を差し引きます。
=COUNTA('4月'!$C9:$AG9) - 0.5*SUM(COUNTIF('4月'!$C9:$AG9,{"=7","=8"}))
ポイント
・COUNTAは「空文字(””)」も非空として数えます。
・COUNTIFの配列指定({“=7″,”=8”})で、7と8の出現数をまとめて取得できます。
・7や8が文字列として入力されていても、多くのケースで同様に数えられます。
空文字(””)を“空欄扱い”にしたい場合
COUNTAでは数式の結果が空文字(””)でも「非空」となりカウントします。見た目が空でもカウントしたくない場合は、LENによる判定に置き換えます。
=SUMPRODUCT(--(LEN('4月'!$C9:$AG9)>0)) - 0.5*SUM(COUNTIF('4月'!$C9:$AG9,{"=7","=8"}))
ポイント
・LEN(セル)>0 で「真に入力があるセル」のみを1として数えます。
・表示上の空白(””)や、スペースだけのセルをどう扱うか運用で統一すると、結果が安定します。
数値の7・8だけを0.5にし、文字列”7″・”8″は通常どおり1で数えたい場合
データ入力ルール上、数値と文字列を厳密に区別したい現場もあります。次の式では、数値型の7と8のみを0.5扱いにします。
=SUMPRODUCT(--(LEN('4月'!$C9:$AG9)>0))
- 0.5*SUMPRODUCT(--ISNUMBER('4月'!$C9:$AG9), --('4月'!$C9:$AG9=7))
- 0.5*SUMPRODUCT(--ISNUMBER('4月'!$C9:$AG9), --('4月'!$C9:$AG9=8))
ポイント
・ISNUMBERで「数値型」を明確に限定しています。
・”7″(文字列)や前後にスペースを含む「 7 」などは、0.5対象から外れます。
・文字列混在が多い場合は、TRIMやVALUEで前処理を検討してください。
拡張:0.5扱いの値を増やしたい(7・8・9など)
対象値が増える場合は、COUNTIFの配列を拡張するだけで対応できます。
=SUMPRODUCT(--(LEN('4月'!$C9:$AG9)>0))
- 0.5*SUM(COUNTIF('4月'!$C9:$AG9,{"=7","=8","=9"}))
対象値が頻繁に変わる場合は、別セルにリスト化しておき、COUNTIFの第2引数をそのリスト参照にすると保守性が上がります。
仕様・入力状況に応じた選び方
- 最短で済ませたい
→ 基本形(COUNTA版)
=COUNTA(範囲) - 0.5*SUM(COUNTIF(範囲,{"=7","=8"}))
- 空文字(””)は数えたくない
→ LEN版
=SUMPRODUCT(--(LEN(範囲)>0)) - 0.5*SUM(COUNTIF(範囲,{"=7","=8"}))
- 数値型の7・8のみを0.5にしたい
→ 厳密判定版(ISNUMBER併用)
=SUMPRODUCT(--(LEN(範囲)>0)) - 0.5*SUMPRODUCT(--ISNUMBER(範囲), --(範囲=7)) - 0.5*SUMPRODUCT(--ISNUMBER(範囲), --(範囲=8))
よくあるつまずきと回避策
・空文字(””)問題
表示は空でもCOUNTAは数えます。LEN>0で厳密に判定してください。
・スペース混入
「7」と見えても「半角スペース+7」のようなケースがあります。TRIMで整形、またはLENで判定してください。
・文字列の“7”と数値の7の混在
厳密判定を行う場合はISNUMBERで数値に限定してください。運用で入力形式を統一すると安定します。
・結合セル
結合セルは予期せぬ判定になることがあります。可能なら結合を避け、配置で調整してください。
・パフォーマンス
広い範囲にSUMPRODUCTを多用すると重くなります。必要最小限の範囲に絞る、またはテーブル化して列参照を安定させると良いです。
まとめ
・「非空セル=1、7と8は0.5」といった重み付きカウントは、COUNTA(またはLEN)とCOUNTIFの組み合わせで簡潔に実現できます。
・空文字(””)をどう扱うか、数値と文字列を区別するかを最初に決め、環境に合った式を選ぶと集計の再現性が高まります。
・対象値の拡張や厳密判定にも対応できるため、要件変更にも柔軟に追従できます。