[ Excel ] 一度にたくさんのセルの値を結合したい

たとえば、A1セルからA100セルまで、何かデータが入ってたとするじゃないですか。それを全部結合したくても、簡単にやる方法があんまりないんですよね。

文字を連結するときに一番簡単な方法は、「&」を使う方法です。「=A1&A2」とすれば、A1とA2のテキストをくっつけたものが得られます。が、これを100回繰り返すっていうのはさすがに無理です。人間のやることじゃありません。

「+」に対して「sum関数」があるように、「&」と同じ働きをする「CONCATENATE関数」というものがあります。ただ、この関数がかなりイケてなくて、引数に範囲を入れることができないんですよね。ってことは、「=CONCATENATE(A1,A2,...,A100)」みたいにしないといけないわけです。いやこれも無理です。

「=CONCATENATE(A1:A100)」とできればいいんですけど、これができないのでしぶしぶ代案を考えます。

1つ目は、CONCATENATE関数を無理やり使う方法です。まず、B1セルに「=」と書いて、A1セルからA100セルを選択します。つまり、「=A1:A100」という状況にします。その状態でF9キーを押します。すると、セルの値が全部配列に変換されます。あとは、「{」を「CONCATENATE(」に、「}」を「)」に変えればおしまいです。

ただこのやり方だと、元のセルを変更しても、連結結果には反映されません。なので、これはほんとに、ただ連結してもう二度と連結することはない、って場合にしか使えません。今後、元データをいじる可能性があるなら、次の方法でやりましょう。

2つ目の方法は、もう少し作業が必要です。説明を簡単にするため、データは「A2:A100」にあるとします。このとき、B2セルに「=B1&A2」と記入します。そして、それをB100までコピーします。すると、B100セルに、すべてを連結した文字が出てきます。

このやり方は、かなり無駄なデータが出てきてしまうものの、後の修正が反映されるのがいいと思います。

CONCATENATE関数で範囲が指定できたら、こんな苦労をしなくて済むんですが。

前の記事:
BootstrapのTooltipの中身を途中で変更する
次の記事:
[ VBA ] グループ化してない範囲でUngroupすると出ちゃうエラーの回避法