サイトアイコン A1 Style

協定世界時(UTC)を日本標準時(JST)に変換するユーザー定義関数【コード付き】

はじめに

Excel VBA を使用してデータを処理する際、時刻情報の取り扱いが重要になります。特に、国際的なデータを扱う場合、協定世界時(UTC)を日本標準時(JST)に変換する処理が必要になることが多いです。本記事では、VBAでUTCからJSTに変換するユーザー定義関数(UDF)を作成し、その使い方や注意点を詳しく解説します。

UTCとJSTの基本

協定世界時(UTC)とは?

協定世界時(UTC: Coordinated Universal Time)は、世界の標準時として使用されており、経度0度のグリニッジ標準時(GMT)を基準とした時刻です。

日本標準時(JST)とは?

日本標準時(JST: Japan Standard Time)は、日本で用いられている標準時で、UTC+9時間の時差があります。つまり、UTCの時刻に9時間を加えることでJSTに変換できます。


VBAによるUTCからJSTへの変換関数

VBAでは、Date 型や時間関連の関数を使用して時刻の変換を行えます。以下に、UTCをJSTに変換するユーザー定義関数を紹介します。

ユーザー定義関数のコード

Function UTCtoJST(ByVal utcString As String) As Variant
    Dim datePart As String, timePart As String
    Dim utcDate As Date
    
    ' 入力形式チェック
    If Not utcString Like "####-##-##T##:##:##Z" Then
        UTCtoJST = CVErr(xlErrValue) ' #VALUE! エラーを返す
        Exit Function
    End If
    
    ' "T"と"Z"を除去して日付と時刻を分割
    On Error Resume Next
    datePart = Split(utcString, "T")(0)
    timePart = Left(Split(utcString, "T")(1), 8)
    
    ' 日付と時刻を結合し、Date型に変換
    utcDate = CDate(datePart & " " & timePart)
    If Err.Number <> 0 Then
        UTCtoJST = CVErr(xlErrNum) ' #NUM! エラーを返す
        Exit Function
    End If
    On Error GoTo 0
    
    ' JST(UTC+9時間)に変換
    UTCtoJST = utcDate + TimeValue("9:00:00")
End Function

この関数の動作

この関数をExcelのセルで =UTCtoJST(A1) のように使用できます。

ユーザー定義関数の使用方法

Excelのセルで使用

  1. ExcelのVBAエディタ(Alt + F11)を開く。
  2. 標準モジュール(Module)を追加し、上記のコードを貼り付け。
  3. Excelのセルで次のように入力。
   =UTCtoJST(A1)

A1にUTC時刻が入力されている場合、JSTに変換された値が表示されます。

VBAコード内で使用

Dim result As Variant
result = UTCtoJST("2006-12-30T10:35:00Z")
Debug.Print result  ' 2006/12/30 19:35:00 と表示される

直接文字列を入力する場合は =UTCtoJST("2006-12-30T10:35:00Z") のようにダブルクォーテーションで囲む必要があります。

エラー処理

注意点

正しいモジュールの選択

ユーザー定義関数(UDF)を ワークシートのセルで使用する場合は、標準モジュールに保存する必要があります。

標準モジュール(Module1, Module2…)

📌 標準モジュールなら、全シート・他のVBAコードでも使用可能。

シートモジュール(Sheet1, Sheet2…)

ThisWorkbook モジュール

クラスモジュール

マクロ有効ブックとして保存

ユーザー定義関数(UDF)を含むExcelファイルは、**「Excel マクロ有効ブック(.xlsm)」または「Excelアドイン(.xlam)」**として保存する必要があります。

通常の .xlsx 形式ではVBAが保存されず、関数が動作しません。

マクロの有効化が必要
ファイルを開いた際に、Excelの「マクロを有効にする」オプションを選択する必要があります。

計算速度・制限

関数が更新されない場合

VBAのユーザー定義関数(UDF)は通常のExcel関数と異なり、手動再計算が必要な場合があります。
F9 キーを押して再計算
Ctrl + Alt + F9 で全セルを強制再計算
Application.Volatile をVBA内で使用すると、自動再計算が可能(ただし計算が増え処理が重くなる)

まとめ

UTCは世界標準時刻で、日本標準時(JST)はUTC+9時間。

ユーザー定義関数(UDF)を使用するメリット

注意が必要な事項

Excel VBAで時刻を正しく管理し、データ処理をよりスムーズに進めましょう!

モバイルバージョンを終了