Excelでは、日付や時刻は見た目上は「2025/7/20」などの形式で表示されますが、内部的には「シリアル値(連続した数値)」で管理されています。
この「シリアル値」をVBAで取得することで、日付の大小比較や計算処理が正確かつ効率的に行えるようになります。
本記事では、セルの表示値とシリアル値の両方をVBAで取得する方法、およびその違いについて解説いたします。
目次
シリアル値とは?
シリアル値とは、1900年1月1日を「1」として、1日ごとに1ずつ増加していく連番のことです。
たとえば「2025年7月20日」は、シリアル値「45502」として扱われます。
VBAコード例:ValueとValue2を使って値を取得する
Sub ShowSerialValue()
Dim checkCell As Range
Set checkCell = Range("C3")
MsgBox "日付形式:" & checkCell.Value & vbCrLf & _
"シリアル値:" & checkCell.Value2
End Sub
補足:
.Value
:セルの表示形式に応じた値(=見た目)を返します。日付であれば「2025/7/20」など。.Value2
:表示形式を無視して**内部的な数値そのもの(=シリアル値)**を返します。
表示形式と実データの違いを理解することが重要
セルに「2025/7/20」と表示されていても、内部では数値「45502」として扱われているため、足し算・引き算や大小比較が容易になります。
たとえば以下のような用途でシリアル値の取得は有効です:
- 日付の順序チェック(期限切れ判定など)
- 日数計算(開始日と終了日の差分)
- 日付を整数型のキーとして利用
まとめ|シリアル値を正しく扱うことで日付処理が一気に楽になる
Excel VBAでは、.Value2
を用いることで日付の実体(シリアル値)をそのまま扱うことができます。
これにより、ユーザーの表示設定に影響されず、常に安定した数値として日付を扱うことが可能となります。
.Value
→ 見た目通りの値(表示形式に依存).Value2
→ 数値としての実データ(常に安定)
この違いを理解することで、より信頼性の高い日付処理やデータ分析が可能になります。
とくにシリアル値は、IF文や条件判定、ソート、日付差計算などで不可欠な概念です。