ValueとValue2

セルの値を取得・設定する際、多くの人が .Value を何も考えずに使っていると思います。しかし.Valueは値の変換処理が行われておりその分時間が掛かります。

しかし.Value2 はシリアル値をそのまま返すため変換処理がない分高速です。

では、.Valueをやめて、.Value2を使うようにした方がよいのでしょうか?

この記事では .Value と .Value2 の違い、そして .Value と .Value2 のどちらを使うべきなのかを説明します。

なお、他のプロパティについて「セルのValueとValue2とTextとFormulaとFormula2の違い」で解説していますので興味があればご覧ください。

.Value と .Value2 の違いとは?

Valueプロパティはデータ型をVBAに合わせて変換します。例えば、日付はDate型で返されます。また、Sum関数などの数値を求める数式があればその計算結果をさらにVBAのデータ型に合わせて変換して返します。

Value2プロパティはExcelのシリアル値と呼ばれる生データをそのまま返します。

Valueは「変換して返す」、Value2は「変換せずに返す」という違いです。変換して返す分、ValueはValue2より遅いです。

日付のサンプル

Excelのセル A1 に 2025/6/16 と入力されているとします。これをTypeName関数を通してデータ型を取得してみます。

実行結果
Date
2025/06/16
Double
45824

つまり、.Value は「Excelの日付」を自動的に Date 型に変換してくれますが、.Value2 は内部で管理されている「シリアル値(Double型)」のまま返します

なお、2025/6/16のシリアル値が45824です。

変換しないので.Value2の方が高速。でもそんなに差がない

.Valueは変換を行う分の処理時間が必要ですが、.Value2は変換処理がないためその分高速です。

ではどの程度の差があるのか計測してみます。

計測には「Ryzen9 3900X(2019年発売)」というCPUを使っています。12コア24スレッドで当時は超高速ではありましたが2025年現在からすると6年前のCPUになります。

実行結果
Value : 2.901 秒
Value2: 2.785 秒

現在2025年で、6年前発売のこのCPUでも100万回の処理で0.1秒ほどの差しかありません

2010年ごろに主流だったコア数が2つとかのIntel Core i5/i3のCPUの場合であれば、「高速に処理したいなら.Value2を使う方がよい」と言えたのですが、Windows10以降で扱うCPUであれば、速度的にも.Valueでも全然OKです。

.Value2を使う理由は?

最近のExcelでは「型変換の有無」が全く速度差にならず .Value も .Value2 もほぼ同等の速度です。

少なくとも速度目的だけで .Value2 を使う必要はありません。

それでも.Value2を使う理由があるとすれば、シリアル値で取得したい場合になります。主に日付をシリアル値で扱いたい場合が多いと思われます。

ただ、日付を扱う場合もほとんどの場合は.ValueでOKのため、通常使う場合は.Valueで問題ないです