いきなり答える備忘録

Google Workspace・Microsoft 365・LibreOfficeなどに関するメモ

(Excel)8桁の数字を日付に変換する方法

 Excelで、「20231224」のような8桁の数字(数値または文字列)を日付に変換する方法についてです。
 関数を使う方法と、メニューを使って値を直接変換する方法を紹介します。

DATE関数等を使う方法

 B3:B8の範囲に6つの値(数値と文字列が3つずつ)が並んでいます。
 C3セルに式を入力し、B3セルの値を日付に変換しています。

 C3セル

=DATE(LEFT(B3,4),MID(B3,5,2),RIGHT(B3,2))

 LEFT関数で文字のうち左から4つを、MID関数で5文字目から2文字を、RIGHT関数で右から2文字を抽出し、それぞれDATE関数の引数(年,月,日)とすることで日付を生成するという式です。
 


 式をフィルコピーするとすべての値が日付になりました。
 式はやや複雑ですが、表示形式を変更しなくても日付が表示されるのがメリットです。
 異なる形式(和暦表示など)にしたい場合は表示形式を変更する必要がありますが、その場合は次の方法の方が簡単です。

TEXT関数を使う方法

 まずは次のような式をC3セルに入力し、B3セルの値を数値(シリアル値=日付に対応する数値)に変換します。
 

 C3セル

=TEXT(B3,"0000-00-00")*1

 B3セルの値を、2つのハイフンを挿んだ文字列に変換しています(「2023-12-24」のような、日付とみなされる文字列になります)。さらに「*1」をつなげることでシリアル値(日付に対応する数値)に変換しています。



 次にB3セルを右クリックして「セルの書式設定」をクリックし、ダイアログ中の「分類」から「日付」を選択し、「種類」から適当な形式を選んでクリックします。

 


 ダイアログ下部のOKをクリックすると、今度は日付形式で表示されました。

 


 そのまま下にフィルコピーすると同様にすべての値が日付になりました。
 備考ですが、最初の式を「=TEXT(B3,"0000/00/00")*1」とするとエラーになります。これはスラッシュが特殊な意味を持っているためで、「=TEXT(B3,"0000""/""00""/""00")*1」や「=TEXT(B3,"0000!/00!/00")*1」とすればうまくいきます。
 また、単に「日付に見える文字列」が得られればいいのであれば最初の式を「=TEXT(B3,"0000!/00!/00")」としてフィルコピーするだけで簡単に済みます。

「区切り位置」メニューを使う方法

 メニューを使う方法です。値を直接日付に変換することができますが、元の文字は残りません。
 ここではB3:B8セルの値を一括して日付に変換します。

 


 まず対象となる値(B3:B8セル)をすべて選択し、「データ」タブ内にある「区切り位置」のアイコンをクリックします。

 


 するとダイアログが現れますが、表示されている内容を何も変えずに「次へ」をクリックします。

 


 すると2つ目の画面に移りますが、ここでも何も変えずに「次へ」をクリックします。

 


 3つ目の画面に移りますので、ここで「列のデータ形式」の部分にある「日付」をクリックします。
 隣のプルダウンは初期値の「YMD」のままとし、「完了」をクリックします。
 ちなみにプルダウンは年月日の並び方が異なる場合に対応するためのもので、例えば数字が「12242023」のように「月-日-年」の順で並んでいる場合は「MDY」を選択します。

 


 完了をクリックするとすべての値が日付に変換されました。