2024年10月28日【ID:0】
【Excel】8桁の数値の日付を日付形式に変換
外部から出力したファイルなどで、以下のように日付が8桁の数値で出力されている場合があります。

ただ、このままですと、日付として扱うことができません。
そのため、集計には不向きになります。
今回は、上記のような8桁の数値の日付を日付形式に変換する方法について解説していきます。
見た目のみを日付形式にする
まずは、表示形式を用いて、見た目のみを日付形式にしてみます。
8桁の数値が入力されている範囲を選択し、表示形式の設定から[その他の表示形式]を選択します。

以下の画面にて、[ユーザー定義]を選択し、「#-00-00」と入力します。

「#」は数値を表し、「0」は0埋めの数値を表します。
そのため、元の8桁の数値の先頭から2つは0埋めで表示し、次に「-」、そして、次の2つを0埋めで表示し、また「-」、後は残りの数値を「#」で表示しています。
この設定内容で確定することで、以下のように「-」区切りに日付形式の見た目にすることができます。

※「-」ではなく「/」にする場合は、「#"/"00"/"00」と「/」を「"」で囲む必要があります。
値を日付形式に変換する
前半の手順ですと、あくまで見た目のみの対応になります。
そのため、集計には向いていません。
集計がしやすいようにするため、次は、見た目ではなく実際の値を日付形式にしていきます。
まずは、先ほど設定した表示形式を「標準」に戻します。

※実際の値が分かりづらいため、元の8桁の数値に戻しています。
では、隣のセル(C列)に日付形式にした値を表示していきます。
初めに、TEXT関数を用いて、日付形式にする表示形式(前半に設定した内容)を適用した文字列を取得します。
TEXT関数の使い方は、以下になります。
=TEXT(値, 表示形式)
// 値:対象の値
// 表示形式:対象の値に対し、適用したい表示形式
実際に以下のように入力して、表示形式を適用した文字列を取得します。
=TEXT(B2,"#-00-00")

文字列として取得できましたら、次は、この文字列を日付に変換する必要があります。
日付を表す文字列から日付に変換する場合は、DATEVALUE関数、もしくはVALUE関数を活用します。
これらの使い方は、以下になります。
=DATEVALUE(日付文字列)
// 日付文字列:日付を表す文字列
=VALUE(文字列)
// 文字列:数値や日付などを表す文字列
こちらでは、VALUE関数を用いて、以下のように入力します。
=VALUE(TEXT(B2,"#-00-00"))

上記のように、日付を表す数値(シリアル値)を取得できましたら、表示形式を日付形式にすることで完成です。

他の行のセルには、先頭の数式をコピーするだけで変換できます。

補足
日付の文字列を数値に変換する際に、先ほどはVALUE関数を活用しましたが、数値による計算を行うことでも変換することができます。
例えば、以下のような方法があります。
=0+TEXT(B2,"#-00-00")
=1*TEXT(B2,"#-00-00")
=--TEXT(B2,"#-00-00")
// 「--」は-1×-1×[値]という意味になる
// ※「++」では変換できないので注意
