【Excel】文字列の日付を計算できる日付に変換する方法

【Excel】文字列の日付を計算できる日付に変換する方法
🛡️ 超解決

「2026/02/03」と表示されているのに日付の並べ替えや日数計算が期待どおりにならない場合、セルに文字列が入っていることがあります。Excelの日付は通常、数値であるシリアル値に日付の表示形式を組み合わせたものです。文字列へ日付の表示形式を設定するだけでは、値そのものは変換されません。

変換方法は、区切り付きの日付か、8桁のコードか、すでに数値の日付が混在しているかで選びます。元列は残し、別の列で変換と検算をしてから置き換えましょう。

ADVERTISEMENT

1. 見た目ではなくセルの値の種類を調べる

標準の配置では文字列は左、数値は右に寄る傾向がありますが、中央揃えなどを設定した表では判断できません。セルの緑の三角もすべての日付文字列に出るわけではありません。まず隣のセルで=ISNUMBER(A2)と=ISTEXT(A2)を使い、値の種類を確認します。

ISNUMBERがTRUEなら数値ですが、それだけで意図した日付と確定するわけではありません。例えば20260203という数値もTRUEになります。試しにコピーしたセルの表示形式を「標準」に変え、値を確認します。1900日付システムでは2026年2月3日は46056です。年月日をつなげた8桁コードとは異なります。

1904日付システムのブックでは同じ日付に対する数値が異なり、両方式の差は1462日です。既存ブックの日付システムを変換のために切り替えると、他の日付へ影響します。設定は変えず、異なるブックからコピーして約4年ずれた場合の確認項目として扱ってください。

※ お探しの解決策が見つからない場合は、こちらの「Excelトラブル完全解決データベース」で他のエラー原因や解決策をチェックしてみてください。

2. 変換前に日付の順序と元データを確認する

「02/03/2026」は、月/日/年なら2月3日、日/月/年なら3月2日です。両方とも成立するため、エラーが出ないことは正しく変換された証明になりません。出力元システムの仕様や、日が13以上の行などを確認し、年月日の順序を決めます。

年を省いた「2/3」をDATEVALUEで変換すると、現在の年が使われます。過去データを扱う場合は、元の年度情報から年を明示してから処理します。2桁年も世紀の解釈が関係するため、可能なら4桁年へそろえてください。

作業用コピーに「元の日付」「変換後」「確認結果」の列を用意すると、失敗した行を追えます。変換先の右隣に既存データがある場合は列を挿入するなどして空けます。空白、時刻付き、8桁形式、区切り付きが混在するなら、同じ式を一律にかけず、種類を分けて扱います。

3. 認識できる日付文字列はDATEVALUEで変換する

A2に「2026/02/03」のような日付文字列がある場合、B2に=DATEVALUE(A2)を入力します。シリアル値が返ったらB列へ日付の表示形式を設定します。空欄をエラーにしたくない場合は、=IF(A2="","",DATEVALUE(A2))のように空欄だけを先に分けられます。

DATEVALUEが認識する形式はシステムの日付設定などの影響を受けます。#VALUE!が出た行では、先頭・末尾の不要な文字、元の順序、全角記号、形式の混在を調べます。失敗をすべてIFERRORで空白にすると、変換できなかった行を見逃すため、確認が終わるまではエラーを残してください。

DATEVALUEは文字列の時刻部分を日付のシリアル値に含めません。勤務記録など、日付と時刻の両方が必要なデータでは、この関数だけで処理すると時刻を失います。また、すでに正しい日付数値になっている行までDATEVALUEへ渡す必要はありません。ISNUMBERなどで確認し、変換済みの行はそのまま使います。

4. 区切り位置で年月日の順序を指定する

Windows版Excelでは「データ」→「区切り位置」を使い、日付の順序を指定して変換できます。列を分ける機能ですが、1列のまま型を日付として解釈させる使い方もあります。

  1. コピーした日付の範囲を選び、「データ」→「区切り位置」を開きます。見出しや無関係なデータは選択しません。
  2. ウィザードを進め、プレビューで日付が1列のまま残るように区切り文字を確認します。スラッシュを区切り文字にして年月日を別々の列へ分けないようにします。
  3. 最後の画面で列のデータ形式を「日付」にし、元の並びに合わせてYMD、MDY、DMYなどを選びます。
  4. 表示先を空いている範囲へ指定し、既存データを上書きしないことを確認して完了します。

YMDは変換後の見せ方ではなく、元文字列が年・月・日の順であるという指定です。変換後の表示を「2026年2月3日」にしたい場合は、別途表示形式を設定します。順序が行ごとに混在している列には一括適用せず、元データを整理してから処理してください。

5. 8桁の年月日はDATE関数で組み立てる

「20260203」のように区切りがない8桁文字列は、年・月・日を切り出してDATE関数へ渡すと意図が明確です。A2を元文字列とすると、=DATE(LEFT(A2,4),MID(A2,5,2),RIGHT(A2,2))で2026年2月3日を作れます。LEFTで先頭4桁、MIDで5文字目から2桁、RIGHTで末尾2桁を取り出しています。

単に=A2*1とすると、文字列20260203を数値20260203へ変えるだけです。期待する日付のシリアル値46056への変換にはなりません。区切り付きの文字列で数値演算による変換が働く環境でも、形式や地域に依存するため、8桁のコードと同じ方法で扱わないでください。

DATEは日付の妥当性を厳密に検査する関数ではありません。例えば20260230を同じ式で処理すると、2月30日をエラーにせず2026年3月2日に繰り越します。8桁の数字だけであることを先に確認し、変換後のB2について=TEXT(B2,"yyyymmdd")=A2のように元の文字列と照合します。この比較はA2が8桁文字列である前提です。元が数値なら型をそろえて比べます。

文字列20260203を年2026、月02、日03へ分解してDATEで日付へ変換する例。1900日付システムでは46056、翌日は46057
8桁の日付コード20260203と、日付のシリアル値46056は別の数値です。この例は1900日付システムを使用しています。

6. 並べ替えと日数差で変換結果を検算する

表示形式を「yyyy/mm/dd」などにそろえ、元列と変換後を数行ずつ照合します。月初・月末、うるう年の2月、年の切り替わり、月と日を取り違えやすい値を選ぶと、問題を見つけやすくなります。変換結果の最小日・最大日が業務データの期間と一致するかも確認してください。

日付が正しく数値になったら、翌日との差は通常1になります。2026年2月3日が46056、2月4日が46057なら、差は1です。時刻を含む値では小数部分が関係するため、整数の日数だけになるとは限りません。

並べ替えでは変換した列だけを動かさず、取引内容を含む表全体を対象にします。名前や金額との対応を保った状態で昇順にし、年をまたいでも順序が正しいか確認します。単にセルが右寄せになった、エラー表示が消えたという確認だけでは不十分です。

7. 値として確定し、元データを残す

変換式のまま運用するなら、元列を消すと参照エラーになることがあります。確定した日付だけを渡したい場合は、変換後の範囲をコピーし、別の列へ「値」として貼り付けます。その列へ日付書式を設定し、数式バーで参照式が残っていないことを確認します。

元列へ上書きするのは、エラー行と曖昧な日付をすべて確認した後です。上書き前のコピーがあれば、解釈を間違えた際にやり直せます。日付がずれるからといって、根拠なく一定の日数を全行に加減したり、ブックの日付システムを切り替えたりしないでください。

繰り返し取り込むデータでは、出力側の形式を4桁年・一定の順序へそろえると毎回の判断が減ります。まず元の意味を決め、変換し、照合してから置き換える順番を守れば、見た目だけ正しい日付を作る失敗を防げます。

公式資料: 文字列の日付を変換する / DATEVALUE / DATE / テキストインポートウィザード / 日付システム

📊
Excelトラブル完全解決データベースこの記事以外にも、様々なエラー解決策をまとめています。困った時の逆引きに活用してください。
この記事の監修者
📈

超解決 Excel・Word研究班

企業のDX支援や業務効率化を専門とする技術者チーム。20年以上のExcel・Word運用改善実績に基づき、不具合の根本原因と最短の解決策を監修しています。ExcelとWordを使った「やりたいこと」「困っていること」「より便利な使い方」をクライアントの視点で丁寧に提供します。

🏆
超解決 Excel検定 あなたのExcel実務能力を3分で測定!【1級・2級・3級】