1

Excel 2003、Windows XP SP3:

非常に大規模で複雑なExcelブックを操作するExcelユーザーが多数います。一般的なワークブックには60以上のワークシートがあり、サイズは70MB以上です。作成した.xllアドインがあり、これらのスプレッドシート全体で使用されています。アドインには、広範なデバッグ機能とログ機能があります。

一貫して再現できなかった、非常に奇妙で不安定な動作に気づきました。ここでは、問題の典型的な兆候について説明します。

1つのスプレッドシートの範囲の1つに、Excelss関数と独自のアドイン関数の両方の関数へのネストされた呼び出しを含む数式配列があります。数式は次のようになります。

{=IF(cndtn,AddinFcn1(rng,INDIRECT(VLOOKUP($A2549,rng2,col,0)),AddinFcn2(param)),-1)}

ここで、AddinFcn1とAddinFcn2は、アドイン内に登録されている関数です。Excelが各アドイン関数を呼び出す回数を監視し、すべての呼び出しを、呼び出しの原因となったセルまたは範囲の評価と照合できます。アドインとワークブックをクリーンなExcelにロードしてから、ワークブック( "F9")を計算すると、計算は1回目、2回目、場合によっては10回も正常に完了する可能性があり、AddinFcn2とAddinFcn1の両方への1回の呼び出しを確認できます。上記の式を含む範囲の評価に由来します。しかし、いくつか3番目の「F9」で内側のAddinFcn2が突然Excelによって19回呼び出され、4番目の「F9」で内側のAddinFcn2が20,000回呼び出されることがあります。または、範囲の評価中に突然内側のAddinFcn2が19,000回呼び出される、10番目の「F9」まではすべて問題ないかもしれません。奇妙なことに、外部関数AddinFcn1はまだ1回だけ呼び出されます。

これがいつ発生するか、または関数が何回呼び出されるかについては、韻や理由がないようです。呼び出しに着信するデータ、実際にはスプレッドシート内のすべてのデータは、各F9で同じであり、計算ごとに何も変わりません。

誰かが同様の行動を見たことがありますか?Excelが(不必要に)内部関数呼び出しを数万回、さらには数十万回再計算する原因について誰かが推測していますか?

4

0 に答える 0