いまさら聞けないExcelの使い方講座

【Excel】「(株)」などの法人種別を取り除いて団体名を50音順で並べ替えるには?

「株式会社」や「(株)」を除いて組織名だけを取り出したい!

「株式会社」や「(株)」が混在していても大丈夫

 取引先リストを整理したい時、「株式会社」を除く「○○」だけを取り出したいことがありませんか? 例えば、組織名の前後どちらにも付く可能性のある「株式会社」が含まれていると、並べ替えには不都合です。

 並べ替えの順序は、入力されているデータによって五十音順や大小順となるため、以下のような取引先リストを昇順で並べ替えると、先頭の「(株)」や「(同)」が優先されてしまいます。

例えば、このまま[取引先名]列を昇順で並べ替えると、「(株)」や「(同)」などが優先されてしまいます

 また、法人の形態は「株式会社」のほかに「財団法人」や「学校法人」などもありますよね。並べ替え用の列を手入力で修正する必要はありません。今回は、「株式会社」や「(株)」などの文字列をまとめて取り除くテクニックを紹介します。

単純に「株式会社」を取り除くだけならSUBSTITUTE関数

 「株式会社」といった特定の文字列を取り除くには、SUBSTITUTE関数が定番です。ただし、1つの数式で置換できるのは、1つだけです。数式は以下のようになります。

=SUBSTITUTE(B2,"株式会社","")

 セルB2に含まれる「株式会社」を空白("")に置換することで取り除いています。当然ですが、「(株)」や「合同会社」「有限会社」などはそのままです。

セルC2に入力した数式「=SUBSTITUTE(B2,"株式会社","")」をコピーした状態です。「株式会社」は取り除かれていますが、「(株)」や「合同会社」はそのままです(①)

 混在する表記が「(株)」だけなら、以下のように記述できますが、カッコの全角半角が統一されていないこともありますよね。

=SUBSTITUTE(SUBSTITUTE(B2,"(株)",""),"株式会社","")

 さらに「(株)」も取り除くために、SUBSTITUTE関数を組み合わせると、数式が複雑になってしまいます。

複数の文字列を取り除くならTEXTSPLIT関数

 あらかじめ取り除きたい文字列をリスト化しておき、TEXTSPLIT関数を使えば、まとめて処理できます。TEXTSPLIT関数は本来、指定した区切り文字でテキストを複数のセルに分割するためのものですが、区切り文字自体は結果に含まれないため、特定の語句を“削除する”用途としても利用できます。区切り文字にはSUBSTITUTE関数の検索文字列には使用できない配列を使用できるので、複数の文字列を削除する場合にピッタリです。TEXTSPLIT関数の構文は以下の通りです。

TEXTSPLIT関数の構文。[text](文字列)を[col_delimiter](列区切り)と[row_delimiter](行区切り)で区切り、複数の列・行に分けて表示します。[ignore_empty](空文字の扱い)を「TRUE」とすると、空白を詰めて表示します(省略した場合は「FALSE」の扱い)。[match_mode](検索モード)は大文字と小文字を区別するかどうかの指定(省略可)、[pad_with](空いたセルの値)は結果の列数や行数が異なる場合に空いたセルに表示する値を指定します。

 [row_delimiter](行区切り)、[ignore_empty](空文字の扱い)、[match_mode](検索モード)、[pad_with](空いたセルの値)は省略可能ですが、後ろの引数を指定する場合は「,」を記述してください。取り除く文字列が増える可能性がある場合は、引数[col_delimiter](列区切り)のセル範囲を広く指定しておいてもいいでしょう。

=TEXTSPLIT(B2,J$2:$J$16,,TRUE)

 セルB2の文字列を対象に、セルJ2~J16に含まれるリストを使って列方向(col_delimiter)に分割し、空白がある場合(ignore_empty:空文字の扱い)は詰めて(TRUE)表示します。「株式会社」を取り除いた結果の空白を詰める意味です。ここでは、[ignore_empty](空文字の扱い)に「TRUE」と指定するので、[col_delimiter](列区切り)の後ろに「,」を入力することを忘れてはいけません。

取り除きたい文字列をセルJ2~J16に入力してあります(②)。セルC2に「=TEXTSPLIT(B2,J$2:$J$16,,TRUE)」と入力します(③)
数式を下方向へコピーした状態です。「(株)」「(株)」「合同会社」などがまとめて取り除かれていることがわかります

並べ替え前にひと工夫が必要

 この後、並べ替えをする場合は、もうひと手間必要です。SUBSTITUTE関数やTEXTSPLIT関数の結果には“フリガナ”が含まれていません。数式の結果を「値」として貼り付け直し、フリガナを取得しておきましょう。