複雑な参照「単一セル→結合セル」


セルを参照するのは簡単です。「=」に続けて参照したいセルのアドレスを指定すればいいです。

セルをコピーすれば、参照しているセルのアドレスも自動調整されます。

では、次のようになっていたらどうでしょう。

C列のセルは結合されています。これ、先と同じように参照式をコピーすると、うまくいきません。

結合されているセルというのは、左上のセルだけが存在しているというか、使えるというか。つまり、下図のようなイメージなわけです。

そして、これらのセルで、それぞれ次のような参照式を自動的に作りたいわけです。

これは、一筋縄ではいきませんね。こんなときは、関数を使って何とか参照しなければなりません。まぁ、思いつくのはINDIRECT関数OFFSET関数です。ここでは、INDIRECT関数で考えてみましょう。まぁ、OFFSET関数でも考え方は一緒です。

要するに、次のようになればいいわけです。

A列の"A"という文字は固定ですから、次のように行番号が自動的に1ずつ増えていく仕組みを考えればいいですね。

つまり、

セルC1には → セルA1を参照するための「1

セルC3には → セルA1を参照するための「2

セルC5には → セルA1を参照するための「3

  :

ということです。まずは、ROW関数を使ってみます。ROW関数は、この関数が入力されているセルの行番号を返します。数式の作成には欠かせない、とても便利な関数ですので、ぜひ覚えておきましょう。

各セルに入力したROW関数は「1・3・5・7…」という数字を返します。そりゃそうです。入力されているセルのアドレスは、結合された結果「C1・C3・C5・C7…」となるのですから。この「1・3・5・7…」から、何とかして「1・2・3・4…」という数字を作りたいです。というか、「1・3・5・7…」を「1・2・3・4…」に変換する仕組みを作ります。

まず2で割ってみましょうか。

あれ?いきなり、なんかイイ感じになりましたよ。ROW関数を2で割ると、整数部が「0・1・2…」となるじゃありませんか。とりあえず、この整数部だけ取り出してみます。小数部を含む数値から整数部だけを取り出すにはINT関数を使います。

いま欲しいのは「1・2・3…」ですから、このINT関数の結果に1を加えます。

おお、作れちゃいました。簡単でしたね。この「1・2・3…」と、文字列の"A"を結合すれば、参照したいセルのアドレスを作れます。

アドレスさえ作れれば、それをINDIRECT関数で参照してやるだけです。

ここで、ROW関数の結果を割った「2」は結合されているセルの行数です。もし、3セルずつ結合されていたら「3」で割ります。

今回は簡単な例として、A列もC列も、どちらも1行目から始まるレイアウトで解説しました。もし、それぞれ開始行が1ではなかったら、最後の「+1」などでうまく調整してください。

今回は、連続して入力されている単一セルを、結合セルから参照する仕組みを解説しました。逆に、結合されているセルを、単一セルから参照するやり方は、下記のページをご覧ください。

複雑な参照「結合セル→単一セル」