データの授受において、拡張子がCSVやTXTファイルになっている形式でもらうことってありますよね。
そんなとき、たいていエクセルに変換するのですがエラーになって困ったことが。
Contents
なぜCSV(シーエスブイ)やTXT(テキスト)ファイルなの?
データが重いから、エクセルではなくCSVやTXTでデータをやり取りするんです。
ある時、ひとつきに3つのテキストがセットになっているファイルをもらったんです。集計作業をするにはエクセルのほうが楽だし、ピボットも組めるしってことで
テキストファイル3つをエクセルひとつ(シートごと)にドラッグ&ドロップして合計すると・・・合わない!?となって、やり直したんですが、やっぱり合わない💧
エクセルには最大行がある
で、試行錯誤して、悩んで、このファイル壊れてるんじゃないの!とまで思ったのですが、テキストファイルを開いて、じ~っくり見ると行が!!なんと、比べてみると同じじゃないんです。
テキストファイルの最大行はソフトによっても違うようなのですが万~億行までイケるそう。
対してエクセルの最大行は1,048,576行です。確かに。
ここまでも使うことって、そうそうないとは思いますが、テキストファイルに太刀打ちできなかったとは。
1,048,576以降の行が、削除されていたために合計値が一致しなかったと判明しました。
知らなかったがゆえに、時間がかかってしまいました。
csvファイルとは
csvファイルとは、comma separated value カンマセパレーテッドバリューといって、カンマ区切りファイルのことです。
テキストエディタで開きます。
中身はこんな感じ。カンマで区切ってあります。わかりやすい!
そして、CSVはテキストファイルの一部なんです。
データのオーバーフローを回避する方法
テキストファイルの行がエクセルの最大行を超えたために起こったエラーなので
ドラッグ&ドラッグで開いてはダメです。
まず、
- テキストやcsvファイルを開いて行をカウントします。
- 1,048,576を念頭に約100万行ごとにエクセルで開くとします。
- ここで、150万行あるとして、下記の作業を2回 行う
ウィザードを使って開く
1)エクセルを開いて、ファイルタブ→開く
最初は「すべてのExcelファイル」となっているので、その一つ上の、すべてのファイルを選択すると、テキストファイルやcsvファイルが全部選べます。
2)ウィザードが開くので、取り込み
完了をクリックすると、エクセルでは最後まで入りきれてないため、100万行までジャンプして進み、
そこから下は消す!
次に、エクセル上でまた、上の1)に戻り、同じテキストファイルを開く。
2)のウィザードで、取り込み開始行を1,000,000、完了をクリック。
1回目のシートと2回めのシートをのふたつでやっと合計が出せる。
手間が多いですが、確実!にすべてのデータがエクセルで表示できます。
それでもたまにcsvがうまくいかない
カンマがうまく機能せず、エクセルのセルひとつに「xxx,xxxxxx,xxxxxx,xxxx,xxx,xxxxx,」とひたすら区切られずに入ることがあります。
これは、見つけたらひたすら、そこへジャンプして区切るという・・・地道な作業でした。
理由としては重いためにエラーになっちゃうのかなとも考えましたが不明です・・・
- エクセルの最大行は1,048,576行
- csvからエクセルを開くにはウィザードを使うほうが確実