TEXTJOIN関数を古いバージョンのエクセルでも使えるようにする、ユーザー定義関数を紹介します。
とっても便利なTEXTJOIN関数ですが、Excel2016以降でしか使えません。
※Office365のExcel2016。通常のExcel2016では使えません。
でも、うちの会社はExcelのバージョンがマチマチです。
使用者のExcelのバージョンが2013以前だと、TEXTJOIN関数が使えず、面倒くさく、わかりにくい式を組まないといけなくなりますね。
便利な関数なのに、もったいないです。
例.TEXTJOIN関数を使う場合と使わない場合
サンプル
① 項目を「,」で区切ってつなげる
TEXTJOIN関数
=TEXTJOIN(“,”,TRUE,A2:J2)
結果
大根,人参,キャベツ,白菜,もやし,玉ねぎ,きゅうり,トマト,ごぼう,蓮根
Excel2013以前のバージョン
=A2&”,”&B2&”,”&C2&”,”&D2&”,”&E2&”,”&F2&”,”&G2&”,”&H2&”,”&I2&”,”&J2
結果
大根,人参,キャベツ,白菜,もやし,玉ねぎ,きゅうり,トマト,ごぼう,蓮根
② 区切る項目を「と」と「、」とで交互にする
TEXTJOIN関数
=TEXTJOIN({“と”,”、”},TRUE,A2:J2)
結果
大根と人参、キャベツと白菜、もやしと玉ねぎ、きゅうりとトマト、ごぼうと蓮根
Excel2013以前のバージョン
=A2&”と”&B2&”、”&C2&”と”&D2&”、”&E2&”と”&F2&”、”&G2&”と”&H2&”、”&I2&”と”&J2
結果
大根と人参、キャベツと白菜、もやしと玉ねぎ、きゅうりとトマト、ごぼうと蓮根
TEXTJOIN関数が使えたらいいのに!
となりますね
Excel2013以前のバージョンでTEXTJOIN関数を使う方法
TEXTJOIN関数の中に数式を入れたり、区切り文字の参照先をセル範囲にしたりと複雑なものには対応していません(後述)。
新規のExcelファイルを開き、VBAを記述する
「開発」タブ → Visual Basic (もしくは Alt + F11)
「挿入」タブ → 標準モジュール
出てきたウィンドウにVBAを記述する。
Function TEXTJOIN(Delim, Ignore As Boolean, ParamArray par())
Dim i As Integer
Dim tR As Range
TEXTJOIN = “”
For i = LBound(par) To UBound(par)
If TypeName(par(i)) = “Range” Then
For Each tR In par(i)
If tR.Value <> “” Or Ignore = False Then
TEXTJOIN = TEXTJOIN & Delim & tR.Value2
End If
Next
Else
If par(i) <> “” Or Ignore = False Then
TEXTJOIN = TEXTJOIN & Delim & par(i)
End If
End If
Next
TEXTJOIN = Mid(TEXTJOIN, Len(Delim) + 1)
End Function
エクセルに戻り、名前をつけて保存する(今回はTEXTJOIN.xlamとする)
ファイルはアドイン用のフォルダに保存されます。
例 C:\Users*****\AppData\Local\Packages\Microsoft.Office.Desktop_8wekyb3d8bbwe\LocalCache\Roaming\Microsoft\AddIns\TEXTJOIN.xlam
VBAの解説
Excelで常に使用できるようにする(アドインの設定)
先ほど作ったアドインファイルを設定し、常にTEXTJOIN関数が使用できるようにします。
Excelを開く(新規でも、既存のブックでも可)
「ファイル」タブ → オプション
アドイン → 設定
「Textjoin」にチェックを入れる → OK
これでTEXTJOIN関数が使えるようになりましたので、いつも通りに入力して使ってみてください。
対応できない場合の補足
あらかじめ区切り文字をどこかのセルに記入し、それを参照する場合
① =TEXTJOIN(B4,TRUE,A2:J2)
② =TEXTJOIN(A4:B4,TRUE,A2:J2)
結果
① 大根,人参,キャベツ,白菜,もやし,玉ねぎ,きゅうり,トマト,ごぼう,蓮根
② 大根と人参、キャベツと白菜、もやしと玉ねぎ、きゅうりとトマト、ごぼうと蓮根
参照文字列に式を入れる
① =TEXTJOIN(B4,TRUE,OFFSET(A2,0,0,1,10))
② =TEXTJOIN(A4:B4,TRUE,OFFSET(A2,0,0,1,10))
結果
① 大根,人参,キャベツ,白菜,もやし,玉ねぎ,きゅうり,トマト,ごぼう,蓮根
② 大根と人参、キャベツと白菜、もやしと玉ねぎ、きゅうりとトマト、ごぼうと蓮根
これらのように区切り文字にセルを参照したり、配列に数式を入れたりしたものには対応していません。
コメント