« 今度は暖房の成績係数(COP)の話(江頭教授) | トップページ | 究極の温暖化対策「地球の軌道変更を要請します」(江頭教授) »

Excelの「並び替え」では、並べ替えられるセルの中に書いた数式で自分が存在するシートに所属するセルをシート名を含めた形で参照すると$記号がなくても相対参照ではなく絶対参照として扱われるって知ってましたか?(江頭教授)

| 投稿者: tut_staff

 今回のタイトル、あなたはどう感じましたか?

「まじか!マイクロソフト最低だな!」

でしょうか。それとも

「えっ、当たり前じゃん」

でしょうか。

 私がこれに気がついた時には、どちらかと言えば前者でした。でも大半の人は「何のことやら」だと思います。

 と、いうことで今回のタイトルについて、まずは説明から。

 具体例で説明しましょう。まずはエクセルに適当な表を作ってみます。A行に数字を。B行には適当な名前をいれておきました。

 で、C行はB行の内容を引用しています。下の図の右上の窓の部分、選択されたセル「C1」の内容が表示されるので、「C1」には「B1」をそのまま引用していることが分かると思います。

Fig1_20200707161001

 さて、D行にもB行の内容を引用しましょう。ここで引用の仕方を変えます。「D1」には「=Sheet1!B1」と入力してありますが、「Sheet1」はこの内容が記載されているワークシート(タブといった方が分かる人もいるかも)のこと。「B1」というセルですが、同じSheet1のタブにあるB1ですよ、ということですね。

Fig2_20200707161001

ではこれを並び替えてみましょう。A1からD3までを選択して、Excelのメニューの「データ」から「並び替え」を選択。並べ替える順番を決めるのはA行の内容で、降順(3,2,1)に並び替えることにします。

Fig3_20200707161001

さて、上記のダイアログの「OK」ボタンを押すと...

 

Fig4_20200707161001

A行が並び替えられたのに対応してB行も逆順にならんでいます。C行も同じ。ですがD行だけ挙動が違っていますよね。

Fig5

セルC1の内容を見てみましょう。B1を引用しています。並べ替えによってもともと3列目にあった内容が1列目に移動しました。C3の内容はもともとは「B3を引用する」となっていたわけですが、C1に移されたときB3の内容をも移動されることを考えて、B3ではなくてB1(つまり左隣のセル)を引用する様に変更されているのです。

Fig6

ではセルD1の内容はどうなっているでしょうか。D3の内容ももともとは「(タブSheet1の)B3を引用する」となっていたわけですが、こちらはD1に移されたときにも変更されないのです。

 並べ替えによって移動するものも移動しないものもある。これでは迂闊に並べ換えを使うことはできません。これは困った。

 Microsoft Excel の様な表計算ソフトを少し触ったことのある人なら、ああ、これは相対参照と絶対参照の違いだな、と気がつくと思います。問題は「Sheet1!」の部分が同じワークシート(タブ)を指しているか、別のワークシート(タブ)を指しているかで挙動が違うこと、そして何より Excel で相対参照と絶対参照を区別するために用いられている記号「$」の用法の例外になっている点です。

 何かの意図をもってこのような動作をするようになっているのか、それとも単に気がついていないのか。Excel ほどの「枯れた」ソフトウェアにもまだこんな問題が残っているというのは驚きです。

江頭 靖幸

 

« 今度は暖房の成績係数(COP)の話(江頭教授) | トップページ | 究極の温暖化対策「地球の軌道変更を要請します」(江頭教授) »

日記 コラム つぶやき」カテゴリの記事