web-dev-qa-db-ja.com

Microsoft Excelに行制限がまだあるのはなぜですか?

Office 2007まで、Excelには最大65,000行があります。 Office 2007では、最大で100万行に達しましたが、これはもちろん素晴らしいことです。しかし、私は興味があります-なぜまったく制限があるのですか?明らかに、スプレッドシートのサイズを大きくすると、パフォーマンスが急激に低下します。ただし、小さなシートから開始し、必要な場合にのみ動的に「サイズ変更」することで、Excelを最適化することはそれほど難しくありません。制限を65Kから100万に増やすのにどれだけの労力が必要だったのかを考えると、なぜ彼らはずっと利用できなかったので、利用可能なメモリとディスク領域の量によってのみ制限されますか?

44
D-Dog

(エラーのために更新されました...皆への提案:SO完全に目覚める前に投稿しないでください)

おそらく最適化のため。 Excel 2007では、最大16 384列と1 048 576行を使用できます。奇妙な数字?

14ビット= 16 384、20ビット= 1 048 576

14 + 20 = 34ビット=複数の32ビットレジスタを保持できます。

ただし、セルのフォーマット(テキスト、数値など)およびフォーマット(色、境界線など)も保存する必要があります。 2つの32ビットワード(64ビット)を使用すると仮定すると、セル番号に34ビットを使用し、他のものには30ビットを使用します。

なぜそれが重要なのですか?メモリでは、スプレッドシート全体に必要なすべてのメモリを割り当てる必要はありませんが、データに必要なメモリのみを割り当てる必要があり、すべてのデータはどのセルにあると想定されるかでタグ付けされます.

2016年の更新:

MicrosoftのExcel 2013および2016の仕様へのリンクが見つかりました

  • 開いているワークブック:利用可能なメモリとシステムリソースによって制限されています
  • ワークシートのサイズ:1,048,576行(​​20ビット)x 16,384列(14ビット)
  • 列幅:255文字(8ビット)
  • 行の高さ:409ポイント
  • 改ページ:水平および垂直1,026(予期しない数、おそらく間違っている、10ビットは1024)
  • セルに含めることができる文字の総数:32,767文字(符号付き16ビット)
  • ヘッダーまたはフッターの文字:255(8ビット)
  • ブック内のシート:使用可能なメモリによって制限されます(デフォルトは1シート)
  • ブックの色:1600万色(24ビットカラースペクトルへのフルアクセスを備えた32ビット)
  • ブック内の名前付きビュー:使用可能なメモリによって制限されます
  • 固有のセル形式/セルスタイル:64,000(16ビット= 65536)
  • 塗りつぶしスタイル:256(8ビット)
  • 線の太さとスタイル:256(8ビット)
  • 固有のフォントタイプ:1,024(10ビット)のグローバルフォントが使用可能。ブックあたり512
  • ブック内の数値形式:インストールしたExcelの言語バージョンに応じて200〜250
  • ブック内の名前:使用可能なメモリによって制限されます
  • ブック内のウィンドウ:使用可能なメモリによって制限されます
  • ワークシートのハイパーリンク:66,530ハイパーリンク(予期しない数、おそらく間違っています。16ビット= 65536)
  • ウィンドウ内のペイン:4
  • リンクされたシート:使用可能なメモリによって制限されます
  • シナリオ:利用可能なメモリによって制限されます。概要レポートには、最初の251シナリオのみが表示されます
  • シナリオ内のセルの変更:32
  • ソルバーの調整可能なセル:200
  • カスタム関数:利用可能なメモリにより制限
  • ズーム範囲:10%〜400%
  • レポート:利用可能なメモリにより制限
  • 参照の並べ替え:1回の並べ替えで64。順次ソートを使用する場合は無制限
  • 元に戻すレベル:100
  • データ形式のフィールド:32
  • ワークブックパラメーター:ワークブックあたり255パラメーター
  • フィルタードロップダウンリストに表示されるアイテム:10,000
35
some

一言で言えば-速度。最大100万行のインデックスは32ビットWordに収まるため、32ビットプロセッサで効率的に使用できます。 CPUレジスタに収まる関数引数は非常に効率的ですが、それより大きいものは、関数呼び出しごとにメモリにアクセスする必要があり、操作がはるかに遅くなります。スプレッドシートの更新は、多くのセル参照を含む集中的な操作になる可能性があるため、速度が重要です。さらに、Excelチームは、100万を超える行を扱う人はスプレッドシートではなくデータベースを使用することを期待しています。

9