[Excel]CONCATカスタム関数
2022年3月21日
概要
CONCAT関数のカスタム関数を作成しました。機能はExcel365やExcel2019のCONCAT関数と同じです。
CONCAT 関数は、複数の範囲や文字列からのテキストを結合しますが、区切り記号または IgnoreEmpty 引数は提供しません。 CONCATENATE関数を置き換えます。 ただし、CONCATENATE 関数は、以前のバージョンの Excel との互換性を保つため、引き続き使用できます。
Microsoft社ホームページ
下記のコードを標準モジュールに貼り付けることで、Excel2016以前のExcel(Excel2007,Excel2010,Excel2013など)でもCONCATE関数を使用することが出来ます。貼り付け方は下記を参照してください。
TEXTJOINカスタム関数を書いたついでに書きました。本来ならCONCATEカスタム関数内ではTEXTJOINカスタム関数を呼び出してコードを再利用したい所ですが、単体でコピーして使用できるように独立した関数にしています。
コード
下記のコードを全てコピーし、標準モジュール等に貼り付けて下さい。下記のコード表示欄の右上に「Copy」ボタンがありますのでご使用下さい。なお、標準モジュールが何だか分からない方は、 Excelのカスタムワークシート関数を使用する方法 を参照して下さい。' [Excel]CONCATカスタム関数
' Copyright (c) 2020-2024 黒箱
' This software is released under the MIT License;.
' このソフトウェアはMITライセンスの下でリリースされています。
'CONCAT関数
'* @fn Public Function CONCAT(ParamArray Params() As Variant) As Variant
'* @brief Excel365・Excel2019のCONCAT関数をExcel2016以前で使用可能にします。
'* @param[in] Params 結合する追加のテキスト項目。 テキスト項目には最大 254 の引数を設定可能です。 各引数には、文字列、またはセルの範囲などの文字列の配列を指定できます。
'* @return Variant 結合した文字列。
'* @details CONCAT関数は、複数の範囲や文字列からのテキストを結合しますが、区切り記号または IgnoreEmpty 引数は提供しません。
'*
Public Function CONCAT(ParamArray Params() As Variant) As Variant
Dim v As Variant
Dim r As Range
Dim Param As Variant
Dim ParamType As VbVarType
Dim Row As Long
Dim Col As Long
Dim ColsCount As Long
For Each Param In Params
ParamType = VarType(Param)
If (ParamType And vbArray) Then
'参照配列の結合処理
If (TypeName(Param) = "Range") Then
Set r = Param
v = r.Value2
ColsCount = r.Columns.Count
For Row = 1 To UBound(v)
For Col = 1 To ColsCount
CONCAT = CONCAT & CStr(v(Row, Col))
Next
Next
'2次元配列定数の結合処理
ElseIf (True) Then
'配列が一次元なら一次元配列用の処理へ移行
On Error GoTo LinearArray
ColsCount = UBound(Param, 2)
For Row = 1 To UBound(Param, 1)
For Col = 1 To ColsCount
CONCAT = CONCAT & CStr(Param(Row, Col))
Next
Next
'1次元配列定数の結合処理
Else
LinearArray:
For Row = 1 To UBound(Param)
CONCAT = CONCAT & CStr(Param(Row))
Next
End If
'単一参照結合処理
ElseIf (ParamType = vbObject) Then
Set r = Param
CONCAT = CONCAT & CStr(r.Value2)
'定数結合処理
Else
CONCAT = CONCAT & CStr(Param)
End If
Next
Exit Function
End Function
プログラムの利用について
本プログラムのライセンスは「The MIT License」を適用しています。
本プログラムは無償で利用できますが、本プログラム内の著作権表示及びライセンス表示は削除せずに表示しておいて下さい。
必須ではございませんが、本ホームページのプログラムを書籍またはホームページ等で一般公開したい方は、お問い合わせフォームよりご連絡頂けると幸いです。
スポンサーリンク
Excelカスタム関数MITライセンス,VBA,カスタムワークシート関数,ソースコード
Posted by 黒箱
この記事のトラックバックURL
スポンサーリンク
カテゴリー
スポンサーリンク
-
ホーム -
上へ
PAGE TOP
ディスカッション
コメント一覧
まだ、コメントがありません