「Excelで時刻データの”時”の部分だけ取り出せないかな?」と思ったことはありませんか。
たとえば受注ログや勤怠データを時間帯別に集計したいとき、Excelのセルに入っている時刻から「時」だけ抜き出す必要があります。そんなときに使えるのがHOUR関数です。手作業で1件ずつ確認するのは現実的ではありませんよね。
この記事では、ExcelのHOUR関数の基本的な使い方から解説します。IF関数やCOUNTIF関数を組み合わせた実務活用パターンまでまとめました。
この記事は次のような人におすすめ
– HOUR関数の構文や使い方を知りたい
– 時刻データを時間帯別に分類・集計したい
– HOUR・MINUTE・SECONDの違いを整理したい
HOUR関数とは?できることを1分で理解
HOUR関数の読み方・戻り値の範囲(0〜23)
HOUR関数は、時刻データから「時」の部分を整数で取り出す関数です。読み方は「アワー関数」。英語の「hour(時間)」に由来します。
戻り値は0〜23の整数です。深夜0時なら0、午後11時なら23が返ります。24時間制で考えるとわかりやすいです。
たとえば「14:30」というセルにHOUR関数を使うと、結果は14です。分や秒の部分は無視して「時」だけを返してくれます。
時刻シリアル値のしくみ
Excelでは、時刻を0〜1の小数(シリアル値)で管理しています。1日を1.0として、時刻を小数で表す仕組みです。
| シリアル値 | 時刻 |
|---|---|
| 0.0 | 0:00(深夜0時) |
| 0.5 | 12:00(正午) |
| 0.75 | 18:00(午後6時) |
セルに「14:30」と表示されていても、内部では約0.604という小数で保持されています。HOUR関数はこの小数から「時」の成分だけを抽出します。
日付と時刻が混在するセル(例: 2023/1/1 12:00)では、整数部分が日付、小数部分が時刻を表します。HOUR関数は小数部分だけを見るので、日付部分には影響されません。
HOUR関数の構文と引数
HOUR関数の構文は次のとおりです。
=HOUR(シリアル値)
引数は1つだけのシンプルな関数です。
| 引数 | 必須/省略可 | 説明 |
|---|---|---|
| シリアル値 | 必須 | 「時」を取り出す対象の時刻データ |
引数「シリアル値」に指定できるもの一覧
引数にはいくつかの形式が指定できます。次の表で確認してみてください。
| 指定方法 | 記述例 | 結果 |
|---|---|---|
| セル参照 | =HOUR(A1) ※A1に「14:30」 | 14 |
| 時刻文字列 | =HOUR(“6:45 PM”) | 18 |
| 小数(シリアル値) | =HOUR(0.75) | 18 |
| 他の関数の戻り値 | =HOUR(NOW()) | 現在の「時」 |
| 日付+時刻 | =HOUR(“7/18/2011 7:45”) | 7 |
| 日付のみ | =HOUR(“4/21/2012”) | 0 |
日付のみを渡した場合、午前0時として扱われるため0が返ります。意図しない結果になりやすいので注意してください。
Excel HOUR関数の基本的な使い方3パターン
セル参照で時刻から「時」を取り出す
もっとも基本的な使い方です。時刻が入ったセルを引数に指定します。
=HOUR(A2)
A2に「14:30:00」と入っていれば、結果は14です。セルの表示形式が「2:30 PM」のような12時間表示でも、HOUR関数は24時間制で返します。この場合の結果も14です。
文字列を直接入力して取り出す
セル参照を使わず、時刻文字列を直接書くこともできます。ダブルクォーテーションで囲むのがポイントです。
=HOUR("3:30:30 PM")
結果は15です。「PM」は午後を意味するので、3時+12で15になります。AM表記なら「3:30:30 AM」と書くと結果は3です。
=HOUR("3:30:30 AM")
NOW関数と組み合わせて現在時刻の「時」を取得
NOW関数と組み合わせると、現在時刻の「時」をリアルタイムに取得できます。
=HOUR(NOW())
たとえば現在が午後2時15分なら、結果は14です。ファイルを開き直すたびに値が更新されます。「今何時台?」をセルに表示したいときに使えます。
実務活用パターン3選
HOUR+IFで時間帯ラベルを自動付与(午前・午後・深夜)
受注データや問い合わせログに時間帯ラベルを付けたい場面です。IF関数とHOUR関数を組み合わせます。
A列に時刻が入っているとして、B2セルに次の数式を入力します。
=IF(HOUR(A2)>=22,"深夜",IF(HOUR(A2)>=12,"午後","午前"))
| 時刻(A列) | 結果(B列) |
|---|---|
| 8:30 | 午前 |
| 14:00 | 午後 |
| 23:15 | 深夜 |
条件を増やしたいときはIFのネストを追加します。たとえば業務時間の判定もできます。
=IF(AND(HOUR(A2)>=9,HOUR(A2)<18),"業務時間内","業務時間外")
ちょっとむずかしく見えますが、やっていることはシンプルです。HOUR関数で「時」を取り出して、その値をIF関数で分岐しているだけです。
HOUR+COUNTIFで時間帯別の件数を集計
「何時台の注文が一番多い?」という分析をしたい場面です。HOUR関数とCOUNTIF関数を組み合わせます。
まず補助列にHOUR関数で「時」を取り出します。A列に時刻、B列を補助列とします。
B2: =HOUR(A2)
B列に「時」が整数で入ったら、COUNTIF関数で時間帯別に集計します。
=COUNTIF(B:B,9)
この数式で「9時台の件数」が集計できます。各時間帯のセルに数値を変えて入力すれば、時間帯別の分布表が作れます。
補助列を使わない方法もあります。SUMPRODUCT関数を使った配列計算です。
=SUMPRODUCT((HOUR(A2:A100)>=9)*(HOUR(A2:A100)<12))
この数式は「9時〜11時台」の件数を一発で集計できます。データ数が多い場合は補助列を使うほうが動作が軽くなります。
HOUR+NOWでリアルタイム時間帯判定
NOW関数と組み合わせれば、現在時刻に応じてメッセージを切り替えられます。
=IF(HOUR(NOW())>=18,"お疲れさまでした","業務中です")
ファイルを開くたびに現在時刻で判定が更新されます。ダッシュボードや日報テンプレートに埋め込んでおくと便利です。
エラーと対処法
#VALUE! が出るケースと修正方法
HOUR関数で#VALUE!エラーが出る一番多い原因は、時刻として認識できない値を渡しているケースです。
=HOUR("abc") → #VALUE!エラー
=HOUR("25:00") → 1(1日と1時間として解釈されるため)
Excelが時刻として解釈できない文字列(”abc”など)を渡したときに#VALUE!エラーが発生します。”25:00″のような24時間超の時刻文字列は、Excelが1日と1時間として解釈するためエラーにはならず、1を返します。
修正するには、引数が正しい時刻形式かを確認してください。
数値を渡す場合は、0以上の値を指定します。負の値はエラーになります。
=HOUR(-0.5) → #VALUE!エラー
=HOUR(0.5) → 12(正常)
時刻として認識されない文字列の対処
見た目は時刻に見えるのにエラーが出る場合、セルの値が「文字列」になっている可能性があります。CSVの取り込みやコピー&ペーストでよく起きる現象です。
対処法は次のとおりです。
- セルの表示形式を「標準」や「時刻」に変更する
- TIMEVALUE関数で文字列を時刻に変換してからHOUR関数に渡す
=HOUR(TIMEVALUE(A2))
TIMEVALUE関数が文字列をシリアル値に変換してくれるので、HOUR関数が正しく「時」を取り出せるようになります。
HOUR・MINUTE・SECOND・TIME・TIMEVALUE の使い分け早見表
時刻を扱う関数はいくつかあります。役割の違いを表で整理します。
| 関数 | 役割 | 引数 | 戻り値 |
|---|---|---|---|
| HOUR | 時刻から「時」を取り出す | シリアル値 | 0〜23 |
| MINUTE | 時刻から「分」を取り出す | シリアル値 | 0〜59 |
| SECOND | 時刻から「秒」を取り出す | シリアル値 | 0〜59 |
| TIME | 時・分・秒からシリアル値を作る | 時, 分, 秒 | シリアル値 |
| TIMEVALUE | 文字列をシリアル値に変換する | 文字列 | シリアル値 |
HOUR・MINUTE・SECONDは「分解する関数」、TIMEは「組み立てる関数」と覚えるとわかりやすいです。HOUR関数でバラした値をTIME関数で再構成する、というような使い方もできます。
なお、24時間を超える累計時間(例: 作業合計が30時間)からは、HOUR関数では正しい値が取れません。HOUR関数は余りで計算するため、30時間は6として返されます。24時間超の累計時間を表示するにはTEXT関数で [h] 書式を使ってください。
=TEXT(A2,"[h]:mm")
Google スプレッドシートでHOUR関数を使いたい方は、スプレッドシートのHOUR関数の記事もあわせてチェックしてみてください。
よくある質問(FAQ)
Q. HOUR関数で「時」を取り出すと、12時間制で返りますか?
A. 常に24時間制で返ります。 セルの表示形式が「2:30 PM」のような12時間表示であっても、=HOUR(A2) の結果は14(24時間制)です。HOUR関数は表示形式ではなく内部の値(シリアル値)をもとに計算します。
Q. HOUR関数で0が返ってきます。なぜですか?
A. 引数に日付だけのデータが渡っている可能性があります。 日付のみのセル(例: 2024/4/20)をHOUR関数に渡すと、時刻部分がないため0時として扱われ、0が返ります。また、=HOUR(0) も0を返します(シリアル値0は1900/1/0 0:00:00)。
Q. HOUR関数とMINUTE関数を組み合わせるには?
A. それぞれ別々に使って組み合わせます。 たとえば「14時30分」の時刻を読みやすいテキストに変換したいなら、次のようにします。
=HOUR(A2)&"時"&MINUTE(A2)&"分"
結果は「14時30分」という文字列になります。
Q. 時間帯で件数を集計する方法は?
A. 補助列にHOUR関数で「時」を取り出してからCOUNTIFを使います。 まずB列に =HOUR(A2) で時間部分を取り出し、その列に対して =COUNTIF(B:B,9) で「9時台」の件数を集計します。1つの数式で複数時間帯をまとめて集計したい場合はSUMPRODUCT関数を使う方法もあります(詳しくは上記の「実務活用パターン」をご覧ください)。
まとめ
HOUR関数は、時刻データから「時」を整数で取り出すシンプルな関数です。
- 構文は
=HOUR(シリアル値)で引数は1つだけ - 戻り値は0〜23の整数(24時間制)
- IF関数と組み合わせれば時間帯ラベルを自動で付けられる
- COUNTIF関数と組み合わせれば時間帯別の集計ができる
- 24時間超の累計時間にはTEXT関数の
[h]書式を使う
まずは =HOUR(A2) で時刻から「時」を取り出すところから試してみてください。勤怠管理や受注ログの分析など、時間帯を使った集計がぐっとラクになります。
関数一覧
biz-tacticsではExcel関数の一覧を3パターンご用意しています。用途に合わせてお使いください。
各一覧の文字色が青くなっている関数はクリックすると解説ページを開くことができます。
エラー値についてのまとめ記事
関数でエラーが発生した際に表示される、エラーの種類を以下の記事でまとめています。
