Excelで「0.5刻み」でカウントする方法|COUNTAとCOUNTIF、SUMPRODUCTで空欄と特定値を丁寧に扱う手順

目次

概要

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引数をそのリスト参照にすると保守性が上がります。


仕様・入力状況に応じた選び方

  1. 最短で済ませたい
     → 基本形(COUNTA版)
     =COUNTA(範囲) - 0.5*SUM(COUNTIF(範囲,{"=7","=8"}))
  2. 空文字(””)は数えたくない
     → LEN版
     =SUMPRODUCT(--(LEN(範囲)>0)) - 0.5*SUM(COUNTIF(範囲,{"=7","=8"}))
  3. 数値型の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の組み合わせで簡潔に実現できます。
・空文字(””)をどう扱うか、数値と文字列を区別するかを最初に決め、環境に合った式を選ぶと集計の再現性が高まります。
・対象値の拡張や厳密判定にも対応できるため、要件変更にも柔軟に追従できます。

よかったらシェアしてね!
  • URLをコピーしました!
  • URLをコピーしました!

この記事を書いた人

私が勉強したこと、実践したこと、してることを書いているブログです。
主に資産運用について書いていたのですが、
最近はプログラミングに興味があるので、今はそればっかりです。

目次