Excel VLOOKUP関数で日付が正常に表示されない場合の対処方法

2019年9月16日

VLOOKUP関数の結果として

日付を表示する場合、

下のキャプチャのように

日付ではなく数字が

表示される場合があります。

VLOOKUPの結果で日付を表示した場合、シリアル値がそのまま表示される状態のキャプチャ

この記事ではその対処方法を紹介します。

原因と対処方法

まずこの事象はバグなど不具合ではなく、

シリアル値がそのまま

表示されているだけであり

( シリアル値…1900年1月1日から始まる1日毎の連番 )

日付のデータを正常に取得していることに

替わりがなく見た目が日付に

なっているだけの状態です。

表示形式が原因の場合

VLOOKUP関数の結果を文字列に変化や

文字列結合をしていない場合、

表示形式を変更する必要があります。

まず右クリックで「セルの書式設定」を選択します。

セルを右クリックし、セルの書式設定を選択するキャプチャ

表示形式の分類が日付以外に

なっているはずなので

ここを「日付」に変更します。

セルの書式設定で日付に設定変更するキャプチャ

すると日付として表示されるようになります。

もちろんユーザ定義書式で

任意の形式を設定しても構いません。

セルの書式設定が完了し、日付表示が正常になった状態のキャプチャ

検索結果が見つからないか、空の場合に対処する方法

検査値が見つからない場合、

#N/Aエラーとなります。

検索値が存在せずVLOOKUP関数の結果が#N/Aエラーとなる状態のキャプチャ

これに対処する場合、IFERROR関数を使用します。

IFERROR(VLOOKUP(…),"")
IFERROR関数によりエラーに対処した状態のキャプチャ

しかしこの数式では検索値が存在して

表示項目が空白の場合

不正な表示になります。

検索値が存在して表示項目が空白の場合に不正な表示となる状態のキャプチャ

これは検索結果の空白が0として扱われ

シリアル値の0である1900年1月0日という

あり得ない日付として表示されるためです。

この場合は更にIF関数も使用する必要があります。

IF(IFERROR(VLOOKUP(…),"")="","",VLOOKUP(…))
IF関数を使用して検索結果が空の場合に対処

同じVLOOKUP関数を二つ書いてしまい

冗長でない数式となってしまいますので

VLOOKUP部分を別セルに切り出すと

冗長性と長さが解消されおススメです。

中間セルの数式:IFERROR(VLOOKUP(…),0)
結果セルの数式:IF(中間セル=0,"",中間セル)

中間セルの列は非表示にしても問題ありません。

IFERRORとVLOOKUPを別セルに切り出して数式の質を高めた例

空白文字を結合している場合

下の記事でも紹介している方法ですが、

検索結果が0の場合の対処法で

空白の文字列を結合するものがあります。

VLOOKUP(…)&""

これを行っている場合、セルが日付ではなく

文字列として扱われてしまうため

先述の表示形式変更を行っても

表示が改善されません。

そのため空白の結合を削除して

表示形式変更を実施しましょう。

もし文字列として扱いたい場合は

TEXT関数を利用します。

中間セルの数式:IFERROR(VLOOKUP(…)&"","")
結果セルの数式:TEXT(IF(中間セル="","",中間セル),"yyyy/mm/dd")

検索結果が見つからない場合、空の場合にも

対処してある数式です。

これにより文字列の状態のまま

見た目を正常な日付にすることが可能です。

TEXT関数も使用して結果を文字列にしながら日付の表記にした状態のキャプチャ

関連記事

VLOOKUP関数の使い方・活用方法の記事一覧

IF系関数の使い方・活用方法の記事一覧

数値・日付に表示形式コード(ユーザー定義書式)を適用した文字列を取得(TEXT関数)

VLOOKUP関数で結果が0になる場合の対処方法

フォローする