エクセル再発見:名前付きセルが相対アドレスで参照できない | 技術日誌

技術日誌

ここでは,電子工作,木工などの趣味での記録を書いています。
なお当初はKMK研究所のメインテーマであるSPSのノウハウを書いてきましたが,順次SPSノウハウのページに複製を作っていきます。

 例えば,下の図のB3とC3を用いてD3セルを「_e=2」とするには,D2に書いてるようなキー操作をしました。すなわち,左2つ目の値(「_e」)に「=」を付け,更に左1つ目の値(「2」)をつなげる操作です。このD3セルをD4, D5にコピーすると,それらは「_e=2」とはならずに,相対的な位置を参照してそれぞれに,[「左隣2つ目」 + 「=」 +「 左隣1つ目」]の値が入ります。これが便利な機能でD3セルからD5セルまで同じような操作をしなくても済みます。
 ところが,同様にやってもD8からD11までの一番右の値は2, 3, 5, 7とはならずに,全て2になってしまいました。上と異なるのは,C8からC11までのセルには“_a”, “_b”, …という名前が付けられていることです。D8において,左矢印を1回押して相対的に左1番目を指定したつもりが,そうはならず,“_a”という名前が付けられたセルを指定してしまったことになったということです。したがって,これを下の方にコピーした時,C9, C10, …のように相対的な場所を指定せず,“_a”のセル(「2」)として固定されてしまったのです。
 今までにこういうトラブルには遭遇していませんでした。セルに名前を付けた場合,絶対アドレスで参照することがほとんどだったからです。独学の弱みでしょうか。今回名前を付けたセルを相対的に参照したいという要求が出てきました。そこでなんとかしなければなりません。ここで考えたのがRC形式での指定です。エクセルでは例えばC3と指定する代わりにR3C4(行3番目列4番目)とか,R[-1]C[-2](現在セルより上に1つ,左に2つ進んだところのセル)という指定法があります。これがRC形式です。これなら名前を付けたセルをも相対的に指定できます。そこでE2セルに書いてあるようなキー操作(左3番目のセルの値に「=」を付けて,現在の行で左に2つ目のセルの値を繋ぐ。INDIRECTの2番目の引数がFALSEとなっている場合,RC形式で1番目の引数のセルの値を引き出す関数となります)をしました。これにより8行目以下も意図通り,それぞれ2, 3, 5, 7になりました。