ExcelのHOUR関数の使い方|時刻から「時」を取り出す基本と実務活用

スポンサーリンク

「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.00:00(深夜0時)
0.512:00(正午)
0.7518: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パターンご用意しています。用途に合わせてお使いください。

各一覧の文字色が青くなっている関数はクリックすると解説ページを開くことができます。

エラー値についてのまとめ記事

関数でエラーが発生した際に表示される、エラーの種類を以下の記事でまとめています。

【Excel】セルに表示されるエラーの種類と原因、対処方法を解説

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