同様に他の記号や文字で分割することも可能です。
TEXTSPLIT関数を使う方法
次の画像では、TEXTSPLIT関数を使い、B3セルの文字列をカンマで区切り、横方向のセルに分割しています。
D3セル
=TEXTSPLIT(B3,",")
このように第2引数に区切り文字を指定するだけで、文字列を複数セルに分割した結果が得られます(スピル)。
次の画像は、先頭のカンマや連続するカンマ、カンマがない文字列、空白セルに対する結果を示しています。
先頭(及び末尾)のカンマや連続するカンマに対しては空白(空文字列)のセルが発生するのが注意点ですが、画像の下の方で示しているように第4引数を「TRUE」とすれば空白が発生しません。
このほかにも引数が(第6引数まで)存在し、多彩な設定が可能となっています。
詳しくは次の記事で紹介していますので参考まで。
(Excel)TEXTSPLIT関数の使い方 - いきなり答える備忘録
SUBSTITUTE関数等を使う方法(旧バージョン用)
TEXTSPLIT関数以外の関数で分割を実現する、というのはなかなか厄介な問題です。
一部のバージョンではFILTERXML関数による方法も有効ですが、ここではさらに古いバージョンでも利用できる方法を紹介します。
次の画像では、SUBSTITUTE関数等の各種関数を組み合わせて、B3セルの文字列をカンマで区切り、横方向に分割しています。
TEXTSPLIT関数の場合と異なり横方向に適宜フィルコピーする必要があるので注意してください。
また、I3セルでわかるように、余分にフィルコピーするとそのセルは#VALUE!エラーとなります。
D3セル(I3セルまでフィルコピー)
=REPLACE( LEFT(","&$B3&",",FIND("★",SUBSTITUTE(","&$B3&",",",","★",COLUMN(A1)+1))-1),1, FIND("★",SUBSTITUTE(","&$B3&",",",","★",COLUMN(A1))),"" )
式が非常に長いですが、次のようなことをやっています。
- 次の3つの文字列を用意します。
- B3セルの文字列の前後にカンマを付けた文字列
- 上記aの文字列のうち1番目(COLUMN(A1))のカンマを「★」に置き換えた文字列
- 上記aの文字列のうち2番目(COLUMN(A1)+1)のカンマを「★」に置き換えた文字列
- B3セルの文字列の前後にカンマを付けた文字列
- FIND関数を使い、上記b,cの文字列中の「★」がそれぞれ何文字目か取得します(それぞれm,n文字目とします)。
- 上記aの文字列中の「m+1文字目からn-1文字目」までを取得します。
なおセルの文字列中に「★」が含まれるとうまくいかないので、セルに含まれない文字を選択してください。また、カンマの文字を示す「","」と引数の区切りのカンマ「,」の区別がつきにくいのでご注意ください。
次の画像は特殊な文字列に対する実行例です。
#VALUE!エラーは余分に(カンマの数より多く)フィルコピーして発生させているものなので問題はありません。
しかしTEXTSPLIT関数(第4引数=TRUE)のように空白を出さないようにするのはさすがに困難です。
「区切り位置」メニューを使う方法
メニュー操作による方法です。
まずは文字列が入っているセル範囲を選択して、「データ」タブにある「区切り位置」を選択します。
ダイアログが出ますので「コンマやタブなどの~」を選択し、下にある「次へ」のボタンをクリックします。
そしてここでは「コンマ」にチェックを入れます。
複数種類の記号を選択することもできますし、「その他」のボックスで任意の記号や文字を指定することもできます。
「次へ」をクリックすると書式に関する設定に進みますが省略します。
完了すると文字列が分割されます。
2つ上の画面中にある「連続した区切り文字は1文字として扱う」にチェックを入れておくと、連続するカンマに対して空白を出力しません。
ただし先頭にあるカンマに対しては空白が出てしまう(B4セル)のが注意点です。