エクセルで「1-1」や「3/4」が勝手に日付に変わるなら、値を入力する前にセルの表示形式を「文字列」にしておくのが最短の対処です。Excel は日付を連番(シリアル値)で持っていて、1900年1月1日をシリアル値1として数え、2008年1月1日はシリアル値39448になります(Microsoft「DATE 関数」)。変換された時点で「1-1」という文字そのものは残らないため、後から直すより先に入らせない方が確実です。この記事では、手入力とCSV取り込みの両方について対処を5つに整理します。
まず切り分ける:入力時に化けたのか、CSVを開いた時に化けたのか
対処法はこの2つで変わります。2〜3分で判別できるので、先に切り分けてください。ブックを壊す操作は含みません。
- 化けているセルを1つクリックし、数式バーを見る。数式バーに「2026/1/1」のような日付が出ていれば、値そのものが日付に変換済みです。元の「1-1」は残っていません。
- そのセルで Ctrl + 1 を押し、[セルの書式設定]の[表示形式]を見る。[日付]や[指数]になっていれば、Excel が入力内容を数値・日付と解釈したということです。
- セル内での寄り方を見る。既定では文字列は左寄せ、数値・日付は右寄せになります。右に寄っていれば数値として扱われています。
- そのファイルが .csv / .txt をダブルクリックで開いたものかを確認する。CSVを開いた時点で化けているなら、原因は入力ではなく取り込みです。対処3・対処4へ進みます。
実際にどんな入力が何に化けるかは、だいたい次の5パターンに収まります。自分のケースがどれかを当てはめてください。
入力した内容 | Excel の解釈 | セルに入る値 |
|---|---|---|
1-1(枝番・棚番) | 日付 | その年の1月1日のシリアル値 |
3/4(型番・分数) | 日付 | その年の3月4日のシリアル値 |
1E5(商品コード) | 指数表記の数値 | 100000 |
00123(先頭ゼロ付きコード) | 数値 | 123(先頭のゼロが消える) |
16桁以上の会員番号 | 15桁に切り詰めた数値 | 指数表記になり末尾が0に置き換わる |
Microsoft は、この自動変換が起きる場面として「.csv や .txt ファイルを開いたとき」「データ入力・タイプしたとき」「外部からのコピー&ペースト」「検索と置換」「区切り位置ウィザードの実行」を挙げています(Microsoft「自動データ変換を設定する」)。コピペと置換でも起きる、というのが見落とされがちな点です。
原因別の対処5つ
対処1:入力する前にセルを「文字列」の表示形式にする
もっとも確実で、Microsoft も推奨している方法です。ポイントは入力前にやること。値を入れた後に「文字列」へ変えても、すでに日付として格納されたシリアル値が数字の羅列として表示されるだけで、元の「1-1」には戻りません。
- コードや型番を入力する予定のセル範囲(または列全体)を選択する。
- Ctrl + 1 を押して[セルの書式設定]を開く。
- [表示形式]タブの分類から[文字列]を選び、[OK]を押す。
- その後で値を入力する。「1-1」「3/4」「00123」がそのまま入ります。
Excel for the web の場合は[ホーム]>[数値の書式]>[テキスト]を選びます(Microsoft「数値から日付に自動的に変更されないようにする」)。
注意点も正直に書きます。文字列にした列は、見た目が同じでも数値としての計算・集計ができません。合計したい数量や金額の列には使わないでください。また、セルの左上に緑の三角(「数値が文字列として保存されています」のエラーインジケーター)が出ますが、コードを文字列で持つことは意図した状態なので、そのままで問題ありません。
対処2:先頭にアポストロフィ(')を付けて入力する
1セルだけ、その場でしのぎたいときはこれが速いです。半角のアポストロフィを先頭に打ってから値を入力します。
- セルを選び、'1-1 のように半角アポストロフィ+値の順で入力する。
- Enter を押す。アポストロフィはセルに表示されず、値だけが文字列として残ります。
Microsoft のヘルプでは、アポストロフィのほかに「値の前に半角スペースを入れる」方法も紹介されていますが、スペースはセルに残り続けます。VLOOKUP や MATCH で照合する予定があるなら、スペースではなくアポストロフィを使うよう明記されています。照合がずれる事故を避けるため、ここは素直にアポストロフィにしてください。
なお「1/2」「3/4」を分数として入れたい場合は、「0 1/2」「0 3/4」のように0と半角スペースを前に置いて入力します。この場合は文字列ではなく分数の数値として入ります。
対処3:CSVは Power Query で列の型を「テキスト」にして取り込む
CSVをダブルクリックで開くと、Excel が列ごとに型を推測してしまいます。商品コードが日付になる事故の大半はここです。開くのではなく、空のブックに取り込むのが正解です。
- 空のブックで[データ]タブ>[データの取得]>[ファイルから]>[テキストまたは CSV から]を選ぶ。
- 対象のCSVを選び、[インポート]を押す。プレビュー画面が出たら、[読み込み]ではなく[データの変換]を押す。
- Power Query エディターが開く。日付に化けてほしくない列の列ヘッダーをクリックして選ぶ(複数列は Ctrl を押しながらクリック)。
- [ホーム]タブ>[変換]グループ>[データ型]>[テキスト]を選ぶ。
- [列タイプの変更]ダイアログが出たら[現在のものを置換]を選ぶ。これを選ばないと、いったん日付に変換してから文字列にする形になり、元の値が戻りません。
- [ホーム]>[閉じて読み込む]でワークシートに取り込む。
この手順は、先頭のゼロや16桁以上の数値を保持する方法として Microsoft が案内しているものと同じです(Microsoft「先頭のゼロと大きな数値を保持する」)。
Power Query の利点は手順がクエリとして保存されることです。毎月同じ形式のCSVが届くなら、次回はファイルを差し替えて[更新]を押すだけで、同じ型指定のまま取り込めます。毎回ウィザードをクリックし直す必要がありません。
対処4:テキストファイルウィザードで列ごとに「文字列」を指定する
Power Query を使わない、あるいは一度きりの取り込みなら、従来のテキストインポートウィザードでも同じことができます。Microsoft 365 では既定で非表示なので、まず有効化します。
- [ファイル]>[オプション]>[データ]を開く。
- [レガシ データ インポート ウィザードの表示]で[テキストから(レガシ)]にチェックを入れ、[OK]を押す。
- [データ]タブ>[データの取得と変換]>[レガシ ウィザード]>[テキストから(レガシ)]を選び、対象ファイルを指定する。
- ウィザード1/3で[カンマやタブなどの区切り文字によってフィールドごとに区切られたデータ]を選び、[次へ]。
- ウィザード2/3で区切り文字(CSVなら[コンマ])にチェックを入れ、[次へ]。
- ウィザード3/3の[データのプレビュー]で化けさせたくない列をクリックして選択し、[列のデータ形式]で[文字列]を選ぶ。対象列の数だけ繰り返す。
- [完了]を押し、取り込み先のセルを指定する。
公式ヘルプでも「すべての数字の列を Excel のテキスト形式に変換するには、[テキスト]を選択します」と案内されています(Microsoft「テキスト インポート ウィザード」)。日本語版のUIでは同じ選択肢が[文字列]と表示されます。
ウィザードを有効化せずに済ませたい場合は、CSVの拡張子を .csv から .txt に変更してから開く方法もあります。.txt を開くと Excel がウィザードを表示するためで、これも公式に案内されている手です(Microsoft「テキスト(.txt または .csv)ファイルのインポートまたはエクスポート」)。
対処5:Microsoft 365 / Excel 2024 なら「自動データ変換」をオフにする
新しいバージョンには、自動変換そのものを止める設定が入っています。対象は Excel for Microsoft 365、Excel for Microsoft 365 for Mac、Excel 2024、Excel 2024 for Mac です。Excel 2021 以前にはこの設定がありませんので、その場合は対処1〜4で運用してください。
- [ファイル]>[オプション]>[データ]を開く。
- [自動データ変換]のセクションで、止めたい項目のチェックを外す。
設定できる項目は4つです。「数値テキストから先頭のゼロを削除して数値に変換する」「数値データを15桁の精度に切り詰め、指数表記で表示される数値に変換します」「文字 'E' を囲む数値データを指数形式に変換する」「連続した文字と数字の文字列を日付に変換します」。商品コードが日付になるケースは4つ目、「1E5」が100000になるケースは3つ目が該当します。
ただし、この設定はその端末の Excel にしか効きません。同じCSVを別の担当者が自分のPCで開けば、そちらでは従来どおり変換されます。チームで同じデータを扱うなら、対処3の Power Query のようにファイル側に手順を残す方が安全です。
なお、[ファイル]>[オプション]>[文章校正]>[オートコレクトのオプション]には、この日付変換を止める項目はありません。ハイパーリンクの自動作成やテーブルの自動拡張は止められますが、数値・日付の解釈は別系統の処理です。ここを探して見つからず時間を溶かす人が多いので、先に書いておきます。
いったん変換された値は元に戻らない
これが一番ダメージの大きい落とし穴です。「1-1」が日付になった時点で、セルの中身は文字列ではなくシリアル値(数値)に置き換わっています。表示形式を[文字列]や[標準]に変えても、出てくるのは「45658」のような数字であって、「1-1」ではありません。元の入力内容はどこにも保存されていないためです。
Excel の日付システムでは、既定の1900年日付システムで2011年7月5日がシリアル番号40729、1904年日付システムでは39267になります(Microsoft「Excel の日付システム」)。同じ日付でも1,462日ずれるので、Windows と Mac でブックをやり取りしている場合は、この数字の食い違いも疑ってください。
変換後にできることは限られます。現実的な選択肢は次の3つです。
- 直後なら Ctrl + Z で元に戻す。入力した直後に気づいた場合はこれが最速です。
- 元データから取り込み直す。CSVが手元にあるなら、対処3または対処4でやり直すのが確実です。加工済みブックを直すより速いことがほとんどです。
- 規則性がある場合だけ TEXT 関数で復元する。たとえば「1-1」が日付になったなら、=TEXT(A1,"m-d") で「1-1」の形に戻せます。ただしこれは推測による復元です。元が「01-1」だったのか「1-01」だったのかは判別できませんし、「1E5」が100000になったケースは指数表記だったのか数値だったのか区別がつかないため復元できません。
重要なのは、復元できたように見えても元データと一致している保証はないことです。請求や在庫のコードでこれをやると、照合が通らない行が後から出ます。元データが残っているなら、必ず取り込み直してください。
再発させない運用:入力の時点で型を決める
対処1〜5はいずれも「気をつけて操作する」に依存しています。担当者が1人なら回りますが、複数人でシートを共有した瞬間に崩れます。新しい行に別の人がコードを直接打ち込む、別のブックからコピー&ペーストする、列を丸ごと挿入して書式が引き継がれない——このどれかで元に戻ります。
Excel の表示形式はセルの見た目の設定であって、入力できる値の制約ではありません。「この列は必ず文字列のコード」という決まりをファイルに埋め込む手段が、Excel には実質的にないということです。入力規則やシート保護である程度は防げますが、コピー&ペーストで書式ごと上書きされると効かなくなります。
手前で防ぐなら、そもそも入力欄の側で型が決まっている仕組みに載せ替えるのが早道です。商品コード・型番・会員番号のように「文字として意味がある値」を扱う台帳は、フォームから入れる形にして、コードはコードとしてしか入らないようにしておけば、Excel の解釈に振り回されません。同じ発想で二重入力を減らす話はExcelの二重入力をなくす方法でも整理しています。
Mihata では、いま使っているスプレッドシートをそのまま活かして、入力欄だけをアプリ化する形のご相談を受けています。台帳を作り直さずに済む範囲で検討したい方の参考になれば幸いです。
それでも直らない時の見極め
ここまでやっても解決しない場合、原因が別のところにあるかもしれません。次の順で切り分けてください。
- ほかのブックでも再現するか。新規ブックで同じ値を入力して化けるなら Excel の設定側、そのブックだけなら列の書式や条件付き書式が原因です。
- 値が本当に日付になっているか。数式バーが元の値のままで表示だけおかしいなら、これは変換ではなく表示形式の問題です。Ctrl + 1 で[標準]に戻せば直ります。
- 取り込み元のCSVを、メモ帳など Excel 以外で開いて確認する。CSVの時点ですでに日付になっているなら、原因は Excel ではなく、そのCSVを書き出したシステム側、あるいは書き出した人が一度 Excel で開いて保存し直したことにあります。ここは Excel 側の設定では防げません。
- 数式が絡んでいる場合。VLOOKUP の結果が日付で返る、コードで照合できないといった症状は、文字列と数値の型違いが原因のことが多いです。計算結果そのものが更新されない場合は、エクセルの数式が計算されない原因と対処で別途整理しています。
判断の分かれ目は、その作業が今後も繰り返されるかです。一度きりの取り込みなら対処4のウィザードで十分です。毎月・毎週届くデータなら、対処3の Power Query でクエリを保存するか、そもそも入力の仕組みを見直す方が、長い目で見て手間が少なくなります。
自社のCSV取り込みや台帳の作りに合わせて整理したい場合は、状況を伺ったうえで現実的なところをお伝えします。
よくある質問
日付になってしまったセルを「文字列」に変えたのに、1-1 に戻りません。
戻りません。1-1 が日付として認識された時点で、セルの中身はシリアル値という数値に置き換わっていて、元の文字は保存されていないためです。直後なら Ctrl+Z で取り消す、元のCSVから取り込み直す、規則性がある場合だけ TEXT 関数で近い形に整える、のいずれかになります。
アポストロフィと半角スペース、どちらを使えばいいですか。
アポストロフィです。スペースはEnterを押した後もセルに残るため、VLOOKUPやMATCHで照合する予定がある場合はずれの原因になります。Microsoft のヘルプでも、検索関数を使う予定があるならスペースではなくアポストロフィを使うよう案内されています。
CSVをダブルクリックで開かずに取り込む方法を教えてください。
空のブックで[データ]タブ>[データの取得]>[ファイルから]>[テキストまたはCSVから]を選び、プレビューで[読み込み]ではなく[データの変換]を押します。Power Queryエディターで列ヘッダーを選び、[ホーム]>[変換]>[データ型]>[テキスト]、[列タイプの変更]で[現在のものを置換]を選んでから[閉じて読み込む]で完了です。
自動データ変換をオフにする設定が見当たりません。
この設定があるのは Excel for Microsoft 365、Excel for Microsoft 365 for Mac、Excel 2024、Excel 2024 for Mac です。Excel 2021 以前には[ファイル]>[オプション]>[データ]に[自動データ変換]のセクションがありません。その場合はセルを文字列にする、アポストロフィを付ける、Power Query やテキストインポートウィザードで取り込む、といった方法で対応してください。
設定を変えれば、他の人が開いても日付にならなくなりますか。
なりません。自動データ変換の設定はその端末のExcelにしか効かないため、同じCSVを別の担当者が自分のPCで開けば従来どおり変換されます。チームで同じデータを扱う場合は、Power Queryのクエリとして取り込み手順をファイル側に残す方が安全です。