はじめに
「ある文字列から、指定した複数の文字を削除したい」
これはよくありそうな要望ですし、それを叶える方法としてSUBSTITUTE関数を何重にもネストした数式が使われてきました。
この方法には消したい文字の数だけネストを深くしないといけないという重大な欠点がありました。
しかし、最新のExcelで使用できる関数TEXTSPLIT関数を使えば短い数式で同じことが実現できます。
この記事ではTEXTSPLIT関数を使って文字列から複数の文字列を削除する数式を紹介します!
この記事で紹介する数式
=CONCAT(TEXTSPLIT(A1,{"-","@","?"}))
TEXTSPLIT関数を使って文字列から複数の文字を削除
今日は文字列から指定した複数の文字列を削除する数式を紹介します!
よろしくお願いします! 複数の文字列を削除するってそんなに難しいことなんですか?
できないことはないんですけど、SUBSTITUTEを何重にもネストさせるとか、何度も置換を繰り返すとか力技しかなかったんです。
しかし、新しく実装されたTEXTSPLIT関数を使ったシンプルな数式で実現可能になったので、紹介したいと思います!
ひょっとしてシノさんが考案した数式ですか…!?
まさか!
X(Twitter)情報です!
まずはTEXTSPLIT関数の機能について説明しますよ!
TEXTSPLIT関数は第1引数の文字列を第2引数で指定した区切り文字で区切って配列を返す関数です!
文字を区切る…名前のままの機能を持っているんですね!
そこでこの区切るという点に注目すると、区切り文字(図の例では「-」)は文字の区切りに姿を変えて、もとの文字は残っていないですよね?
たしかに、セルを見ても「-」はどこにもないですね。
さらに、TEXTSPLIT関数関数は{}(中括弧)を使って区切り文字を複数設定することができます。
指定されたすべての区切り文字で文章を区切っていますね!
…あれ?これって…??
気付きましたか!
区切り文字に指定した複数の文字が、区切りに変わっていますね。
あとは区切られた文字を繋げれば…!!
はい、CONCAT関数で文字列を繋げればこの通り!
<例で使用している数式>
=CONCAT(TEXTSPLIT(A1,{"-","@","?"}))
お、おお~~っ!!
文字列から指定した複数の文字列が消えた状態になっていますね!
TEXTSPLIT関数は文字を区切る関数なのに…!
意外な使い道にびっくりしますよね!
たとえば、次のように文字列を変えることができます。
<例で使用している数式>
=CONCAT(TEXTSPLIT(A1,{"振込:","年","月","日"}))
消したい文字が1つ増えても、全然手間ではないですね!
あまり出会いたくないですけど、出力が思い通りになってくれないシステムのデータを整形するのに使えそうです!
キュウさん少し場数を踏んだようですね??
文字列操作の関数には、頭があがりません!
この数式によって、削除したい文字の数だけネストさせるのではなく、削除したい文字の配列を用意すれば済むようになったのは、本当に画期的です
便利さもですが、発想が素敵ですよね!
思わずお~っ!って言っちゃいました!
新しい関数が登場して、新しい使い方が発見される。 Excelには飽きがこないですね!
おわりに
今回紹介した数式は、区切り文字に指定した文字が区切りに使用されて消えるのを利用した見事な数式でした。
「文字を区切る」からは想像できない「指定した文字を消す」が実現できるのが関数の面白いところですね。
SUBSTITUTE関数を何重にもネストする方法は、その数式を効率よく作る方法まで考えられるほど、需要のある方法だったと言えます。
それがここまでシンプルになるのだから、新しく追加される関数のパワーは凄まじいものがありますね。
【外部リンク】Microsoftサポート|TEXTSPLIT関数
最後までお付き合い頂き、ありがとうございました!
当ブログはエクセル関数の擬人化キャラクター記事をメインコンテンツとしています!
よろしければこちらの記事もどうぞ~!
コメント