Excelで指定した文字列を区切り文字で1文字ずつ分ける方法
今回は、Excelの新しい動的配列機能を活用して、セルに入力された文字列を区切り文字で1文字ずつ分ける方法について解説します。主に使用する関数は TEXTJOIN 関数、MID 関数、SEQUENCE 関数です。
基本的な計算式
以下の式は「セル番地」に入力されている文字を区切り文字「_」で1文字ずつ分けて表示します。出力結果は横方向へスピルします。「セル番地」は2か所にセットします。区切り文字は自由に変更してください。
=TEXTJOIN("_", TRUE, MID(セル番地, SEQUENCE(LEN(セル番地)), 1))
分割したい文字がセルA1へ入力されているならば以下の式となります。
=TEXTJOIN("_", TRUE, MID(A1, SEQUENCE(LEN(A1)), 1))
この計算式を使用することで、文字列を区切り文字で1文字ずつ分割して、各セルに表示させることができます。具体的な例を用いて、計算式の構造を詳しく見ていきましょう。
指定した文字列を区切り文字で1文字ずつ分ける計算式
計算式の構造
=TEXTJOIN("_", TRUE, MID(セル番地, SEQUENCE(LEN(セル番地)), 1))
この計算式は、以下のように各部分に分解できます。
- セル番地: 文字列が入力されているセルです。A1など、分割したい文字が入力されているセルを指定してください。
- SEQUENCE(LEN(セル番地)): 文字列の長さに基づいて、SEQUENCE関数を用い1から文字数までの連続した数値の配列を生成します。LEN関数は文字列の長さを調査します。
- MID(セル番地, SEQUENCE(LEN(セル番地)), 1): MID関数は、指定された位置から1文字を取り出します。SEQUENCE関数によって生成された各位置に対して、文字列の各文字を1つずつ取り出します。
- TEXTJOIN(“_”, TRUE, …): TEXTJOIN関数は、指定された区切り文字(この場合は「_」)で、各文字を連結します。
具体的な使用例
例えば、セルA1に「山田一郎」という文字列があるとします。この場合、計算式は次のようになります。
=TEXTJOIN("_", TRUE, MID(A1, SEQUENCE(LEN(A1)), 1))
この計算式をセルB1に入力すると、以下のように表示されます。
結果:
B1 | 山_田_一_郎 |
セルB1に入力した計算式を他のセルにコピーすれば、A列の文字列を区切り文字で分割して表示させることができます。
SEQUENCE関数の詳細
SEQUENCE 関数は、指定された行数と列数に基づいて連続した数値の配列を生成します。今回は文字列の長さを元に配列を生成しています。
=SEQUENCE(LEN(A1))
例えば、文字列が「山田一郎」(4文字)であれば、この関数は次のような配列を生成します。
{1, 2, 3, 4}
LEN関数の詳細
LEN 関数は、引数内の文字の字数を調査します。以下の式ならば「4」を返します。
=LEN("山田一郎")
A1に「山田一郎」と入力されているならば、下記の式を設定することで「4」が返ります。
=LEN(A1)
MID関数の詳細
MID 関数は、指定された位置から特定の文字数を抽出します。今回の例では、各位置から1文字ずつ抽出しています:
=MID(A1, SEQUENCE(LEN(A1)), 1)
SEQUENCE関数によって生成された各位置に対して、MID関数が適用されるため、結果として文字列の各文字が順番に取り出されます。
TEXTJOIN関数の詳細
TEXTJOIN 関数は、指定した区切り文字で複数のテキストを連結するために使用されます。今回は、各文字を「_」で区切りながら連結します。完成したらコピーをします。
=TEXTJOIN("_", TRUE, MID(A1, SEQUENCE(LEN(A1)), 1))
このように、Excelの動的配列数式を活用することで、セルに入力された文字列を区切り文字で1文字ずつ分割して表示することができます。TEXTJOIN関数、MID関数、SEQUENCE関数を組み合わせることで、簡単に文字列を分割し、各セルに表示させることができます。ぜひ試してみてください。
コメント