concat関数の使い方とExcel2013以前の古いエクセルで使う方法


Excel2016の2016年2月アップデートで、
textjoin関数とともに、concat関数が導入されています。

(Excel2016全てで使えるわけではなく、
 一部の契約形態のみ使用できるようです)

concat関数とは?

concatenate関数の完全上位互換で、

=concat(A1:A5)

という
「セル範囲を指定した」書式にも対応する
concatenate関数というイメージです。

複数セルをまとめて結合したいとき、
concatenate関数では不便でしたが、
concat関数があれば、手間が省けます。

複数行かつ複数列の結合は注意

なお、

=concat(B2:C8)

というような、
複数行・複数列の指定をした場合には、

B2セル→C2セル→B3セル→C3セル→・・・

というような順番で、
文字列の結合がされますので、
望む順番で結合されるか、気をつけておいてください。

Excel2013、Excel2010、Excel2007等古いエクセルでは使えない

このconcat関数は、
最新のExcel2016でしか使えませんが、
これも、ifs関数と同じく、
古いExcelで使うためのユーザ定義関数を作ってみました。

Function CONCAT(ParamArray par())
  Dim i As Integer
  Dim tR As Range
  
  CONCAT = ""
  For i = LBound(par) To UBound(par)
    If TypeName(par(i)) = "Range" Then
      For Each tR In par(i)
        CONCAT = CONCAT & tR.Value2
      Next
    Else
      CONCAT = CONCAT & par(i)
    End If
  Next
End Function

上記ソースを
エクセルVBAの標準モジュールにコピペしてもらえれば、
concat関数と、ほぼ同じ動きをすると思います。