【VBA・Excel】文字列を結合する

エクセルやVBAで文字列を結合する方法について。結合方法はいろいろありますが、VBAでもワークシート上でもアンパサンド(&)を使うことがほとんどです。アンパサンド(&)による文字列の結合はややスピードに難ありと言われているので、VBAで大量の文字列を結合する際には別の方法を検討したほうがいかもしれません。

スポンサーリンク

アンパサンド(&)を使用する

一番シンプルで、表記上もわかりやすいのでこれが一番おすすめです。”[文字列A]”と”[文字列B]”をつなげたい場合は次のように&でつなげてやればOKです。2つ以上の文字列を結合する場合も順番に複数の文字列を&でつなげていくだけで使用可能です。

こちらの方法だと文字列結合の処理がやや遅いという懸念がありますが、通常それを気にするような局面はないと思います。「大量に文字列を結合するときは他の方法を検討したほうが良いかも」ぐらいのことは頭の片隅に入れておいてもよいかもしれません。

なお、VBAのコードを使用する際はカッコに囲まれた部分([***])を自分のプログラムに合わせて変更してください。

&を用いた文字列の結合(ワークシート)

= "[文字列A]" & "[文字列B]"

&を用いた文字列の結合(VBA)

'--- 結合後の文字列を入れる変数 ---'
Dim strTmp as String
strTmp = "[文字列A]" & "[文字列B]"

Join関数を使用する

VBAでしか使えませんが、高速に文字列の結合を実現したい場合にはJoin関数を使用します。こちらは、配列に格納された文字列を一気に結合する関数です。詳細はこちらに書いてあるので興味があればご参照ください。

プラス(+)を使用する

こちらもVBAだけでしか使用できませんが、アンパサンド(&)の代わりにプラス(+)を用いても文字列の結合を行うことが可能です。しかし、

  • 文字列の結合なのか数字の加算なのかわかりにくい
  • 文字列と数字の結合をしようとした場合にエラーが発生する

という問題があるので極力使わないようにしましょう。参考程度に見ておいてください。

+を用いた文字列の結合(VBA)

'--- 結合後の文字列を入れる変数 ---'
Dim strTmp as String
strTmp = "[文字列A]" + "[文字列B]"

CONCAT関数を使用する

ワークシート関数のCONCAT関数を使用する方法もあります。こちらは引数として与えた文字列を結合した結果を戻り値として返してくれます。2つ以上の文字列を同時に指定してやるとそれらを順に結合した文字列が返ってきます。

CONCAT関数を用いた文字列の結合(ワークシート)

= CONCAT("[文字列A]","[文字列B]")

CONCAT関数を用いた文字列の結合(VBA)

'--- 結合後の文字列を入れる変数 ---'
Dim strTmp as String
strTmp = Application.WorksheetFunction.Concat("[文字列A]", "[文字列B]")