Excel2016のConcat関数は範囲指定で文字列結合ができる
当社は下位互換性を維持する必要性もあってExcel2016は使用していないのですが、Excel2016ではconcatenateを代替する関数としてConcat関数が導入されました。
[Excel2016-]concat
=CONCAT(B2:C8,X7,Y1:Z5)
もともとのconcatenate関数は引数が複数でしたから、concat関数も引数を複数引き渡せます。そしてさらにB2:C8のように範囲で引き渡せるのですから素晴らしいです。
Excel2016以降をお使いの方は本記事は無視して下さい。
旧バージョンを使用している身としては、ぜひこの関数を使いたいのですが・・・。
ユーザー関数ConcatenateByRange()は範囲指定はできても引数は一つでした
以前作成したユーザー関数ConcatenateByRange()は範囲指定はできても引数は一つしか渡せませんでした。
Range(範囲)で引数渡しできる concatenate
concat互換のユーザー関数
そこで、Excel2013以前用にユーザー関数としてconcat互換関数を作ってみました。
[Excel2016-]myConcat
Function myConcat(ParamArray myRanges()) Dim cnt As Long Dim strs As String Dim myCell As Range strs = "" For cnt = 0 To UBound(myRanges()) For Each myCell In myRanges(cnt) strs = strs & myCell.Value Next myCell Next cnt myConcat = strs End Function
使い方はconcatと同じです。大文字小文字は関係ありません。
myConcat使用法
=myconcat(B2:C8,X7,Y1:Z5) =myconcat("apple"," ","pen")
郵便番号、都道府県、市町村、町名番地、建物名のように別れているデータを結合するのが簡単になりました。
ポイント
- 複数の引数を渡せる
- 引数に範囲を渡せる