「この問い合わせ、何時に来たんだっけ?」
勤怠データや問い合わせログを扱っていると、時刻から「時」だけ取り出したい場面がありますよね。セルには「14:32:00」と入っているのに、欲しいのは「14」だけ。手作業で抜き出すのは現実的ではありません。
そんなときに使うのが、スプレッドシートのHOUR関数です。時刻データから「時」の部分だけをサッと取り出せます。この記事では基本の書き方から、IF関数との時間帯判定やCOUNTIFでの集計まで解説します。
HOUR関数とは?スプレッドシートで時刻から「時」を取り出す関数
HOUR関数は、時刻データから「時」の部分を整数で返す関数です。読み方は「アワー」で、英語の「Hour(時間)」がそのまま名前になっています。
たとえばセルに「14:32:00」と入っていれば、HOUR関数は「14」を返します。返ってくるのは0から23までの整数です。午前0時なら0、午後11時なら23ですね。
できることはシンプルですが、使い道は意外と広いです。
- 問い合わせが何時台に集中しているか集計する
- 勤怠データで業務時間内かどうかを判定する
- 時刻の「分」や「秒」を切り捨てて丸める
HOUR関数のイメージとしては、TIME関数(時・分・秒から時刻データを作る関数)の逆操作です。TIME関数が「組み立て」なら、HOUR関数は「分解」ですね。
HOUR関数の基本の書き方
基本構文
=HOUR(時刻)
引数は1つだけ。とてもシンプルです。
引数の説明
| 引数 | 必須/任意 | 説明 |
|---|---|---|
| 時刻 | 必須 | 「時」を取り出したい時刻データ。セル参照・TIME関数・文字列形式(”14:32:00″)などが使える |
具体例で確認
実際に動きを見てみましょう。
| セルの値 | 数式 | 結果 |
|---|---|---|
| 14:32:00 | =HOUR(A2) | 14 |
| 20:49:59 | =HOUR(A3) | 20 |
| 0:15:00 | =HOUR(A4) | 0 |
| — | =HOUR(TIME(11,40,59)) | 11 |
| — | =HOUR("20:49:59") | 20 |
TIME(11,40,59)は11時40分59秒を意味します。そこからHOURで「時」を取り出すと11ですね。文字列の”20:49:59″を直接渡しても、ちゃんと20が返ります。
TIP
セル参照を使うのが一番確実です。「=HOUR(A2)」のように、時刻が入ったセルを指定するのが基本の使い方ですよ。
実務で使えるHOUR関数の活用例
ここからは実務で役立つ組み合わせパターンを紹介します。
IF + HOURで時間帯を判定する
「この対応は業務時間内?時間外?」を自動判定できます。
たとえばA列に問い合わせ時刻が入っているとします。9時から18時を業務時間とした場合の数式はこちらです。
=IF(AND(HOUR(A2)>=9,HOUR(A2)<18),"業務時間内","業務時間外")
AND関数(複数の条件をすべて満たすか判定する関数)で「9時以降」かつ「18時より前」という2つの条件を同時に判定しています。
いくつかの時刻で結果を確認しましょう。
| 時刻(A列) | 数式の結果 |
|---|---|
| 8:45:00 | 業務時間外 |
| 9:00:00 | 業務時間内 |
| 14:30:00 | 業務時間内 |
| 18:00:00 | 業務時間外 |
| 22:15:00 | 業務時間外 |
8:45はHOUR関数で8を返します。8は9以上ではないので「業務時間外」です。18:00はHOUR関数で18を返しますが、条件は「18より小さい」なので「業務時間外」になります。
もう少し細かく、午前・午後で分けたい場合はこちらです。
=IF(HOUR(A2)<12,"午前","午後")
COUNTIF + HOURで時間帯別に集計する
「午前中の問い合わせは何件?」のような集計もできます。ポイントは補助列を使う方法です。
手順1: B列に補助列を作り、HOUR関数で「時」を取り出します。
=HOUR(A2)
手順2: COUNTIFS関数(複数条件でカウントする関数)で集計します。
=COUNTIFS(B2:B20,">="&9,B2:B20,"<"&12)
この数式は、B列の値が9以上かつ12未満の件数を数えます。つまり9時台・10時台・11時台の合計件数ですね。
たとえばB列の値が [8, 9, 9, 10, 11, 14, 15, 18] の場合、9以上12未満は9, 9, 10, 11の4件です。
TIP
補助列を使いたくない場合は、SUMPRODUCT関数(配列の積を合計する関数)で一発集計もできます。
“`
=SUMPRODUCT((HOUR(A2:A20)>=9)*(HOUR(A2:A20)<12))
“`
配列計算で同じ結果が得られますよ。
TIME関数と組み合わせて時刻を再構成する
HOUR関数で分解した時刻を、TIME関数で再構成するテクニックです。「分」や「秒」を切り捨てたい場面で便利ですよ。
「分」を切り捨てて00分に丸める:
=TIME(HOUR(A2),0,0)
14:32:00 に使うと 14:00:00 になります。HOUR(A2)で14を取り出し、TIME(14,0,0)で14時ちょうどを作っています。
「秒」だけ切り捨てる:
=TIME(HOUR(A2),MINUTE(A2),0)
14:32:45 に使うと 14:32:00 になります。MINUTE関数(時刻から「分」を取り出す関数)と組み合わせることで、秒だけゼロにできます。
時間帯別のグラフを作るときに、分単位のバラツキをなくしたい場合に使ってみてください。
HOUR・MINUTE・SECOND関数の違いと使い分け
HOUR関数には兄弟のような関数が2つあります。MINUTE関数とSECOND関数です。
| 関数 | 取り出す成分 | 戻り値の範囲 |
|---|---|---|
| HOUR | 時 | 0〜23 |
| MINUTE | 分 | 0〜59 |
| SECOND | 秒 | 0〜59 |
3つとも書き方は同じです。引数に時刻を1つ渡すだけ。
たとえば「14:32:45」に対して、それぞれの結果はこうなります。
| 数式 | 結果 |
|---|---|
=HOUR("14:32:45") | 14 |
=MINUTE("14:32:45") | 32 |
=SECOND("14:32:45") | 45 |
これら3つの関数は、TIME関数の逆操作という位置づけです。TIME関数が時・分・秒を組み合わせて時刻を「作る」のに対し、HOUR・MINUTE・SECONDは時刻を「分解する」役割ですね。
HOUR関数の注意点(24時間超えの丸め)
HOUR関数には1つ大きな落とし穴があります。24時間を超える値を正しく扱えない点です。
HOUR関数の戻り値は0から23の範囲に限られます。たとえば残業時間の累計が25時間だった場合、HOUR関数は25ではなく1を返します。
| 累計時間 | HOUR関数の結果 | 期待する値 |
|---|---|---|
| 25:00:00 | 1 | 25 |
| 36:00:00 | 12 | 36 |
| 48:00:00 | 0 | 48 |
内部では24で割った余りを返しているため、こうなります。25を24で割ると余り1。36なら余り12。48なら余り0ですね。
WARNING
勤怠データの「月間残業時間の合計」など、24時間を超える可能性がある値にはHOUR関数を使わないでください。
24時間超えの対処法:
TEXT関数(値を指定の書式で文字列に変換する関数)の [h] 書式を使います。
=VALUE(TEXT(B2,"[h]"))
[h] は24時間で折り返さず、累計時間をそのまま表示する書式です。VALUE関数(文字列を数値に変換する関数)で数値に戻すことで、計算にも使えるようになります。
25:00:00に対してこの数式を使うと、きちんと25が返りますよ。
よくあるエラーと対処法
HOUR関数で出るエラーは、ほぼ #VALUE! です。原因と対処法をまとめました。
時刻として認識できない文字列を渡している
=HOUR("午後3時")
この書き方では #VALUE! になります。HOUR関数が受け付けるのは「14:32:00」のような時刻形式や、TIME関数の結果です。
対処法: セルに正しい時刻形式で入力するか、TIME関数で時刻を作って渡してください。
セル参照なしで直接「:」形式を入力している
=HOUR(14:32:00)
ダブルクォーテーションで囲まずに入力すると #VALUE! になります。スプレッドシートが「14:32:00」を時刻ではなく計算式として解釈してしまうためです。
対処法: 文字列として渡す場合は =HOUR("14:32:00") とダブルクォーテーションで囲みましょう。
数値をそのまま渡している
=HOUR(14)
この場合、エラーにはなりませんが結果は「14時」ではなく「0」です。スプレッドシートの内部では14がシリアル値として扱われるためです。時刻として渡すなら =HOUR(TIME(14,0,0)) としてください。
NOTE
NOW関数のように時刻を返す関数と組み合わせれば、現在時刻の「時」をリアルタイムで取得できます。
=HOUR(NOW())で今が何時台か確認できますよ。
まとめ
HOUR関数は、時刻データから「時」の部分を取り出すシンプルな関数です。
この記事で紹介した内容をおさらいしましょう。
- 基本:
=HOUR(時刻)で0〜23の整数が返る - IF関数との組み合わせ: 業務時間内・時間外の自動判定ができる
- COUNTIFS・SUMPRODUCTとの組み合わせ: 時間帯別の件数集計ができる
- TIME関数との組み合わせ: 分や秒を切り捨てた時刻の再構成ができる
- 注意点: 24時間超えの累計時間にはHOUR関数ではなく
=VALUE(TEXT(B2,"[h]"))を使う
勤怠管理や問い合わせログの分析など、時刻を扱う業務で活躍する関数です。まずは =HOUR(A2) から試してみてください。
