ガイド

CSVをExcelで開くと1列(A列)にまとまってしまう原因と直し方

Opener チーム8 分で読めます

CSVを開いたときにすべてがA列に詰め込まれてしまうのは、ファイルの区切り文字がExcelの想定と違うからです。多くの場合、セミコロン区切りのファイルをカンマ前提のパソコンで開いた(またはその逆の)ケースです。データ自体には何の問題もありません。CSVビューアのように区切り文字を自動判定するツールで開くか、Excelのインポート機能や「区切り位置」で区切り文字を指定しましょう。

カンマ、セミコロン、小数点のカンマ

「CSV」はカンマ区切り値(comma-separated values)の略ですが、実際の区切り文字は、ファイルを書き出したプログラムが選んだものになります。同じ行を2通りで書くと次のようになります。

日付,顧客,金額
2024-03-15,Müller GmbH,1250.50
日付;顧客;金額
2024-03-15;Müller GmbH;1250,50

2つ目の書き方が存在する理由は、小数点の表記です。ヨーロッパの多くの国(ドイツ、フランス、イタリア、スペイン、オランダ、ポーランド、ウクライナなど)では、小数点にカンマを使い、1250,50 のように書きます。カンマが列の区切りも兼ねていると、1250,50 は2つのセルに分かれてしまいます。そのため、こうした地域の表計算ソフトでは、列の区切りにセミコロンを使います。

どちらの形式も間違いではありません。単に2つの慣習があるだけで、問題は一方の形式で書かれたファイルを、もう一方を前提とするプログラムで開いたときに起こります。形式そのものについては、CSVファイルとはをご覧ください。

ExcelがすべてをA列に入れてしまう理由

.csv ファイルをダブルクリックしたとき、Excelはファイルの中身を見て区切り文字を判断するわけではありません。OSの地域設定にあるリストの区切り文字を使います。Windowsでは、この設定は地域に応じて決まります。小数点にカンマを使う国に設定されたパソコンでは通常セミコロン、日本や米国、英国に設定されたパソコンではカンマになります。

そのため、食い違いはどちらの方向にも起こります。

Webサービス、ネットショップ、CRMからの書き出しでも同じことが起こります。多くのサービスは、利用者の地域に関係なく常にカンマで書き出すため、ヨーロッパのユーザーはこの問題によく遭遇します。関連する問題として、文字が é のような記号に化けるのは、区切り文字ではなく文字コードの問題です。CSVの文字化けをご覧ください。

解決法1:区切り文字を自動判定するツールで開く

注文を確認したい、顧客を調べたい、書き出したデータの中身を見たいなど、ファイルを読むだけなら、区切り文字を自動で判断してくれるビューアを使うのが一番の近道です。

Opener の CSVビューアは、ファイルを見て、カンマ、セミコロン、タブ、パイプのどれで区切られているかを判定し、きちんとした表として表示します。文字コード(UTF-8、Windows-1251、Windows-1252)も判定し、"Smith, John" のように区切り文字を含む引用符付きの値も正しく扱います。設定もアカウントも不要で、ファイルはブラウザ内にとどまり、アップロードされることはありません。結果を検索・並べ替えして、CSVやJSONで書き出すこともできます。

解決法2:Excelのインポート機能や「区切り位置」を使う

Excelでデータを扱いたいなら、ダブルクリックで開くのではなく、使う区切り文字をExcelに指定します。

「テキストまたはCSVから」でインポートする。 空白のブックを開き、「データ」タブで「テキストまたはCSVから」を選びます。プレビューに区切り記号のリストが表示されるので、列が正しく分かれるまで「コンマ」や「セミコロン」を選び直し、データを読み込みます。文字化けしている場合は、同じプレビューでファイルの文字コードも設定できます。

「区切り位置」を使う。 データがすでにA列に入っている場合は次のとおりです。

  1. A列を選択します。
  2. 「データ」タブで区切り位置を選びます。
  3. 区切り記号付きを選び、ファイルで使われている区切り文字(「セミコロン」や「コンマ」など)にチェックを入れます。
  4. ウィザードを完了します。

どちらの方法でも、数値の形式には注意が必要です。1250,50 のような小数点カンマのファイルを日本のパソコンで開くと、金額が文字列として、あるいは別の数値として読み込まれることがあります。インポートのプレビューや「区切り位置」ウィザードの最後の手順で、各列をどう解釈するかを設定できます。合計を信用する前に、いくつかの金額を確認しましょう。

解決法3:Excel用に「sep=」行を追加する

Excel専用の裏技があります。ファイルの一番上に、区切り文字を指定する行を追加するのです。

sep=;
日付;顧客;金額
2024-03-15;Müller GmbH;1250,50

テキストエディタでファイルを開き、1行目に sep=;(カンマ区切りのファイルなら sep=,)を追加して保存し、もう一度ダブルクリックします。Excelはこのヒントを読み取ってその区切り文字を使い、この行自体は表示しません。

これは標準ではなく、回避策です。Google スプレッドシート、LibreOffice、データベース、スクリプトなど、ほかのプログラムは sep= を知らないため、通常は余分な1行目として表示したり、見出し行として扱ったりします。Excelユーザーにしか渡さないファイルに限って使いましょう。

解決法4:Google スプレッドシート、LibreOffice、地域設定

Google スプレッドシート。 「ファイル」→「インポート」でCSVをアップロードします。インポートのダイアログには区切り文字の種類を選ぶ項目があり、自動検出のままにすることも、カスタムの文字を含めて自分で指定することもできます。

LibreOffice Calc。 CSVを開くと、テキストのインポート用ダイアログが表示され、カンマ、セミコロン、タブなどの区切り文字をチェックボックスで選べ、プレビューもその場で更新されます。Windows、macOS、Linuxで無料で使えます。

Windowsのリストの区切り文字を変更する。 従来のコントロールパネルの地域設定にある追加の設定に、リストの区切り文字(英語版では「List separator」)の欄があります。ここを変更すると、Excelでその区切り文字のファイルをダブルクリックだけで開けるようになります。ただし慎重に使ってください。これはシステム全体の設定なので、Excelの数式で関数の引数を区切る記号や、ほかのプログラムがCSVを読み書きする方法も変わります。同じ国の同僚とファイルをやり取りしている場合、相手にはそれまでと違う区切り文字のファイルが届くようになります。ほとんどの人にとっては、上で紹介したインポートの方法のほうが安全です。

よくある質問

同じCSVが同僚のパソコンでは正しく開けるのはなぜですか?

地域設定のリストの区切り文字が違うからです。ExcelはCSVをダブルクリックしたときにこの設定を使うため、同じファイルでも、あるパソコンでは正しく開き、別のパソコンでは1列にまとまってしまいます。

CSVはカンマとセミコロンのどちらで保存すべきですか?

誰が開くかによります。ほかのプログラム、スクリプト、海外の同僚向けには、カンマが一般的な標準です。小数点にカンマを使う国のExcelユーザー向けには、セミコロンならそのまま開けます。可能なら、受け取る相手に確認しましょう。

一部の行だけ列の数がずれるのはなぜですか?

多くの場合、値そのものに区切り文字が含まれているからです。たとえば、カンマを含む会社名が引用符で囲まれていないケースです。CSVの引用符のルールに従うビューアやインポート機能は引用符付きの値を正しく扱えますが、引用符のない値は元のデータを直す必要があります。

CSVビューアはタブ区切りやパイプ区切りのファイルにも対応していますか?

はい。CSVビューアはカンマ、セミコロン、タブ、パイプを自動で判定し、.csv、.tsv、.txt ファイルを開けます。