Excelが強制終了するバグ

私が主催しているSNS「Excel World」で教えてもらいました。
実行するとExcel 2007が強制終了しますので、実際に試してみるときはご注意ください。

まずSheet1にオートフィルタを設定します。



次に別のシート(ここではSheet2とします)を開きます。



任意のセルからSheet1でオートフィルタが設定されているセルを参照します。
セルに「=」と入力してから、Sheet1を開きます。





オートフィルタ矢印が表示されているSheet1のセルA1をクリックします。



その状態で、セルA1のオートフィルタ矢印をクリックします。



Excelが強制終了します。



まぁ、そう頻繁にやる操作ではありませんが、現在のところ再現性100%ですのでご注意ください。

やっぱり消えない?

「セルと一緒に消えます」で書きましたが、Excel 2007では、シェイプを配置した下のセルを削除すると、上のシェイプも一緒に削除されるようになりました。
詳しくは「セルと一緒に消えます」をご覧ください。

これは便利!と喜んでいたのですが、消えないケースもあるようです。

1.「矢印」を配置します。ここではわかりやすく、色などの書式を変更していますが、標準の書式でも同じです。また、矢印でなく「直線」でも同様です。


2.シェイプを配置した下のセルを列ごと選択します。ここでは列C:Dです。右クリックして[削除]を実行します。


3.シェイプが消えずに残ります。これはExcel 2003までと同じ挙動です。


何だろうこれは?もし、本来は削除されるはずなのに残るのだとしたらバグでしょうけど、こんなにわかりやすいバグが開発段階で発見されない方が不思議です。もしかしたら仕様なのでしょうか・・・

でも「矢印」以外の、たとえば「四角形」では削除されます。





さらに不思議なことに「矢印」の高さが短いと削除されます。





高さがいくつを超えると削除されなくなるかマクロで試してみましたが、これまた不思議なことにマクロから列を削除するとシェイプも削除されます。「シェイプの下のセルを削除すると、上に配置したシェイプも削除される。ただし、直線と矢印は除く。ただし、シェイプの高さが短いと削除されない。ただし、マクロではシェイプの高さにかかわらず削除される」なんていう仕様は意味がわかりません。これはきっとバグなのでしょう。

ちなみに[セルに合わせて移動やサイズ変更をする]はデフォルトでオンになっています。


重複データの削除(もう少し詳しく)

Excel 2007には重複データを削除する機能が、標準機能として追加されました。おそらく、こうしたニーズが世界中で高かったのでしょうね。どんな機能かは、以前にレビューした下記のページをごらんください。

重複データの削除

さて、この[重複の削除]機能ですが、もう少し詳しく見てみましょう。

■残るのは必ず先頭のデータ
たとえば次のようなリストを例にします。重複するデータは[Name]と[Area]です。わかりやすく、重複データには同じ色をつけています。



[データ]タブの[重複の削除]ボタンをクリックすると次のダイアログボックスが表示されます。今回重複をチェックしたいのは[Name]と[Area]ですから、[Age]のチェックボックスをオフにして[OK]ボタンをクリックします。





ここで注意しなければいけないのは、削除されるのは必ず下に存在するデータだということです。言い方を変えれば残されるのは必ず先頭のデータです。まったく同一のデータが重複していたのなら、どれを残しても問題はありません。しかし、今回のケースのように[Name]と[Area]は重複しているけど[Age]が異なっている場合、これを区別したいときもあるでしょう。完全に同一のデータを削除するとき以外は、慎重に操作する必要があります。

■空いた位置には空白セルが挿入される
[重複の削除]機能は、重複しているセルを削除する機能です。では、削除されたセルはどうなるのでしょう。次のような実験をしてみました。



リストの下に、書式を変更したセルを置きました。[重複の削除]によってセルが削除されると、通常の[セルの削除]と同じように周辺のセルがシフトすると予想したからです。また、もしシフトせずに新しいセルが挿入されるのなら、その新しいセルの書式はどうなるのかを調べました。



結果はブランクセル(空白セル)が挿入されました。周辺のセルがシフトすることもありません。ちなみに、削除されるのはリスト内のセルだけです。行全体が削除されるわけではありませんので、リストの左右に別のデータが入力されていても影響を受けることはありません。

■数式が入力されている場合は注意が必要
リスト内に数式が入力されていた場合はどうでしょう。結論から書くと、最下行でSUM関数やAVERAGE関数などを使っているセルは削除の対象範囲になりません。削除の対象範囲でないのですから、当然削除もされません。ただし、これは関数を使っていた場合です。その数式が、=A1+B1のようにセルの参照式だった場合は削除の対象範囲に含まれます

【関数を使っていた場合】




【参照式を使っていた場合】




削除されてしまったセルを参照式が参照しいた場合、その参照は変化します。リストの内部に数式が入力されていた場合も、理屈は同じです。ただし、削除されたセルを解決するようにインテリジェンスな処理は行われません。

【関数を使っていた場合】




【参照式を使っていた場合】




Excel 2007の新しい[重複の削除]機能は、計算式を含まないリストで実行した方がよさそうですね。カンですが、この機能はあまり使われないような気がします。用途が限定されて、汎用性が乏しいですからね。
Topページへ戻る
カレンダー
   1234
567891011
12131415161718
19202122232425
262728293031 
<< July 2009 >>
プロフィール

Excel MVP
スポンサードリンク
リンク
Office TANAKA

Office TANAKA 不定期ブログ

Excel World

VSUG

拙著
拙著
拙著
拙著
拙著
selected entries
categories
archives
recent comment
recent trackback
others
mobile
※当ブログではPNG形式の画像を使っているため、携帯では画像を表示できないこともあります。
search this site.