複数のセルの値を連結するには?

Question 48.4 Previous Next
たとえば、複数のセルに文字が入っているとして、それを一つのセルにまとめたいときは、どうすればいいのですか?
(スペースはスペースで認識させたいのですが。) よろしくお願いします
Answer   Copyright (C) 2001.8.13 永井善王
図を見ながら、考えてみましょう。4つのケースを用意しました。
Sheet1
B列に「左側」に連結する文字列を、C列に「右側」に連結する文字列を準備しました。
スペースの有無が分かりにくいので D列と E列に、左右それぞれの文字数を表示しました。
ケース2、3、4の違いが分かりますか? ケース2は、先頭にスペースがあります。そして、ケース3は末尾に、ケース4は中間にあります。

質問文に「スペースはスペースで認識させたい」とありますが、VBAでは文字列に含まれるスペースは、除去しない限り認識されると思います。ただ、スペースは表示されない文字(?)であるため、使い方によっては消えてしまったかのように見える場合があります。特に、スペースが先頭か末尾にある場合は、錯覚しやすいようです。

上図の F4セルには 8文字あるのですが、末尾のスペースは見ただけではわかりません。注意して見なければ F3セルの文字列も、先頭のスペースを見落とすかも知れません。
アクティブワークシートのセルに入っている値は、Cellsプロパティで取得するか、Rangeオブジェクトでセルを指定して Valueプロパティで取得します。
例えば、B5セルの場合は、
    Cells(5, 2)
    Cells(5, "B")
    Range("B5").Value
と、いずれかの書き方になります。C5セルの値も同様にして取得します。
これらを F5セルにまとめるために、文字列連結演算子 & (アンパサンド) を使って下記のどちらかのように書きます。
    Cells(5, 6) = Cells(5, 2) & Cells(5, 3)
    Range("F5").Value = Range("B5").Value & Range("C5").Value
文字列連結演算子は、このようにVBAの式の中で使うだけでなく、ワークシートの数式の中で使うことも可能です。もしも、その方法を知りたかったのでしたら、サンプルブックをダウンロード して F2セルの数式を見てください。

 

Excel VBA Macro