Googleスプレッドシートで日付や時刻を扱うとき、意図しない時刻のずれに悩んだことはありませんか。特に、入力した日付が自動的に1日ずれたり、時間が9時間ズレて表示されたりする現象は、タイムゾーン設定とDate関数の仕組みを理解していないと起こりやすい問題です。この記事では、スプレッドシートのタイムゾーン設定を正しく確認・変更する方法と、Date関数を含む日付関連関数がタイムゾーンにどう影響されるかを詳しく解説します。これらの知識を身につければ、時刻のずれを未然に防ぎ、正確な日付計算ができるようになります。
【要点】タイムゾーンとDate関数の関連性を押さえて時刻ずれを解消する
- ファイル設定のタイムゾーン確認と変更: スプレッドシートのタイムゾーンを正しい地域に設定すると、すべての日付関数の基準が統一されます。
- Date関数とNOW関数の違いを理解する: Date関数は指定した日時をシリアル値で返し、NOW関数は現在時刻を動的に取得するため、タイムゾーンの影響を受け方が異なります。
- TEXT関数でタイムゾーンを固定表示する: タイムゾーンに依存せず特定の地域の時刻を表示したい場合、TEXT関数とカスタム書式で調整します。
ADVERTISEMENT
目次
スプレッドシートのタイムゾーンがDate関数に与える影響
Googleスプレッドシートは、内部的にすべての日付時刻を協定世界時(UTC)で管理しています。シートの表示は、ファイルの設定で指定されたタイムゾーンに自動変換されて表示されます。そのため、Date関数で「2025年1月1日」と指定しても、スプレッドシートの内部ではUTCの日時として扱われ、表示時にタイムゾーンが加算されます。例えば、タイムゾーンが「日本標準時(UTC+9)」の場合、Date(2025,0,1)は内部的には「2024-12-31 15:00:00 UTC」として保存され、表示時に+9時間されて「2025-01-01 00:00:00」と表示されます。これは、時刻部分が0時0分0秒であるためずれを感じませんが、時刻成分を含む計算を行うと影響が出ることがあります。特にNOW関数やTODAY関数は現在時刻を取得するため、タイムゾーンの影響を直接受けます。この仕組みを理解していないと、シートを別のタイムゾーン設定のファイルにコピーしたときや、IMPORTRANGEで参照したときに時刻がずれる原因になります。
タイムゾーン設定を確認・変更する手順
- ファイルメニューを開く
スプレッドシートを開いた状態で、上部メニューの「ファイル」をクリックします。 - 「設定」を選択する
ドロップダウンメニューから「設定」をクリックします。設定ダイアログが開きます。 - 「計算」タブでタイムゾーンを変更する
ダイアログ上部の「計算」タブをクリックし、「タイムゾーン」のプルダウンから希望の地域を選択します。日本標準時を使用する場合は「(GMT+09:00)日本標準時」を選びます。 - 「設定を保存」ボタンをクリックする
変更後、ダイアログ右下の「設定を保存」をクリックします。これでシート全体のタイムゾーンが変更されます。
この設定はファイルごとに独立しており、新しいファイルを作成するたびに確認することをおすすめします。また、現在のタイムゾーンは「ファイル」→「スプレッドシートの設定」の「全般」タブでも確認できます。
Date関数を使う際の注意点
Date関数はタイムゾーンに依存しない
Date関数は、引数で指定した年・月・日・時・分・秒をもとにシリアル値を生成します。このとき、時刻部分が指定されなければ0時0分0秒として扱われます。表示はシートのタイムゾーンに変換されるため、日付がずれることは通常ありません。しかし、時刻部分を指定すると、その時刻が内部でUTCとして扱われ、表示時にタイムゾーン分加算されるため、意図しない時刻になる場合があります。例えば、Date(2025,0,1,9,0,0)と入力した場合、内部ではUTC 0時0分0秒(2025-01-01 00:00:00 UTC)として保存され、日本時間で表示すると+9時間されて「2025-01-01 09:00:00」と正しく表示されます。しかし、シートのタイムゾーンを「アメリカ東部標準時(UTC-5)」に変更すると、表示は「2025-01-01 04:00:00」になります。このように、Date関数で指定した時刻はタイムゾーンの変更に応じて表示が変わるため、固定の時刻を扱いたい場合はTEXT関数などと組み合わせる必要があります。
NOW関数とTODAY関数はタイムゾーンを反映する
NOW関数は現在の日時を、TODAY関数は現在の日付を返します。これらの関数は、シートのタイムゾーン設定に基づいて現在時刻を取得するため、タイムゾーンを変更すると戻り値も変わります。例えば、ファイルのタイムゾーンが日本標準時の場合、NOW()は日本時間の現在時刻を返します。これをアメリカ東部標準時に変更すると、NOW()はその時刻(日本時間から14時間遅れた時刻)を返すようになります。この特性を利用して、タイムゾーンを動的に切り替えたい場合に便利ですが、逆に固定の基準時刻が必要な場合は注意が必要です。
TEXT関数でタイムゾーンを固定表示する方法
シートのタイムゾーン設定に影響されずに特定の地域の時刻を表示したい場合、TEXT関数とカスタムの日付書式を使います。ただし、TEXT関数は指定された日時シリアル値をそのまま書式変換するため、タイムゾーンの変換は自動では行われません。そこで、明示的にUTCからの時差を計算して加減算します。例えば、日本時間(UTC+9)を固定で表示したい場合、=TEXT(NOW()+9/24,”yyyy-mm-dd hh:mm:ss”)とします。NOW()はUTCベースのシリアル値(内部的にUTCとして扱われる)ですが、表示はシートのタイムゾーンに変換されるため、この式はシートのタイムゾーンに関係なく常に日本時間を表示します。ただし、この方法ではシートのタイムゾーンが変わっても表示が変わらないため、注意が必要です。
ADVERTISEMENT
タイムゾーンのずれが発生するよくあるパターン
IMPORTRANGEで別ファイルから日付を参照するとき
IMPORTRANGE関数で別のスプレッドシートから日付データをインポートすると、参照元と参照先のタイムゾーン設定が異なる場合に時刻がずれます。これは、インポートされるデータが内部のUTCシリアル値のままであり、表示時に参照先のタイムゾーンに変換されるためです。対策として、インポート元とインポート先のタイムゾーンを統一するか、TEXT関数で文字列として取り込む方法があります。文字列として取り込めばタイムゾーンの影響を受けません。
エクスポート・インポート時に時刻がずれる
スプレッドシートをCSVなどにエクスポートするとき、時刻は内部的にUTCで書き出される場合があります。そのため、エクスポートしたファイルを別のタイムゾーンのシステムで開くと、時刻がずれて表示されることがあります。回避策として、エクスポート前にタイムゾーンをUTCに設定しておくか、TEXT関数で文字列化した値をエクスポートする方法が有効です。
配列数式内でDate関数を使うとき
ARRAYFORMULAとDate関数を組み合わせた場合、各行のタイムゾーン解釈が一貫しないことがあります。特に、Date関数に年・月・日だけを指定し、時刻を指定しない場合は問題になりにくいですが、時分秒を含む場合は注意が必要です。対策として、日付だけを扱う場合はDate関数をそのまま使い、時刻を含む計算は別途行うことをおすすめします。
タイムゾーン固定と動的な場合の関数比較
| 関数 | タイムゾーンの影響 | 用途 |
|---|---|---|
| =NOW() | シートのタイムゾーンに依存 | 動的な現在時刻の取得 |
| =DATE(2025,1,1) | 表示のみタイムゾーン変換 | 固定日付の生成(時刻指定なし) |
| =TEXT(NOW()+9/24,”yyyy-mm-dd hh:mm:ss”) | タイムゾーンに依存しない固定表示 | 特定タイムゾーンの時刻を文字列で表示 |
| =IMPORTRANGE(“URL”,”Sheet1!A1″) | 参照元と参照先の両方のタイムゾーンに影響 | 他シートからの日付データ取得 |
表からわかるように、動的な時刻を扱うNOW関数はタイムゾーンに完全に依存しますが、Date関数は時刻成分がなければほぼ影響を受けません。固定表示が必要な場合はTEXT関数で文字列に変換するのが確実です。
まとめ
この記事では、Googleスプレッドシートにおけるタイムゾーン設定の確認・変更方法と、Date関数をはじめとする日付関数のタイムゾーンへの応答について解説しました。ポイントは、ファイルのタイムゾーン設定がすべての日付表示の基準になること、Date関数は指定した日時をUTCで保存してシートのタイムゾーンで表示すること、そしてNOW関数はシートのタイムゾーンの現在時刻を返すことです。時刻のずれを防ぐには、ファイルのタイムゾーンを統一するか、TEXT関数を使って特定のタイムゾーンの時刻を文字列として固定表示する方法が有効です。次に、他のタイムゾーンをまたぐデータ連携や、自作関数でのタイムゾーン制御にも挑戦してみてください。
ADVERTISEMENT
超解決 第一編集部
疑問解決ポータル「超解決」の編集チーム。正確な検証と、現場視点での伝わりやすい解説を心がけています。
Googleスプレッドシートの人気記事ランキング
- 【Googleスプレッドシート】GOOGLEFINANCE関数で株価・為替を取得!リアルタイムデータの呼び出し
- 【Googleスプレッドシート】印刷範囲を指定して印刷!特定範囲だけPDFや紙に出す手順
- 【Googleスプレッドシート】新しいスプレッドシートを作成する3つの方法!ドライブ・URL・テンプレート
- 【Googleスプレッドシート】数値の連続データを自動入力!オートフィルの活用
- 【Googleスプレッドシート】ダークモードを有効にする!目に優しい配色への切替
- 【Googleスプレッドシート】株価APIで株式データを自動取得!GOOGLEFINANCE超え活用
- 【Googleスプレッドシート】共有相手が編集できない時のチェック!権限と許可状態の確認
- 【Googleスプレッドシート】ページ設定で用紙サイズと向きを調整!印刷レイアウトの基本
- 【Googleスプレッドシート】Excelファイルxlsxをインポートする手順!ドラッグ&ドロップで取り込み
- 【Googleスプレッドシート】条件付き書式をコピーする!書式のみペーストの活用
