9

テーブル構造または通常のセルに行を挿入すると、手動またはその他の方法で非常に遅くなります。表 (リテラル文字列のみを含む) または隣接するセルに、条件付き書式のないシートに 7 行を挿入するのに 10 分以上かかるのと同様です。

ワークブックには 45 のワークシートと 20 のテーブルがあり、より大きなテーブルには約 10 KB の XML ファイルがあります。33MB 相当のスプレッドシート XML があり、ほとんどが約 300KB で、1MB 以上が 5 つ、15MB が 1 つです。かなり複雑ですが、大規模ではありません。すべての計算は、左から右、上から下、右のシートから左のシートへとうまく流れ、ほとんどの場合、配列数式を回避することができました。すべてのテーブルには規則的な構造があり、計算列には 1 つの式しかありません。テーブル列のほとんどは計算され、リテラル データを含む小さい列は 2、3 だけです。

いくつかのシートに多くの条件付き書式を設定していますが、合理性を維持し、断片化を防ぐために細心の注意を払っています。シート全体に約 45 のルールがあり、これらはすべての列をカバーするように一般化されています。フォーマット決定の主な処理は、ヘルパー列としてテーブルに移動され、前述したように、構造は非常に規則的です。

これらのタイプの編集はスレッド セーフではないため、1 つのプロセッサのみがロードされ、ディスク アクティビティが非常に少ないようです。エクセルが何をしているのか理解できません。もちろん計算は手動にしていますが…

この種のことを行と列の制限の増加に帰するコメントを見たことがありますが、なぜこれが要因になるのかわかりません。スプレッドシートの XML ファイルを見ると、値または数式で占められている行と列のコードしかありません。では、なぜ占有されていないセルが機能しているのでしょうか?

これは私の生産性に大きな影響を与えていますが、新たに見つけた空き時間にこのようなサイトを読んで多くのことを学んでいます. 可能であれば、この問題を回避または回避できるように、問題が何であるかを把握する必要があります。

誰でもそれについて私を助けることができますか?

人々がこれについて疑問に思っている場合に備えて、答えは、Excel でパワー クエリとパワー ビューを使用することです。中程度 (50 万行) のデータセットと複雑な構造と変換がすべて問題なく機能することがわかりました。テーブルで数式を使用することはもうありません。もう1つは、これが自然にパワーバイにつながるということです。それが私のヒントです。

4

3 に答える 3

4

長い挿入時間は、列全体または行全体を参照する INDEX (または他の関数) が原因である可能性があります。

私は非常によく似た問題を抱えていました:複雑すぎないワークシート (約 2500 行、15 列のデータ (クエリの結果)、およびクエリ結果からデータを抽出するための約 10 列の数式)。列を挿入すると、最初の列は 4 秒程度で挿入される可能性がありますが、2 回目の挿入には 1 分以上かかります

私の経験:

ワークシートで =INDEX(11:11,1,MATCH(AC$5,$10:$10,0)) のような数式を約 25000 回使用していました。各数式が行全体を 2 回参照していることがわかります。どうやら、列を追加すると、各行が影響を受け、したがって各数式が影響を受けるため、Excel はそれについて何をすべきかを理解しようと忠実に作業に取り掛かります。

Microsoft Web サイトから学んだことに基づいて、式を =INDEX(QueryResults,ROW()-ROW(QueryHeaders),MATCH(AC$5,QueryHeaders,0)) に変更しました。ここで、QueryResults と QueryHeaders は単純な名前付き範囲です。

シート全体でこの変更を行った後、列の挿入はほぼ瞬時 (1 秒未満) になりました。

于 2014-10-02T21:55:14.113 に答える
1

これは、ここで説明されている問題のように聞こえますhttp://fastexcel.wordpress.com/2012/01/30/excel-2010-tableslistobject-slow-update-and-how-to-bypass/

その場合、それを回避するには条件の 1 つを破る
必要があります。

A cell within the Table must be selected
The sheet containing the Table must be the Active Sheet
The cell being updated must be on the same sheet as the table, but does not have to be within the table
There must be a reasonable number of formulas in the workbook.


おそらく、別のシートをアクティブにして、VBA を介して間接的に更新を行うことができます。または、すべての数式を別のワークブックに移動すると、それがバイパスされる可能性があります。
または、テーブルを通常の範囲に戻します (& 必要に応じてダイナミック レンジ名を使用します)。

于 2013-10-23T17:59:43.730 に答える
0

条件付き書式を削除し、メイン コードが完了した後に vba で再適用してみてください。私のために働いた。

于 2013-12-26T08:33:29.603 に答える