はじめに:時刻の正体、「シリアル値」を知っていますか?
「このリストの中から、14時から17時台(18時になる前まで)のデータは何個ある?」

こんな集計を頼まれたとき、あなたならどうしますか?
「えーっと、14:04は対象で、18:00は対象外だから…」と指で数えますか?
Excelで時刻を扱うとき、多くの初心者がつまずくポイントがあります。
それは、見た目の「12:00」と、Excelの中身(数値)が違うということです。
Excelは、日付や時刻を「シリアル値」という数値で管理しています。
- 1日(24時間) = 「1」
- 12時間(お昼の12時) = 「0.5」 (1の半分だから)
- 6時間(朝の6時) = 「0.25」 (1の4分の1だから)

つまり、時刻とは「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}

これを時刻形式で表示すると、以下のようになります。
【データの内容(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より小さい」ものを数えます。

【ここがポイント!】
引数の指定方法に注目してください。
">=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 のように、「&(アンパサンド)」を使って文字列の演算子と数値を結合する必要があります。

中身を理解して書いている感が出る、玄人好みの書き方です。
カテゴリ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)」になり、
それらを掛け算して合計することで、個数が求まります。

数式4:VALUE関数を使用
=SUM((A2:A16>=VALUE("14:00"))*(A2:A16<VALUE("18:00")))
【解説】
「”14:00″」はただの文字列ですが、VALUE関数を通すことで、Excelが扱える数値(シリアル値)に変換されます。
丁寧に変換してから比較する、堅実な方法です。

N関数を使用しても同様にシリアル値に変換できます。
数式5:VALUE関数を使わない場合(*1テクニック)
=SUM((A2:A16>="14:00"*1)*(A2:A16<"18:00"*1))
【解説】
Excelには「文字列の数字に計算処理をすると、勝手に数値に変わる」という性質があります。
"14:00"*1 とすることで、VALUE関数を使わなくても、強制的にシリアル値へ変換させています。数式を短くするテクニックです。

数式6:可読性重視 TIME関数
=SUM((A2:A16>=TIME(14,,))*(A2:A16<TIME(18,,)))
【解説】
TIME(時, 分, 秒) 関数を使います。TIME(14,,) は「14時0分0秒」のシリアル値を返します。
TIME(14,0,0)と入力することもできますが、0は省略しても問題ありません。
パッと見ただけで「あ、14時と18時だな」と分かるので、後から見返した時の可読性が抜群です。

カテゴリ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: この引き算で、間の個数が求まります!

数式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回書くだけで済ませる、スマートな記述法です。

数式9:MOD関数(日付混じり対策)
=SUM((MOD(A2:A16,1)>=14/24)*(MOD(A2:A16,1)<18/24))
【解説】
もしデータが「2025/12/07 14:30」のように、日付と時刻がセットになっていたらどうしましょう?

そのままでは「14/24(0.58…)」と比較しても、日付部分の整数(4万いくら)が邪魔をして正しく判定できません。
そこでMOD(数値, 1)の出番です!数値を1で割った余り、つまり「整数部分(日付)を捨てて、小数部分(時刻)だけを取り出す」ことができます。

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

まとめ:時刻は「0から1」の世界!
一見難しそうな時刻の計算も、「所詮は 0から1 の間の数値(シリアル値)なんだ」という仕組みさえ理解してしまえば、実はそんなに難しくありません。
基本のCOUNTIFSから、応用の配列計算まで。
これらの武器を使いこなせれば、時間の集計も自由自在です。
ぜひ、ワクワクしながらExcelの「時間」を操ってみてくださいね!


