7/13/2021

Excel。結合したセルにデータをコピーするとズレるので、どうにかしたい【Merged cells】

Excel。結合したセルにデータをコピーするとズレるので、どうにかしたい

<INDEX+ROW関数>

結合したセルは、ちょっとクセというか困ったことがあります。

例えば、次のような場合。


A列に店舗名があって、C:D列のように、上半期下半期がある表に店舗名を設定したいわけです。

先に、C2:C3をセル結合しておいたとしても、A2:A5を単純にコピーして貼り付けても、セルの結合は解除されるし、店舗名も希望のように設定することができません。


やりたいのは、このような表にしたいわけです。


ですから、単純なコピーではダメですし、セル参照によるオートフィルで数式をコピーも意味を成しません。

次のような結果になってしまいます。

今回のように、4店舗程度ならば、自分で入力したほうが早いかもしれませんが、件数が増えてしまうと、とても大変な作業になってしまいます。


このようにセル結合した時には、ちょっとクセがあるというわけですね。


では、どのようにしたらいいのでしょうか?


C2には、このような数式を設定して、オートフィルで数式をコピーしてみましょう。

=INDEX($A$2:$A$5,ROW(A2)/2)

INDEX関数を使うことで、希望のように、店舗名を設定することができました。


ROW関数はつかっていますが、シンプルなINDEX関数だけで対応できるのです。


では、この数式を見ていきます。

最初の引数は、配列ですが、これは、範囲なので、$A$2:$A$5を設定します。


2つ目の引数は、行番号ですが、ここがポイント。ROW関数をつかっています。


このROW関数の意味を知るために、E列にROW関数の結果を算出してみました。


結合されたセルは、上側の行番号が算出されていることがわかります。

A2:A5までのデータにある行番号は1~4なので、ROW関数で算出した結果をオートフィルで数式をコピーしてしまうと、2/4/6…と2の倍数で増えてしまうので、2で除算することで、1~4の数値を算出することができます。


なので、INDEX関数の2つ目の引数である行番号には、ROW(A2)/2と設定しているわけです。


よって、C2のINDEX関数は、

=INDEX($A$2:$A$5,ROW(A2)/2)


とすることで、オートフィルで数式をコピーするだけで、結合したセルに、値を設定することができます。


INDEX関数は、色々使える関数ですので、色々試してみるといいかもしれませんね。