大きいCSVがExcelで開けない・104万行を超えて途中で切れる
Excelのシートは1シートあたり1,048,576行までで、超えた分のCSVは読み込まれません。
このまま元のCSVに上書き保存すると、読み込まれなかった分は消えます。上書き保存はしないでください。
全件を集計したいときは、シートに貼らず「データ」タブ→「テキストまたはCSVから」で取り込み、読み込み先を「ピボットテーブル レポート」にして「データ モデル」へ追加します。
開いたCSVが途中で終わっている、合計が前回と合わない、それなのにエラーらしいエラーは出ていない。この3つがそろう詰まり方は、集めている悩みの中に何度も出てきます。壊れたのでも操作を間違えたのでもなく、シートに入る行数が決まっていて、そこで切れている——というケースがよくあります。当てはまるかどうかは、下の手順1で確かめられます。
この記事で扱うのは、行数の上限で読み込みが途中で切れるケースです。文字化け・先頭の0が消える・日付が数字になる、そもそも開こうとすると固まる、といった症状は原因が別なので扱いません。
※本記事の手順と数値は2026年8月時点のMicrosoft公式ヘルプに基づき、画面はWindowsのパソコン版Excelのものです。Mac版・ブラウザ版(Excel for the web)・古い版では、メニュー名や「読み込み先」の選択肢が異なったり、見当たらなかったりすることがあります。
いちばん先に: そのファイルを上書き保存しない
読み込みきれない状態で保存した場合、公式ヘルプはこう案内しています。
元のファイルに保存すると、読み込まれていないデータは失われます。これは不完全なデータ セットでもあることに注意してください。
切れているのは表示だけではなく、保存した瞬間に確定します。作業を続けるときは「ファイル」→「名前を付けて保存」(OneDrive上で自動保存がオンのときは「コピーを保存」)で別名を付け、元のCSVには触れないでおきます(大きすぎるデータ セットへの対処)。
原因: 104万行はExcelの仕様上の上限
公式の仕様表に、ワークシートのサイズは「1,048,576 行、16,384 列」と明記されています(Excel の仕様と制限)。これは .xlsx 形式の場合で、古い .xls 形式は「各シートで 65,536 行」が上限です(大きすぎるデータ セットへの対処)。
パソコン版のExcelでは、大きすぎるファイルを開くとき次の警告が出ます。
このデータ セットが Excel グリッドに対して大きすぎます。このブックを保存すると、読み込まれていないデータが失われます。
文言はバージョンによって異なりますが、いずれもその場限りの表示で、閉じればシート側に切れた印は残りません。誰かがこの状態で保存して渡したファイルには警告そのものが出ず、SUMも普通に計算されるため、集計値だけでは気づけません。
手順1: 本当に切れているかを確かめる
- シートのどこでもいいので、セルを1つクリックします。
- Ctrlキーを押しながらEndキーを押すと、データや書式のある最後のセルへ移動します(ワークシートの最後のセルを特定してリセットする)。
- 画面左上の名前ボックス(セルの番地が出る欄)で行番号を読みます。
- 行番号がちょうど 1048576 なら、上限で切れている可能性が高いと考えます。最終行が上限とぴったり一致するのは、ふつう起こりにくいためです。
- これより小さい行番号で止まったなら、行数の上限が原因ではありません。表示形式や文字化けなど、別の原因を疑ってください。
補足: 元のCSVの行数を数える(飛ばしても構いません)
- 下のコードをコピーしてメモ帳に貼り付け、
"C:\Users\自分の名前\Desktop\data.csv"の部分を、引用符ごと自分のCSVの場所に置き換えます。場所はCSVを右クリック→「パスのコピー」で取れます(引用符付きでコピーされます)。 - スタートボタン横の検索欄に
PowerShellと入力して「Windows PowerShell」を開き、書き換えた1行を貼り付けてEnterキーを押します。
(Get-Content "C:\Users\自分の名前\Desktop\data.csv" -ReadCount 1000 | Measure-Object -Property Count -Sum).Sum
実行すると、そのファイルの行数が数字で返ります。出るのは見出しを含む行数なので、件数は1行引いた数です(数えているのは改行の数なので、項目の中に改行を含むCSVでは件数と一致しませんが、104万行を超えているかの目安にはなります)。
手順2: 104万行を超えたまま全件を集計する
Microsoft公式が案内している対処に、データ モデルへの追加を足した手順です。シートに全行を貼るのをあきらめ、集計だけを取り出します。
- Excelで 空白のブック を新しく開きます(切れたブックは使いません)。
- 「データ」タブの「データの取得と変換」グループにある「テキストまたはCSVから」をクリックします。
- 対象のCSVを選び、「インポート」をクリックします。
- プレビュー画面が出たら、画面下の「読み込み」ボタンの横にある下向き矢印を押し、出てきた「読み込み先…」を選びます(「読み込み先」がそのままボタンで出ている版もあります)。
- 「ピボットテーブル レポート」(項目ごとの合計や件数をまとめる表のことです)を選び、下にある「このデータをデータ モデルに追加する」にチェックを入れて「OK」を押します(版によっては「データ モデルにこのデータを追加する」の語順で出ます)。
- 画面右側のフィールドリストに列名が並びます(テーブル名だけが見えているときは、左の三角を押すと列名が開きます)。集計したい項目を行・列・値の枠へドラッグすると、全件を対象にした集計表(たとえば店舗ごとの売上合計)ができます。
ここで「テーブル」を選ばないでください。 シートへ書き出す設定なので、また同じ上限で頭打ちになります(この取り込みの仕組みであるPower Queryの公式仕様でも「ワークシートに入力された行の最大数」は「1,048,576」です — Power Query の仕様と制限)。
チェックを入れた読み込み先が「データ モデル」— シートとは別に用意された、Excel内部のデータ置き場です(クエリを作成、読み込み、または編集する)。公式仕様の「テーブル内の行数」は 1,999,999,997 で、シート側とは桁が違います(データ モデルの仕様と制限)。1行ずつ目で追うことはできませんが、合計・件数・平均は全件を対象に出せます。
読み込みが重いときは、4番の画面で「読み込み」ではなく「データの変換」を押し、開いた編集画面で使わない列を選んで削除してから「閉じて読み込む」に進むと、扱う量を減らせます。
取り込んだ表で日付が 45000 のような数字になっているときは、行数ではなく表示形式の問題です → Excelやスプレッドシートで日付が45000みたいな数字になる
別の方法: ファイルを分けて扱うときの考え方
手順2で足りている場合は不要です。分けるなら、分け方を意味のある単位にそろえます。「先頭から100万行ずつ」と機械的に切ると、月や店舗が境目でまたがり、あとで足し合わせたときに合いません。月ごと・店舗ごとに分けておけば、「データ」タブ→「データの取得」→「ファイルから」→「フォルダーから」→「結合と読み込み」でまとめて読み直せます。ただし結合には、見出しの名前・列の数・値の種類がすべてのファイルで同じである必要があるため、対象ファイルだけの専用フォルダーを用意します(フォルダー内の複数ファイルからデータをインポートする)。
それでもうまくいかない時のチェックリスト
行数の上限は不具合ではなく仕様で、設定では増やせません。「シートに全部貼らない」に切り替えれば、104万行を超えるデータでも、Excelの中で合計や件数を出せる道があります。