• 作成日 : 2025年8月25日

NOW関数の使い方:現在の日時をリアルタイムで表示する方法

NOW関数は、現在の日時(システム日時)を自動的に取得し、セルに表示する関数です。ワークシートが再計算されるたびに最新の時刻に更新されるため、作業記録やリアルタイムダッシュボード、残り時間の表示などに活用できます。

例えば、データ入力時刻の自動記録、会議資料の最終更新日時の表示、24時間営業の店舗での時間帯別処理などを簡単に実現できます。本記事では、NOW関数の基本的な使い方から実践的な活用方法、他の関数との効果的な組み合わせまで、初心者の方にも理解しやすく解説していきます。

NOW関数とは

NOW関数は、システム上の現在日時を取得し、日付と時刻を含むシリアル値として返します。ワークシートが再計算されたタイミングで自動更新されるため、常に最新の日時を参照できます。

この関数の重要な特徴は、揮発性関数であることです。つまり、ワークシートで何らかの変更があるたび、またはF9キーで再計算を実行するたびに、NOW関数の値が更新されます。これにより、常に最新の日時を表示できますが、過去の特定時点を記録したい場合は値として貼り付ける必要があります。

NOW関数の基本的な使い方

関数の構文を理解する

NOW関数の構文は非常にシンプルです。

=NOW( )

括弧内に引数は不要ですが、括弧は必須です。

基本的な使用例

実際の使用例を見てみましょう。

現在の日時を表示:

=NOW( )

この結果は「2024/03/15 14:30:45」のような形式で表示されます(表示形式により異なります)。

日付のみを表示したい場合:

=TEXT(NOW(), “yyyy/mm/dd”)

=INT(NOW())  ‘ 時刻部分を切り捨て

時刻のみを表示したい場合:

=TEXT(NOW(), “hh:mm:ss”)

=MOD(NOW(), 1)  ‘ 日付部分を除去

表示形式のカスタマイズ

NOW関数の結果は、セルの書式設定で様々な形式に変更できます。

=TEXT(NOW(), “yyyy年mm月dd日 hh時mm分ss秒”)

=TEXT(NOW(), “mm/dd/yyyy hh:mm AM/PM”)

=TEXT(NOW(), “dddd, mmmm dd, yyyy”)  ‘ 英語の曜日と月名

NOW関数の実践的な利用シーン

作業ログの自動記録

データ入力や更新作業の履歴を自動的に記録する際、NOW関数でタイムスタンプを生成できます。ただし、記録を固定するには、値として貼り付ける必要があります。VBAやGoogle Apps Scriptと組み合わせることで、変更時に自動的に時刻を記録するシステムを構築できます。

在庫管理システムでは、商品の入出庫時刻を記録し、在庫の動きを時系列で追跡できます。これにより、在庫回転率の分析や、ピーク時間帯の特定が可能になります。

リアルタイムダッシュボード

経営ダッシュボードやKPI管理画面で、「最終更新:〇月〇日 〇時〇分」という表示を自動更新できます。NOW関数と条件付き書式を組み合わせることで、古いデータには警告色を表示するなど、データの鮮度を視覚的に管理できます。

24時間稼働の工場やコールセンターでは、現在の時間帯に応じて表示内容を切り替えたり、シフト管理を自動化したりできます。

締切管理とカウントダウン

プロジェクトの締切日時までの残り時間をリアルタイムで表示できます。NOW関数で現在時刻を取得し、締切日時との差分を計算することで、「残り〇日〇時間〇分」という表示が可能です。

入札締切、キャンペーン終了、イベント開始までのカウントダウンタイマーとして活用でき、緊急度に応じて色分けすることで、優先順位の管理も容易になります。

NOW関数の応用テクニック

経過時間の計算

作業開始からの経過時間を計算:

=(NOW()-開始時刻)*24  ‘ 時間単位

=(NOW()-開始時刻)*24*60  ‘ 分単位

=(NOW()-開始時刻)*24*60*60  ‘ 秒単位

時間帯による条件分岐

現在の時間帯に応じて処理を変更:

=IF(HOUR(NOW())<12, “午前”, “午後”)

=IF(AND(HOUR(NOW())>=9, HOUR(NOW())<18), “営業時間内”, “営業時間外”)

定期的な更新トリガー

特定の間隔で処理を実行:

=IF(MINUTE(NOW())=0, “正時です”, “”)

=IF(MOD(MINUTE(NOW()), 15)=0, “15分間隔の処理”, “”)

NOW関数でよくあるエラーと対策

値が固定されない問題

NOW関数は常に更新されるため、過去の時刻を記録できません。

記録を固定する方法:

‘ 手動:コピー → 値として貼り付け

‘ ショートカット:Ctrl+Shift+: (現在時刻を値として入力)

VBAでの自動記録:

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Column = 1 Then

Cells(Target.Row, 2).Value = Now

End If

End Sub

データ入力時のタイムスタンプなど、固定した時刻が必要な場合は、NOW関数の結果を値として保存する必要があります。手動でのコピー&ペーストや、VBAマクロによる自動化が一般的な解決方法です。循環参照を使った方法もありますが、ファイルが重くなるため推奨されません。

更新頻度によるパフォーマンス低下

NOW関数を大量に使用すると、再計算のたびに処理が重くなります。

パフォーマンス改善策:

=IF(更新フラグ=”ON”, NOW(), 固定時刻)

必要な箇所のみに限定:

=$A$1  ‘ 1つのセルにNOW()を入力し、他のセルは参照

大規模なワークシートでは、NOW関数の使用を最小限に抑え、1つのセルに入力した結果を他のセルから参照する方法が効率的です。また、自動計算を手動計算に切り替えることで、意図しない更新を防げます。

タイムゾーンの問題

NOW関数はローカルタイムを返すため、異なるタイムゾーンでの使用に注意が必要です。

UTC時刻への変換:

=NOW()-タイムゾーン差/24  ‘ 日本時間からUTCは-9時間

特定タイムゾーンの表示:

=”東京: ” & TEXT(NOW(), “hh:mm”) &

” / NY: ” & TEXT(NOW()-13/24, “hh:mm”)

国際的なプロジェクトでは、タイムゾーンの違いを考慮する必要があります。基準となるタイムゾーン(通常UTC)を決め、各地域の時刻を計算で求めることで、混乱を避けられます。サマータイムの考慮も必要な場合があります。

日付のシリアル値の理解不足

エクセルの日付時刻は数値として扱われることを理解していないと、計算エラーが発生します。

シリアル値の確認:

=NOW()  ‘ 通常表示

=VALUE(NOW())  ‘ 数値表示(例:44636.5)

計算での注意点:

=NOW()+1  ‘ 1日後

=NOW()+1/24  ‘ 1時間後

=NOW()+1/24/60  ‘ 1分後

エクセルでは、1日を1として時刻を小数で表現します。この仕組みを理解することで、日時の計算が容易になります。例えば、0.5は12時間(正午)を表します。

NOW関数と他の関数との組み合わせ

TODAY関数との使い分け

日付のみが必要な場合との比較:

=NOW()    ‘ 2024/03/15 14:30:45

=TODAY()  ‘ 2024/03/15

=NOW()-TODAY()  ‘ 0.604(現在時刻の小数部分)

NOW関数は日時を、TODAY関数は日付のみを返します。用途に応じて使い分けることで、不要な時刻情報を含まない、より効率的な処理が可能です。日付のみの比較ではTODAY関数を使用することで、時刻の違いによる誤判定を防げます。

DATEDIF関数での期間計算

現在までの経過期間を詳細に表示:

=DATEDIF(開始日, NOW(), “Y”) & “年” &

DATEDIF(開始日, NOW(), “YM”) & “ヶ月” &

DATEDIF(開始日, NOW(), “MD”) & “日”

プロジェクト開始からの経過時間や、年齢計算などに活用できます。DATEDIF関数は隠し関数ですが、期間計算には非常に便利です。勤続年数や契約期間の管理に適しています。

TEXT関数での柔軟な表示

曜日や和暦を含む表示:

=TEXT(NOW(), “ggge年m月d日(aaa) h時m分”)  ‘ 令和6年3月15日(金) 14時30分

=TEXT(NOW(), “[$-409]dddd, mmmm d, yyyy h:mm AM/PM”)  ‘ Friday, March 15, 2024 2:30 PM

地域や用途に応じた表示形式を簡単に実現できます。報告書の日付表示や、多言語対応のシステムで有効です。TEXT関数の書式コードを活用することで、ほぼ無限の表示パターンが可能です。

IF関数での営業時間判定

複雑な営業時間の判定:

=IF(OR(WEEKDAY(NOW(), 2)>5, HOUR(NOW())<9, HOUR(NOW())>=18),

“営業時間外”, “営業時間内”)

=IF(AND(WEEKDAY(NOW(), 2)<=5, TIME(HOUR(NOW()), MINUTE(NOW()), 0)>=TIME(9,0,0),

TIME(HOUR(NOW()), MINUTE(NOW()), 0)<TIME(18,0,0)),

“営業中”, “休業中”)

平日・休日、営業時間を考慮した自動判定により、問い合わせ対応の可否や、システムの稼働状態を表示できます。コールセンターやサポートデスクの運用に有効です。

NETWORKDAYS関数での営業日計算

現在から締切までの営業日数:

=NETWORKDAYS(NOW(), 締切日) & “営業日”

=NETWORKDAYS(INT(NOW()), 締切日) –

IF(AND(WEEKDAY(NOW(), 2)<=5, HOUR(NOW())>=18), 1, 0)

土日祝日を除いた実働日数を計算できます。当日の営業時間が終了している場合は1日減らすなど、より精密な計算も可能です。納期管理や工程管理で重要な機能です。

MINUTE/SECOND関数での詳細時刻

秒単位の精密な表示:

=HOUR(NOW()) & “:” & TEXT(MINUTE(NOW()), “00”) & “:” & TEXT(SECOND(NOW()), “00”)

=”更新時刻: ” & TEXT(NOW(), “hh:mm:ss”) & ” (次回更新まで” &

60-SECOND(NOW()) & “秒)”

リアルタイムモニタリングや、精密な時間管理が必要なシステムで活用できます。製造ラインの稼働監視や、金融取引のタイムスタンプなどで使用されます。

NOW関数は、現在日時の取得と時間管理に活用できる

NOW関数は、現在の日時を自動的に取得し、再計算のたびに更新される動的な関数です。作業ログの自動記録、ダッシュボードの更新時刻表示、カウントダウンの残り時間計算など、リアルタイム性が求められる業務に最適です。

さらに、TEXT・IF・NETWORKDAYS関数などと組み合わせることで、表示形式の調整や条件分岐、営業日数の算出といった応用的な処理も可能になります。

一方で、常に値が変化する特性に注意が必要な場面もあり、記録として残したい場合は「値として貼り付ける」などの工夫が求められます。NOW関数を正しく活用することで、時間ベースの管理や自動化処理の精度が高まり、業務効率化に貢献できます。


※ 掲載している情報は記事更新時点のものです。

※本サイトは、法律的またはその他のアドバイスの提供を目的としたものではありません。当社は本サイトの記載内容(テンプレートを含む)の正確性、妥当性の確保に努めておりますが、ご利用にあたっては、個別の事情を適宜専門家にご相談いただくなど、ご自身の判断でご利用ください。

関連記事