カンマ区切りなどで文字列を連結したいケース多いです。
TEXTJOIN関数が今では用意されているのですが、2016以前はTEXTJOIN関数はありませんでした。
エクセル2016以前のバージョンを使わなければならず、文字列を連結したいケースが以前いた職場であったため、その解決方法です。
【文字列を連結した図】
TEXTJOIN関数がないので、代替の関数を自分で作ります。
■手順1:VBEを開く
[ctrl]+[F11]でVBAのプログラム書くためのエディター(VBE)を開きます。
【VBEを開いたイメージ】
■手順2:標準モジュールを追加する
プログラムを書く場所を開いてください。「挿入」→「標準モジュール」
(Module1(コード))と出ている白いWindowが出ればOKです。
手順3:プログラムを書く。
以下の内容をコピーして貼り付けてください。これはカンマ区切りで文字列を連結する独自関数です。
Option Explicit
Public Function joinComma(args As range, Optional flg As Boolean = True) As String
Dim result As String
Dim txt As Variant
For Each txt In args
If Len(result) > 0 Then
result = result & ", "
End If
If flg = True Then
result = result & "'" & txt.Value & "'"
Else
result = result & txt.Value
End If
Next txt
joinComma = result
End Function
【コードを張り付けたイメージ】
手順4:保存する
[ctrl]+[s]で保存します。この際、ファイルの種類を「エクセルマクロ有効ブック(*.xlsm)」で保存するようにします。xlsxのままだと、マクロ(先ほど張り付けたプログラム)が保存できずに消されてしまい、次にエクセルを開いた際にがっかりします。
手順5:関数を呼び出す
さて、準備がすべてできたのでエクセル関数として先ほどのプログラムを使いましょう。
B3~B3に書いてある文字列を連結したい場合、「=joinComma(B3:D3, false)」とセルに関数を書きます。
そうすると、文字が連結できます。
他にも、連結する文字列を「’」シングルコーテーションで囲いたい場合は「=joinComma(B3:D3)」とします。
UPDATE分を作るときなんかによく使っています。
独自関数を定義すると自分の使いたいようにカスタマイズできていいですね。
エクセル関数を独自に定義できるというのは便利ですがあまり知られていない機能です。使わないともったいないですね。
以下は私がVBAを勉強する際に使っていた本の紹介です。
↓↓↓↓↓↓↓↓↓↓↓↓アマゾンアソシエイトのリンク↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓
Excel VBA 逆引き大全 600の極意 Microsoft 365/Office 2021/2019/2016/2013対応
Excel VBAのプログラミングのツボとコツがゼッタイにわかる本[第2版]
VBAエキスパート公式テキスト Excel VBAベーシック
VBAエキスパート公式テキスト Excel VBAスタンダード
↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑↑