PR

エクセル104万行の限界を超える方法|パワークエリ・パワーピボット活用ガイド

Thumbnail for エクセル104万行の限界を超える方法|パワークエリ・パワーピボット活用ガイド
  • 「管理しているデータがExcelの行数上限を超えてしまい、読み込めなくなった」
  • 「104万行を超える大量のデータをExcelで扱い続けるには、どのような方法があるのか」

Excelには1シートあたり1,048,576行という仕様上の上限があります。

しかし、 Power Query(パワークエリ)Power Pivot(パワーピボット) を組み合わせることで、この制限を超えるデータに対応することが可能です。ただし、どのような操作でも可能になるわけではないので、注意が必要です。

本記事では、
104万行を超えるデータへの2つのアプローチについて解説します。
目的に合わせた最適な対処方法を取ることで、大量データの取り込みから集計・出力までできるようになるはずです。

エクセルの最大行数・容量の制限と仕様

 

1シートあたりの行数・列数の上限値

Excel( XLSX 形式)の1シートあたりの行数上限は 1,048,576行 (約104万行)です。この上限は仕様として決まっており、設定でどうにかできるものではありません。列数の上限は16,384列(XFD列)です。

ちなみに、旧来の .xls 形式(互換モード)で作成・保存されたファイルは、行数の上限が65,536行に制限されます。

ファイル形式最大行数最大列数特徴・データ保存の仕様
XLSX1,048,576行16,384列標準的なExcelファイル形式。数式や書式設定、グラフを保存できる。
XLS65,536行256列Excel 97-2003の互換ファイル形式。XLSXよりも行数・列数の上限が低い。
CSV仕様上の上限なし(※)仕様上の上限なし(※)テキスト形式でデータを保存する。数式や書式設定は保存できない。※Excelで直接開く場合は1,048,576行までに制限される。
XLSB1,048,576行16,384列バイナリ形式で保存するExcelファイル形式。XLSXよりもファイル容量を小さくできる。
吉峰
吉峰

大量のデータを保存する場合は、.csv 形式が一般的です。ファイル形式の使い分け・比較については後述します。

 

ファイルサイズ(容量)の上限値

Excelの仕様として、具体的なファイルサイズの上限は定められていません。実際に問題なく扱えるデータ量は、PCの使用可能メモリ(RAM)に依存 します。

  • 32ビット環境
    Excelが使用できる RAMが2GBまでに制限 され、
    PCの搭載RAMがそれ以上あっても活用できない
  • 64ビット環境
    PCの搭載RAMの上限まで使用できる

快適にExcelが動作する環境として、以下の構成が推奨です。

  • 64ビット版のOfficeを使用する
  • RAM 8GB以上のPCを使用する(処理速度を優先する場合は16GB以上)

Officeが32ビット版か、PCのRAMが少ない場合は、ファイルサイズが大きくなるとすぐに動作が遅くなります。

吉峰
吉峰

実務上の目安として、ファイルサイズが100MBを超えたあたりから動作が著しく低下するケースが多いです。

 

上限を超えた場合の現象

警告ダイアログ

行数・列数の上限を超えるデータをExcelで読み込もうとした場合、上限を超えた部分のデータは欠落します読み込むこと自体はできますが、表示されていないデータが存在する状態になるため、欠落に気づきにくい点に注意が必要です。

さらに、過大なデータサイズのファイルをExcelで扱おうとした場合には、以下の現象が発生しやすくなります。

  • 処理・描画が遅くなる
  • 操作中にフリーズや強制終了が起こりやすくなる
  • 保存中にフリーズが発生し、ファイルが破損するリスクが高まる

104万行を超えるデータを扱う2つの主要機能

Excelで104万行を超えるデータを扱う場合、Power QueryPower Pivot の2つの機能が役立ちます。それぞれの役割を整理します。

 

Power Queryの概要

Power Queryは、外部ファイルをExcelに取り込んで加工できる機能です。CSVや複数のExcelファイルを読み込み、不要な列の削除・フィルタリング・テーブル形式の変換などの処理を行えます。

データ件数を減らす処理は早めに

加工ステップの順序は処理速度に影響します。データ件数を減らす処理(フィルタや不要列の削除)をできるだけ早い段階に配置すると、後続の処理が扱うデータ量が少なくなり、全体の処理速度の向上につながります。

加工したデータは、次のどちらかを選択して利用します。

  • Excelのシート上にテーブルとして展開する
  • Excelのシート上に展開せず、データモデルに格納しPower Pivotに渡す
 

Power Pivotの概要

Power Pivotは、データモデルに格納されたデータを閲覧・集計・拡張できる機能です。

データモデルは、超大量のデータを高度に圧縮して保持する仕組みです。1,048,576行を超えるデータであっても、データモデルに格納することで扱うことができますデータモデルに格納したデータは、ピボットテーブルとしてシートに出力して集計・分析に使用できます。

104万行超のデータに対応する2つのアプローチ(全体像)

104万行を超えるデータをExcelで扱う場合、目的に応じて以下の2つのアプローチを使い分けます。

アプローチ処理の流れ用途例
① テーブルとしてシートに出力Power Query → テーブル出力一部行の抽出・簡易集計・テーブル形式の変換・全体検索
② Power Pivotエディターで閲覧Power Query → Power Pivot全体データの構造確認
104万行超のデータに対応する2つのアプローチ

各アプローチの特徴は以下の通りです。

  • ① テーブルとしてシートに出力Power Queryでデータを「104万行以下」に加工してからシートに出力します。出力後はExcelの通常の機能(関数・フィルタ・条件付き書式など)をそのまま利用できます。テーブル形式の変換を行った場合以外は、基本的に元データから何らかの情報がそぎ落とされる点には注意です。
  • ② Power Pivotエディターで閲覧Power Queryを経由して104万行超のデータをデータモデルに格納し、Power Pivotエディターのプレビュー画面で確認します。元のデータをそのまま確認できる一方、値の全文検索はできません(Power Pivotエディター内の検索機能の対象は「見出し(列名)や「計算式」のみ)
吉峰
吉峰

以降の章から、各アプローチ方法の具体的な操作手順を説明します。

アプローチ① テーブルとしてシートに出力する手順

Power Queryで、データを事前に「104万行以下」に加工することで、シートに出力できるようにする方法です。

行数を減らす方法には

  • フィルター機能で不要な行をそぎ落とす
  • グループ化機能(簡易集計)を使い、 データを圧縮する
  • データ構造を変換し、行方向に延びたデータを列方向に移動する(データベース型からクロス集計表へ)

などがあります。ここでは例として 「直近(末尾)の10000行のみを取得する」 方法を説明します。

STEP1

Power Queryで元のデータソースをインポート

104万行を超えるデータを取り込み、シートに展開する前にPower Queryエディター画面を開きます。

  1. [データ] タブの [テキストまたはCSVから] を選択し、CSVファイルをインポートします。
CSVファイルをインポート

CSVではなく、分割したXLSXファイルの場合は、
[データ] タブの [データの取得] > [ファイルから] > [フォルダーから] を選択し、
複数のXLSXファイルが格納されているフォルダーを選択します。

  1. ダイアログで [データの変換] をクリックし、Power Queryエディターを開きます。
ダイアログで [データの変換] をクリック
STEP2

「104万行以下」にデータを加工

Power Queryエディター上でデータを加工し、直近(末尾)の10000行のみのデータにします。

  1. [ホーム] タブの [行の保持] > [下位の行の保持] を選択します。
[下位の行の保持] を選択
  1. [行数] に「10000」と入力します。
[行数] に「10000」と入力
  1. [OK] をクリックします。
STEP3

「テーブル」としてワークシート上に出力

  1. 加工が完了したら [ホーム] タブの [閉じて次に読み込む] を選択します。
[閉じて次に読み込む] を選択
  1. 読み込み先として [テーブル] を指定し、シートに配置します。
読み込み先として [テーブル]を指定

アプローチ② データ全体をPower Pivotエディターで閲覧する手順

データをシート上に出力せず、「データモデル」と呼ばれるExcel内部のデータ領域に格納し、Power Pivotエディターで閲覧する方法を説明します。Power Pivotエディターには、シートと違って104万行の縛りがありません。

STEP1

Power Queryで元のデータソースをインポート

アプローチ①のStep1と同じ操作でデータを取り込み、Power Queryエディターを起動します。

※ ダイアログで [読み込み先...] を選択することでStep2のスキップ可

STEP2

Power Queryエディターを終了

データの絞り込みや変換は行わず、[ホーム] タブの [閉じて次に読み込む] を選択し、Power Queryエディターを閉じます。

STEP3

データをシートに展開せず、データモデルに格納

読み込み先で [接続の作成のみ] を指定し、「このデータをデータモデルに追加する」にチェックを入れます。これにより、 データをシート上に展開せずデータモデルに格納できます。

読み込み先の指定でデータモデルに格納
STEP4

Power Pivotエディター画面を起動

データモデルに格納したデータは、Power Pivotエディターで閲覧できます。[Power Pivot] タブの [管理] からエディターを起動し、プレビュー画面上で104万行超のデータを閲覧できます。

Power Pivotエディター起動

大容量に適したファイル形式・格納方法

104万行を超えるデータをExcelで扱う場合、ファイルの保存形式の選択も重要です。通常のExcelのデータ形式である XLSX形式で保存する場合は、シート上に104万行を配置できないため、104万行以下になるように複数のファイルに分割するか、シートではなくデータモデルのみに格納 しておく必要があります。

1ファイルにまとめて104万行超のデータを格納するのであれば、CSV形式が一般的 で扱いやすく、ファイルサイズも小さくなります。ただし、数式や書式情報は保存できません。

形式104万行超の格納数式・書式の保存保管用途共有用途
XLSX(分割)不可(分割して格納)
XLSX(データモデル)不可(シート上なら可)
CSV不可

XLSXのデータ容量を圧縮するならXLSB形式も

XLSX形式ではデータサイズが大きすぎる場合には、XLSB形式という選択肢もあります。
数式や書式設定などの情報も保持できる形式です。
104万行超のデータが扱えるようになるわけではないですが、ファイルのデータ容量を圧縮したい場合には使えます。
ただし、Excel以外のソフトでは読み取れない場合も多く、互換性は低下します。

 

パターン別の使い分け

104万行超のデータの最適な格納方法は、保管用途共有用途 かによって異なります。

保管用途の場合:XLSX(分割)/CSV

104万行超のデータを保管しておく場合には、

  • 複数に分割したXLSX形式ファイル
  • 1つ(または複数)のCSV形式ファイル

のいずれかで格納しておくのがオススメです。

保管用途の場合:XLSX(分割)/CSV

本記事で紹介した手順で簡単に全データをExcelに読み込めるほか、他のソフトでも互換性の高い形式なので、フラットファイル型のデータベースとしても機能します。

集計・分析するときには

XLSX(分割)またはCSVのデータを、Excel上で集計・分析に使いたい場合は、本記事で紹介した手順でデータをインポートし、Excel上で処理することになります。
このときのファイル構成は
「集計・分析用のXLSX1つ + 104万行超データ(分割XLSX / CSV)ということになります。

集計・分析するときのイメージ

データを追加していくときには

XLSX(分割)またはCSVの104万行超データがすでに存在し、今後もデータが増え続けていく場合は、既存のファイルに直接、行を追加するのも1つの手です。
しかし、過去の全データと照らし合わせつつデータを追加していくのであれば、
「入力・集計用のXLSX1つ + 104万行超データ(分割XLSX / CSV)のファイル構成が効果的です。

データを追加していくときのイメージ

入力・集計用のXLSXファイルには、直近のデータを入力していくシートと、直近データ+過去の104万行超データを統合し、集計した結果を表示するシートの2つを作っておきます。
これによりデータ入力と既存の全データの確認をシームレスに行えます。
入力用のXLSX内のデータが増えてきたら、別のXLSXとして切り出すか、既存のCSVに移せば、継続的に運用可能です。

共有用途の場合:XLSX(データモデルに格納)/CSV

他の人にファイルを渡す場合には、

  • 1つ(または複数)のデータモデルにデータを格納したXLSX形式ファイル
  • 1つ(または複数)のCSV形式ファイル

のいずれかを使用するのがオススメです。

共有用途の場合:XLSX(データモデルに格納)/CSV

104万行超データとそれを使った集計・解析結果を共有したいのであればXLSX(データモデル)を、生データだけでよければCSVを使います。XLSX(データモデル)は、データモデルの中に全データが保存されているため、最初にインポートした生データはなくても共有する上では問題になることはほぼないはずです。ただし、データモデルに格納したデータの再利用性は低いので、共有目的以外ではあまり有効ではありません。

XLSX(データモデル)単体で更新した場合のエラー

注意点として、データソースが存在しないときに、XLSX(データモデル)上で「更新」ボタンを押すと「ファイルのパス(C:\Users\...が見つかりません」というエラーが発生します。
共有時に受け取り側でも更新が必要な場合は、データソース(CSVなど)の保存場所(パス)を書き換える手順を合わせて伝えておく必要があります。

Power Query・Power Pivotを使ってもExcelでできないこと

Power QueryとPower Pivotを活用しても、Excelには以下のような2つの構造的な制約が残ります。

  • シートのセルに全データを直接出力することはできません。
    取り込んだ元のデータソースをExcelから直接書き換えることもできず、
    行ごとに手動で異なる色を塗るなどの装飾も行えません。

  • 低スペックのPCでは、快適に操作できないケースがあります。
    処理速度や扱えるデータ量はPCのスペックに依存するためです。
    RAMが不足している状態では
    クエリの更新時にExcelがクラッシュしやすくなります。
    Power QueryやPower Pivotでのデータ処理は、
    シート上での処理に比べれば最適化されてはいるものの、
    高速で処理できるデータ容量には限界があります。

まとめ

本記事では、Excelの行数・容量の仕様と、104万行を超えるデータへの対処方法を解説しました。まとめると以下の通りになります。

  • Excelの行数上限は仕様上1,048,576行(約104万行)で、設定では変更できない
  • Power QueryとPower Pivotを組み合わせることで、104万行を超えるデータにも対応できる
  • 目的に応じて「テーブル出力(①)「Power Pivotエディターでの閲覧(②)の2つのアプローチを使い分ける

Power Query・Power Pivotを駆使しても、元データの全行をシートに直接表示することや、データソースを直接書き換えることはできません。Excelでは対応しきれない要件が出てきたり効率が落ちてきたりした場合には、専用のデータ管理ツール(データベース管理システム)への移行を検討するのが良いでしょう。