適材適所

WindowsやPowerShellやネットワーク、IBMなどのシステム系の話やポイ活など気になったことも載せているブログです。

TextJoin関数で連結する文字を囲んで連結したい

Excel 2019で登場した、待望(?)の文字列連結関数、TextJoin。

これが登場する前は、VBAで関数をちょこっと自作してましたが、もうその手間から解放されますね。

今回は、そのTextJoin関数のちょっとした応用例として、連結する文字を特定の文字(ダブルクォーテーションなど)で囲んでから連結する方法を紹介したいと思います。

どんなときに役立つか

"a","b","c"

みたいに文字列を連結したいときに役立ちます。

個人的にはプログラムで配列を書くときにTextJoin関数を使ってExcelで作成してコピペしています。

第一引数の区切り記号を工夫することでできるよ

TextJoin関数のヘルプを見ると構文はこのようになっています。

TEXTJOIN (区切り記号、ignore_empty、文字列 1, [文字列 2],...)

最初に区切り記号を指定します。この区切り記号が文字列と文字列の間にはいるわけです。

この記事のキモは、この区切り記号です!

というわけでこの区切り記号を使って色々やる例を見ていきましょう。

ただ連結する

区切り記号に何も指定しないと、ただ文字列が連結されます。

=TEXTJOIN("",TRUE,A1:A2)

f:id:shinmai_papa:20200715083544p:plain

カンマ区切りにする

カンマ区切りにする場合は、

=TEXTJOIN(",",FALSE,A1:A7)

区切り文字にカンマを指定します。

f:id:shinmai_papa:20200715083547p:plain

特定の文字列で囲む

特定の文字で囲みたい場合です。

%a%,%b%

この例では、パーセントで囲ってみました。

このようにするためには、区切り記号を工夫し、区切り記号の頭とお尻に文字列を追加してあげます。

=TEXTJOIN("%,%",TRUE,A1:A7)

f:id:shinmai_papa:20200715083551p:plain

そうすることで、連結した文字列の前後に%が追加されました。

これだけだと連結後の文字列の前後に記号が足りないので、付け加えてあげます。

="%"&TEXTJOIN("%,%",TRUE,A1:A7)&"%"

f:id:shinmai_papa:20200715083555p:plain

こうすれば、文字列を全て記号で囲むことができます。

バリエーション

ダブルクォーテーションやシングルクォーテーションをワークシート関数で使うときは、とっても見づらいし、書くのも大変なのであんちょこを貼っておきます。

ダブルクォーテーション

=""""&TEXTJOIN(""",""",TRUE,A1:A7)&""""

シングルクォーテーション

="'"&TEXTJOIN("','",TRUE,A1:A7)&"'"

クォーテーションなどを別のセルに書いておくのもアリ

可読性をあげるためには、クォーテーションなどを別のセルに書いておけば可読性があがります。

=E1&TEXTJOIN(E1&","&E1,TRUE,A1:A7)&E1

上記の例は、E1にクォーテーション記号を書いてある前提です。

終わりに

やっと登場してくれた、汎用的な文字列連結用関数。

まだまだ、色々と活用できそうですね!!

ここまでお読みいただき、ありがとうございました。