Excel 特定の時間帯のデータ数をカウントする方法

Excel 特定の時間帯のデータ数をカウントする方法 Excel

はじめに:時刻の正体、「シリアル値」を知っていますか?

「このリストの中から、14時から17時台(18時になる前まで)のデータは何個ある?」

Excelの説明画像

こんな集計を頼まれたとき、あなたならどうしますか?

「えーっと、14:04は対象で、18:00は対象外だから…」と指で数えますか?

Excelで時刻を扱うとき、多くの初心者がつまずくポイントがあります。
それは、見た目の「12:00」と、Excelの中身(数値)が違うということです。

Excelは、日付や時刻を「シリアル値」という数値で管理しています。

  • 1日(24時間) = 「1」
  • 12時間(お昼の12時) = 「0.5」 (1の半分だから)
  • 6時間(朝の6時) = 「0.25」 (1の4分の1だから)
Excelの説明画像

つまり、時刻とは「0から1までの小数」のことなのです!

この仕組みさえ分かってしまえば、時刻のカウントは単なる「小数の計算」になります。

本記事では、無料のWeb版Excelを使用して検証および画像の作成を行っています。Windowsはもちろん、MacやLinuxの方もブラウザさえあれば挑戦できます!

準備:時刻データ

まずは準備です。A1セルを起点に、以下の時刻データを入力してください。

見た目は時刻ですが、中身はシリアル値です。

入力後に表示形式を「時刻」にすると分かりやすいですよ!

={"時刻";0.502777778;0.515972222;0.586111111;0.591666667;0.597222222;0.599305556;0.619444444;0.663194445;0.681944444;0.699305556;0.701388889;0.724305556;0.75;0.804861111;0.810416667}

Excelの説明画像

これを時刻形式で表示すると、以下のようになります。

【データの内容(A2:A16)】
12:04, 12:23, 14:04, 14:12, 14:20, 14:23, 14:52, 15:55, 16:22, 16:47, 16:50, 17:23, 18:00, 19:19, 19:27

【今回のゴール】
この中から、「14時から17時台のデータ(14:00以上、18:00未満)」の個数をカウントすること。

正解は「10個」です。

さあ、この「10」という数字を、9つの異なるアプローチで導き出しましょう!


カテゴリ1:COUNTIFS関数を使用(王道)

まずは、条件付きカウントの王様、COUNTIFS関数です。範囲と条件をセットで指定します。

数式1:教科書的な正解 COUNTIFS

=COUNTIFS(A2:A16,">=14:00",A2:A16,"<18:00")

【解説】

最も標準的な書き方です。「14:00以上」かつ「18:00より小さい」ものを数えます。

Excelの説明画像

【ここがポイント!】

引数の指定方法に注目してください。

">=14:00" のように、比較演算子と時刻をまとめてダブルクォーテーション「”」で囲む必要があります。

初心者がやりがちな間違いとして、
COUNTIFS(..., >=14:00, ...) のように「”」を忘れたり、
COUNTIFS(..., ">="14:00, ...) のように演算子だけ囲んでしまったりすることがありますが、これらはエラーになります。

数式2:直接シリアル値を指定

=COUNTIFS(A2:A16,">="&14/24,A2:A16,"<"&18/24)

【解説】

「14時」とは、24時間のうちの14時間分、つまり 14/24 という数値(シリアル値)です。

数式の中で計算式やセル参照を使う場合は、
">=" & 14/24 のように、「&(アンパサンド)」を使って文字列の演算子と数値を結合する必要があります。

Excelの説明画像

中身を理解して書いている感が出る、玄人好みの書き方です。


カテゴリ2:SUM関数(配列計算)を使用

次は配列計算です。

昔のExcelではSUMPRODUCT関数を使っていましたが、
現在のExcel(Microsoft 365やExcel 2021以降)では、
シンプルなSUM関数で同様の計算が可能です。

数式3:直接シリアル値を指定(シンプル)

=SUM((A2:A16>=14/24)*(A2:A16<18/24))

【解説】

COUNTIFSのような面倒な「”」や「&」は必要ありません!

(条件A) * (条件B) という書き方は、AND条件(かつ)を意味します。

条件を満たすと「TRUE (1)」、満たさないと「FALSE (0)」になり、
それらを掛け算して合計することで、個数が求まります。

Excelの説明画像

数式4:VALUE関数を使用

=SUM((A2:A16>=VALUE("14:00"))*(A2:A16<VALUE("18:00")))

【解説】

「”14:00″」はただの文字列ですが、VALUE関数を通すことで、Excelが扱える数値(シリアル値)に変換されます。

丁寧に変換してから比較する、堅実な方法です。

Excelの説明画像

N関数を使用しても同様にシリアル値に変換できます。

数式5:VALUE関数を使わない場合(*1テクニック)

=SUM((A2:A16>="14:00"*1)*(A2:A16<"18:00"*1))

【解説】

Excelには「文字列の数字に計算処理をすると、勝手に数値に変わる」という性質があります。

"14:00"*1 とすることで、VALUE関数を使わなくても、強制的にシリアル値へ変換させています。数式を短くするテクニックです。

Excelの説明画像

数式6:可読性重視 TIME関数

=SUM((A2:A16>=TIME(14,,))*(A2:A16<TIME(18,,)))

【解説】

TIME(時, 分, 秒) 関数を使います。TIME(14,,) は「14時0分0秒」のシリアル値を返します。

TIME(14,0,0)と入力することもできますが、0は省略しても問題ありません。

パッと見ただけで「あ、14時と18時だな」と分かるので、後から見返した時の可読性が抜群です。

Excelの説明画像

カテゴリ3:その他のユニークな方法

最後は、ちょっと変わったアプローチです。パズル的な面白さがあります。

数式7:MATCH関数(引き算の美学)

=MATCH(17.99999/24,A2:A16)-MATCH(14/24,A2:A16)

【解説】

データが「昇順(小さい順)」に並んでいる場合のみ使える技です。

1. MATCH(17.99999/24, ...): 18時になる直前のデータが、上から何番目にあるかを探します。(17:23の場所=12番目

2. MATCH(14/24, ...): 14時になる直前のデータ(14時未満の最後のデータ)が、上から何番目にあるかを探します。(12:23の場所=2番目

3. 12 - 2 = 10: この引き算で、間の個数が求まります!

Excelの説明画像

数式8:配列定数を使用(MATCHの応用)

=SUM(MATCH({17.99999,14}/24,A2:A16)*{1,-1})

【解説】
やっていることは数式7と全く同じです。

{終了直前, 開始直前} という配列をMATCHで検索し、結果の配列 {12, 2} に対して {1, -1} を掛けます。

12*1 + 2*(-1) = 10

MATCH関数を1回書くだけで済ませる、スマートな記述法です。

Excelの説明画像

数式9:MOD関数(日付混じり対策)

=SUM((MOD(A2:A16,1)>=14/24)*(MOD(A2:A16,1)<18/24))

【解説】

もしデータが「2025/12/07 14:30」のように、日付と時刻がセットになっていたらどうしましょう?

Excelの説明画像

そのままでは「14/24(0.58…)」と比較しても、日付部分の整数(4万いくら)が邪魔をして正しく判定できません。

そこでMOD(数値, 1)の出番です!数値を1で割った余り、つまり「整数部分(日付)を捨てて、小数部分(時刻)だけを取り出す」ことができます。

Excelの説明画像

これなら、日付が入っていても純粋に「時刻だけ」でカウントできますね。

Excelの説明画像

まとめ:時刻は「0から1」の世界!

一見難しそうな時刻の計算も、「所詮は 0から1 の間の数値(シリアル値)なんだ」という仕組みさえ理解してしまえば、実はそんなに難しくありません。

基本のCOUNTIFSから、応用の配列計算まで。

これらの武器を使いこなせれば、時間の集計も自由自在です。

ぜひ、ワクワクしながらExcelの「時間」を操ってみてくださいね!

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