セルE2には{=SUM(IF(A1:A8=$D$2,B1:B8,0))}という配列数式が入力されています。参照しているセル範囲は「A1:A8」と「B1:B8」です。これを「A列全体」と「B列全体」というように指定してみます。入力されているデータが可変のときは、ついこうやりたくなりますよね。ところが、配列数式の引数には"列全体"を指定することができませんでした。2007では可能になっています。こちらも最初は普通の配列数式から。2003ではエラーになった"列全体"の指定です。いうように正しい結果を返してくれます。2007はワークシートの領域が大きくなっています。2007のワークシートは1,048,576行もあります。同じように"列全体"を参照してしまうと、ナント16倍も大きいセル範囲を指定することになります。これは、速度的にどうなんでしょう?いくら配列数式といっても、再計算に一晩かかるようでは使い物になりません。実際に計測してみました。上で使ったワークシートの計算に要する時間です。2003は列全体を指定できませんので、65535セルを参照しています。一度計算された数式が二度目以降に行う再計算です。Excelには"スマート再計算エンジン"というのが搭載されていて、一度計算した数式は、その数式に影響を及ぼすセルが変化したときだけ、もう一度はじめから計算をやり直す仕組みになっていますので、二度目以降の再計算は、一度目に比べて非常に高速です。2007の方が遅いですね。「A:A」と「B:B」で合計2,097,152個のセルを参照しているのですから。配列数式に列全体を指定できるようになったからといって、多用すると計算時間も増大するかもしれませんね。上の計測結果はあくまで"目安"とお考えください。Excelで数式の計算時間を計測するのは、かなりデリケートな作業です。上に書いたように、一度目と二度目以降では計算方法が変わってきますし、数式におけるセルの依存関係を表す"計算チェーン"の構成と再構成も計算時間に影響してきます。Windowsのキャッシュも無視できません。計測の環境とタイミングによっては、異なる数値が導き出されるかもしれません。そのうち、数式の計算時間を計測するベンチマークでも作って、詳細に検討してみましょう。2007の方が、若干遅いのは間違いないと思います。ここでは、下図のようなリストを例にします。1.アクティブセルをA1に置いてオートフィルタを設定します。このアクティブセルの位置は重要なポイントです。2.A列を「女」で絞り込みます。3.結果はこうなります。4.セルB3からセルB7までドラッグして選択します。5.Deleteキーを押します。6.A列のフィルタを解除します。7.絞り込まれたデータだけが削除されています。今度はバグの操作です。8.セル範囲A1:A2(タイトル行)を選択してオートフィルタを設定します。9.A列を「女」で絞り込みます。10.セルB3からセルB7までドラッグして選択します。11.Deleteキーを押します。12.A列のフィルタを解除します。13.絞り込まれたデータ以外も削除されてしまいます。この現象はオートフィルタを設定するときに、どのセルを選択していたかによって挙動が異なります。2003では発生しませんし、オートフィルタ設定時の選択セルによって結果が異なるという仕様は変です。オートフィルタや並べ替えのとき、Excelは対象のリスト範囲を自動的に認識しますが、それに関連したバグと見て間違いないでしょう。