数値を日付に変換(20190923→2019/09/23)


これはスゴイ!驚きです。実際にやってみて、思わず「おおっ!できるんだ!」と声を出してしまいました。タイトルに書いたとおり「20190923」みたいな単なる8桁の数値を「2019/09/23」のような日付に変換できます。しかも、難しい関数など覚える必要はありません。

上図のような表があったとします。8桁の数値が入力されています。数値を入力した人は、これを"日付"だと思っているのでしょうけど、日付じゃありませんから。単なる8桁の数値ですから。いや、これもしかしたら、電話番号かもしれないし、製品番号かもしれません。これを日付だと認識できるのは、頭のいい人間だけ。そうでないExcelには無理です。でも、こうした8桁の数値で日付を表すシステムって多いです。特に基幹システムとか変なデータベースとか。そこから与えられた8桁の数値を日付(シリアル値)に変換しないと、Excelでは作業できません。今まで、Excelの歴史25年の中で、全人類が頭を抱えてきました。これが「取得と変換」なら一発です。やってみましょう。まずは、このテーブルをPower Queryエディタに読み込みます。

[列の追加]タブを開き[例からの列]をクリックします。今回は1列しかありませんから[すべての列から]でも[選択範囲から]でも同じですが、もし読み込んだデータに複数の列が存在していたら、この"8桁数値"の列を選択して[選択範囲から]をクリックしてください。

余談ですが、この[例からの列]っていう名称が分かりにくいです。まあ、どこかの列から何かの列を作るんだろうな程度は想像できますが、正直「はぁ?」としか感じません。もっと分かりやすいネーミングにすべきです。安易すぎます。だいたい[例からの列]って、日本語としてどうよ?って思います。さて、実行すると、次のような画面が表示されます。

さらに余談ですが、この画面を見せられて、いったい何をしろというのでしょう。何ができるかも分からないし、何をするのかも直感的に分かりません。「適用するにはCtrl + Enterを押します」って、"適用"って何?いつのことだよ?へ?[OK]ボタンじゃダメなの?などなどチンプンカンプンです。でも、とりあえず、この8桁数値を日付にしたいので、右側[列1]の先頭行に「2019」まで入力してみます。

すると、候補的なリスト的なものが表示されました。よく見ると、その中に「2019/09/23 (数値からの日付)」という項目があります。何やら、胸がときめきますね。これを選択してEnterキーを押すと

おお、日付が入力されました。下の行にも同じように日付を入力したいです。ああ、ここか!ここでCtrl + Enterです。

すべて日付が入力されました。あとは[OK]ボタンをクリックするだけです。

[OK]ボタンをクリックする前の画面をよく見ると「Date.From(Text.From([数値], "ja-JP"))」という式が表示されています。これ要するに「20190923」を「2019/09/23」という日付形式に変換する式なのでしょうね。ああ、どうしてこれを、Excelの標準ワークシート関数として実装してくれないのでしょう。とにかく、8桁の数値を日付に変換できました。これ、後で気づいたのですけど、[列1]の先頭行に「2019」と入力しないでも、[列1]の先頭行をダブルクリックすると、次のような候補リストが表示されました。ここから選ぶ方が簡単です。早く言ってよ~。

さあ、完成です。[数値]列はもう不要ですから[列の削除]で削除して、残った[日付]列だけをシート上に読み込みます。すみません、このへんの手順は面倒くさいの端折ります。別のページをご覧ください。

もちろん、新しい8桁数値を入力すると対応します。

意味不明だった[例からの列]ってのは、要するに、どこかの列に入力されている値を、何かの形式に変換したいとき、その変換のパターンを指定するだけで、変換した新しい列を作ってくれるよって機能みたいです。Excelの機能でいうと、誰も使わないフラッシュフィルの高機能版みたいな感じでしょうか。だったら、今回の「8桁数値→日付」だけでなく、もっといろんなことができるのではないかと。さらにワクワクしてきました。まあ、そのへんに関しては、おそらく長くなるでしょうから「[例からの列]はこんなことができる!(仮題)」として別コンテンツに書きます。にしても「取得と変換」はスゴイです。