このページには広告が含まれる場合があります。
前回、文字列を連結する古い関数である
「CONCATENATE」関数
について、事例をまじえながらその用途について確認してみました。
今回は、その後継となる「CONCAT」関数と「TEXTJOIN」関数について見ていきたいと思います。
CONCATENATE関数とCONCAT関数の違いとは
エクセル2019(Office365はエクセル2016)から追加された「CONCAT」関数には、「CONCATENATE」関数にない引数の指定ができます。
それは、”セル範囲を連結文字として指定できる”という点です。
実際にその指定方法をご覧いただきましょう。
セル「E1」には、セル「A1:C1」に入力された各文字を「CONCAT」関数で繋げた結果を表示し、
セル「E2」には、同じ各文字を「CONCATENATE」関数で繋げた結果を表示しています。
一目瞭然ですが、「CONCAT」関数は、引数に指定する文字列に「A1:C1」のようなセル範囲を入力できるのです。
つまり、セル「A1」からセル「C1」までに入力された文字を変更すれば、「CONCAT」関数で接続した文字列も自動的に変更されるわけですね。
上のように、セル「C1」が空文字となってしまえば、結果も「A1:B1」の「ずるいよ」と「カンチ」の各文字が接続された後には何も表示されません。
一方で、セル「E2」に表示されている結果は、「#VALUE!」となっています。
これは、「CONCATENATE」関数の引数にセル「A1:C1」を設定してみた結果となります。
古い関数である「CONCATENATE」では、このような引数指定にはエラーを返す仕様となっているのです。
CONCAT関数でできない処理はTEXTJOIN関数で
「CONCATENATE」関数にはできなかった
”セル範囲を引数に指定できる”
「CONCAT」関数ですが、実はこの「CONCAT」関数ではできない処理もあります。
それは、「セル範囲の各文字列の区切り文字を指定する」処理です。
以下、実際の画面を見てみましょう。
先程までは、セル「A1:C1」の文字を単純に繋げていただけなので、句読点や飾り文字が一切ありませんでした。
しかし、本当は、上の赤く囲んだ「関数の結果」が表示しているように、「。」や「!」などの文字を間に挿入して、メリハリをつけたいところです。
ただそうなると、引数にセルの範囲指定はできず、上の引数指定のように1つずつセル番地を指定した合間に、「。」や「!」を指定する方法を取らざるを得ないのです。
そこで登場するのが、「TEXTJOIN」関数です。
「TEXTJOIN」関数では、各文字を区切る「区切り文字」を別個に引数として指定できます。
上のように、「区切り文字」に「。」を指定すると、セル範囲「A1:C1」の各文字の間に「。」が入ります。
関数の結果を見てみると、「僕は(A1)。死にましぇん(B1)。あなたが好きだから(C1)」となっています。
それでは、「僕は、死にましぇん。あなたが好きだから!!」としたい場合は、どうしたらよいでしょうか。
その場合は、「区切り文字」にもセル範囲を指定すればよいのです。
セル「A2:C2」に「句読点」と「!!」が入力されていて、関数の「区切り文字」には「A2:C2」と指定しました。
セル「A1:C1」の文字の間を順番にセル「A2」から「C2」までの区切り文字で区切られていきますので、
上で赤く囲んだ関数の結果のように、「僕は、死にましぇん。あなたが好きだから」となります。
・・・あれっ?!
最後の「!!」が結果に表示されない
と不思議に思いませんでしたか?
では、それを解決するために一手間加えてみましょう。
本来、「区切り文字」に指定した「A2:C2」が「A1:C1」の各文字の間に表示されてほしいですよね。
僕は(A1)
、(A2)
死にましぇん(B1)
。(B2)
あなたが好きだから(C1)
!!(C2)
となってほしい。
しかし、最後の「!!」が表示されません。
これは、区切り文字というのが「文字と文字の間をつなぐもの」だからです。
最後の文字であるセル「C1」の次にも文字がないとその間の「区切り文字」は表示されないのです。
ということは、セル「C1」の次にも何か文字列を指定すればいいわけですが、特に指定したい文字がない場合は、「空文字」を指定してあげて不足を補います。
セル範囲を指定した「A1:C1」の次の引数に「空文字(” ”)」を指定しています。
これで、セル「C1」と「空文字」の間に「!!」が表示されるようになります。
もしくは、セル「D1」に空文字を入力して、以下のように引数指定を設定しても同様の結果となります。
最後のセル「D1」に空文字が入力されていれば、
セル「C1」とセル「D1」の間に「!!」が入りますので、同じように
「僕は、死にましぇん。あなたが好きだから!!」という結果が返ります。
総括
さて、いかがでしたでしょうか。
ただ文字列を繋げるだけだった「CONCATENATE」関数から、
各文字列をセル範囲していできるようになった「CONCAT」関数、
そして、文字と文字の間を区切る「区切り文字」も別途指定できるようになった「TEXTJOIN」関数へとグレードアップしていったのがお分かりいただけたと思います。
文字列を単純に繋げるだけなら「&(アンパサンド)」でも良かったわけですが、
文字列や区切り文字をセル範囲で指定できるようになったので、セルの内容に変更があっても柔軟に対応できるようになりました。
今回のように少し地味な文字列操作関数も、エクセルが新しくなるにつれて進化してきました。
実務だと、既に入力されているセルの文字列を使って文章などを作成する際にこれらの関数を使用する場面が出てくるかもしれません。
文字列操作でよく使う「LEFT」などのトリム系や「REPLACE」などの置き換え関数と合わせて、今回のような文字列連結ができる関数も是非是非使ってみてください。
さて、本来は今回で最終回のはずだった「一昔前エクセル」シリーズも、以前にも告知していた通り、次回の番外編でいよいよ本当の最終回を迎えます。
あのカンマがずらっと並んだ関数をスッキリさせてみたいと思います。
それでは、次回もお楽しみに!