1/17/2023

Excel。文字型になっている日付を日付型として使いたいけど、どうしたらいい【DATE】

Excel。文字型になっている日付を日付型として使いたいけど、どうしたらいい

<LEFT+LEN関数・表示形式>

データを読み込んでみたら、日付がおかしい。

どうおかしいのかというと、文字(文字型)になっているわけです。


これでは、Excelの様々な機能を有効につかうことができません。


A列の日付は、日付はシリアル値なので数値なので、日付は右揃えになっているはずですが、左揃えになっています。


また、「=A2+1」と数式をつくってみたところ、「#VALUE!」というエラーが表示されました。


つまり、「日付」ではなくて「文字」として認識されているわけです。


このデータの原因は、「曜日」です。

曜日が付いてなければ、日付として認識されます。


まずは、対応方法をご紹介します。

色々な方法がありますが、比較的シンプルな方法をご紹介します。


C2に次の数式を設定し、オートフィルで数式をコピーします。

=LEFT(A2,LEN(A2)-3)*1

そのあと、C2:C3を範囲選択して、表示形式をホームタブの数値の書式にある「短い日付形式」に変更します。


これで、日付型にすることができました。


テキストファイルでもCSVでも曜日をつけたいなら、日付と分けてほしいところです。


C2に設定した数式の説明をしておきます。

=LEFT(A2,LEN(A2)-3)*1


なぜ、DATE関数ではなくて、LEFT関数をつかっているのか。


日付にするには、DATE関数をつかうというのがスタンダートなのですが、年と月と日をどうやったら抽出することができるのかを考えると、月と日をどのように抽出するのかというのが、問題になります。


例えば、2月の場合MID関数で、6文字目から1文字とすれば、抽出できますが、11月の場合だと、2文字抽出するように数式を設定しなければいけません。


同じように、日も、月によっては、何文字目から抽出したらいいのかも、異なるので、複雑な数式を用意する必要があります。


そもそも、曜日が邪魔なだけなので、曜日をカットした状態をつくればいいわけです。


そこで、LEFT関数をつかうわけです。

LEN関数をつかって、セル内の文字数を算出させて、曜日の「(曜日)」の3文字分の減算した値を左から抽出することで、文字数値型になります。


文字型を数値型にするVALUE関数をつかってもいいのですが、ネストだらけになってしまうので、VALUE関数をつかわずに、文字数値型に「×1」することで、数値型にすることができます。


また、算出結果に、TEXT関数で、年月日の短い日付形式をネストすると、また文字数値型に戻ってしまうので、表示形式をつかいました。


簡単に思われる処理も色々面倒だったりしますので、Excelにインポートする前に解決できるものは解決しておきたいところですね。