データによっては、日付が「8桁の数字」として記録されているケースもある。たとえば、2023年8月7日の日付が「20230807」と表記されている場合などだ。今回は、こういった「8桁の数字」を「日付データ」(シリアル値)に変換する方法、ならびに、その逆変換について紹介していこう。
「8桁の数字」を「日付データ」に変換する方法
システムからダウンロードしたデータを扱うときに、日付が「8桁の数字」で記録されているデータに遭遇することもある。たとえば、2022年12月15日は「20221215」、2023年8月7日は「20230807」という具合に日付が記録されているケースもある。このような記述形式は、日付を含むファイル名にもよく利用されている。
ただし、このままでは日付データとして扱えないので、文字を抜き出す関数LEFT、MID、RIGFHTを使って「8桁の数字」を「日付データ」(シリアル値)に変換する方法を紹介していこう。
ここでは、あるユーザーのポイント履歴を記録した表を使って、具体的な手順を解説していこう。この表の1列目には、日付が「8桁の数字」で記録されている。
まずは、データ変換用に列を挿入する。
続いて、「8桁の数字」から最初の4文字(年)、中間の2文字(月)、最後の2文字(日)を抜き出す作業を進めていく。このように、データから「指定した数」だけ文字を抜き出したいときは、LEFT、MID、RIGHTといった関数を活用するとよい。
「関数LEFT」は、データの先頭から指定した「文字数」だけ文字を抽出する関数となる。その書式は以下のとおりで、第1引数に「文字列」、第2引数に抜き出す「文字数」を記述する。
◆関数LEFTの書式
=LEFT(文字列, 文字数)
関数LEFTは、基本的に「文字列データ」に対して使用する関数となるが、今回の例のように「数値データ」に対して文字の抽出を行うことも可能だ。今回の例の場合、以下のように関数LEFTを記述すると、「8桁の数字」から「最初の4文字」を抽出できる。
これで「年」の部分だけを抽出できたことになる。なお、抽出結果が「左揃え」で配置されていることからも分かるように、抽出後のデータは「文字列データ」として扱われる仕様になっている。
続いては、「関数RIGHT」の使い方を紹介していこう。こちらは、データの末尾から指定した「文字数」だけ文字を抽出する関数となる。
◆関数RIGHTの書式
=RIGHT(文字列, 文字数)
たとえば「=RIGHT(A2,2)」と関数を記述すると、「A2セルのデータ」から「末尾の2文字」だけを抜き出すことが可能となる。A2セルが日付を示す「8桁の数字」であった場合は、「日」の部分だけを抽出できることになる。
最後に紹介する「関数MID」は、データの中間部分にある文字を抜き出す関数となる。引数は3つ必要で、「何文字目から」を第2引数、「何文字分」を第3引数で指定する仕様になっている。
◆関数MIDの書式
=MID(文字列, 開始位置, 文字数)
たとえば「=MID(A2,5,2)」と関数を記述すると、「A2セルの5文字目から2文字分」のデータを抜き出すことができる。A2セルが日付を示す「8桁の数字」であった場合は、「月」の部分だけを抽出できることになる。
このようにLEFT、MID、RIGHTといった関数を使うと、「年」、「月」、「日」に相当する文字(数字)だけを抽出することが可能となる。あとは、関数DATE(※)で「日付データ」に変換するだけだ。
(※)関数DATEの使い方は、第17回の連載で詳しく解説。
関数DATEの引数は「数値データ」で指定するのが基本となるが、今回の例のように「数字だけの文字列データ」であった場合、Excelが勝手に「数値データ」に変換してくれる。よって、問題なく使用することが可能だ。
「Enter」キーを押して関数を実行すると、正しく「日付データ」に変更されていることを確認できるだろう。
以上が「8桁の数字」を「日付データ」に変換するときの正攻法となる。LEFT、MID、RIGHTといった関数は「文字列データ」に対して使用するのが一般的であるが、今回の例のように「数値データ」に対して活用できるケースもある。