これらのパターンを使用して、リソース制限エラーを回避しながら、大きな範囲の読み取りまたは書き込みを行います。
- 大きな範囲を小さなブロックに分割します。 すべてを一度に読み込んだり書き込んだりしないでください。
- 必要なものだけを読み込みます (たとえば、
values,numberFormat,formulasではなくvalues)。 -
getSpecialCellsとRangeAreasを使用して、広い範囲ではなく、散在したセルを操作します。 - 制限エラーが発生した場合は、ブロック サイズを小さくして再試行してください。
- データの配置後に書式設定を適用します。
大きな範囲を分割する場合
| シナリオ | 範囲を分割する必要がある署名 | 方法 |
|---|---|---|
| 何百万ものセルを読み取る | タイムアウトまたはリソース エラー | 行ブロックまたは列ブロックで読み取ります。 5,000 行から 20,000 行から始めます。 |
| 大きな結果セットを作成する | 単一 values 書き込みが失敗する |
行ブロックに書き込みます (ブロックごとに同じ列数)。 |
| スパース更新 | 多数の離れたセル |
getRangesとRangeAreasを使用して、結合されたアドレス文字列を構築します。 |
| データの書き込みと書式設定 | 書式設定に時間がかかる Excel | 最初に値を書き込み、後で書式を設定します。 |
書式設定 & 計算を延期する
条件付き書式や数式の書き込みなど、書式設定と計算の負荷の高い操作は、大きな領域に時間を追加します。 考慮対象:
- 最初に生の値 (プレーンな数値またはテキスト) を書き込み、次に 2 番目のパスで数式または形式を追加します。
-
setDirtyは、必要な再計算スコープでのみ使用します。 -
getUsedRangeを使用して、列参照全体 (A:AではなくA2:A5000など) の代わりに使用される行に条件付き書式を制限します。
次の手順
- 関連する リソース制限とパフォーマンスの最適化について説明します。
- 複数の範囲で大きくてスパースな選択を処理します。
- 無制限の範囲のパターンと比較します。
- 特殊なセルの検索で特殊なセルのターゲット設定を 調べます。
関連項目
GitHub で Microsoft と共同作業する
このコンテンツのソースは GitHub にあります。そこで、issue や pull request を作成および確認することもできます。 詳細については、共同作成者ガイドを参照してください。
Office Add-ins