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