セル範囲の文字列を結合するユーザー定義関数をつくる
CONCATENATEだと大変だユーザー定義関数を使おうマクロ 25回
CONCATENATE関数では面倒!
セルの文字列をつなげる時、CONCATENATE(コンカテネイト)関数を使うことが多いですね。
しかし、引数を追加するのが面倒で、単純だけれどつなげるセル数が多い時などは、もっと簡単にできたらと思うことがあります。
(サンプルファイルは、こちらから
3行マクロ25回サンプルデータ)
関数でセルの文字列をつなげる
通常のCONCATENATE関数の場合ですと、A2:D2までのセルの文字列を結合する場合に、一つずつ追加していきます。
結果、このような式になります。=CONCATENATE(A2,B2,C2,D2)
サンプルでは、セルが4つですからいいですけど、255個まで結合できるとはいえ、それって苦痛じゃあないですか?
サンプルでは、セルが4つですからいいですけど、255個まで結合できるとはいえ、それって苦痛じゃあないですか?
ユーザー定義関数でセルの文字列をつなげる
そこで単純なセル範囲なら選択するだけで結合できるユーザー定義関数をつくって処理することにしました。
VBEを表示して、標準モジュールに以下のコードを貼り付けます。
Function Ketugou(MyRange As Range) As String Dim c As Range For Each c In MyRange Ketugou = Ketugou & c Next End Function
セルの文字列結合
ユーザー定義関数は、関数と同じように使えます。
ひとつだけ数式を入力して、あとはオートフィルでコピーします。
結合するセル数が多い時に便利です。
セルの文字列の間に半角スペースを入れて結合
字列の間に半角スペースを入れて結合したい時は、コードに & " "と追加してやります。
Function Ketugou(MyRange As Range) As String Dim c As Range For Each c In MyRange Ketugou = Ketugou & c & " " Next End Function
動画版でのコードは、変数が若干違います。
Function ketugou(Srng As Range) As String Dim Erng As Range For Each Erng In Srng ketugou = ketugou & Erng.Value Next End Function
おためしください。