ここから本文です

関数を使って文字列をうまく分割したい。

myg********さん

2012/3/2821:15:26

関数を使って文字列をうまく分割したい。

エクセル2007です。

スペースで区切られた文字列を分割しようとしています。

一つのセルに

1 国語 や
2 国語 数学 理科 社会 音楽 や
3 国語 数学 理科 などの文字が入力されます。

これらを5分割したいのです。
1 ①国語 ②空白 ③空白 ④空白 ⑤空白
2 ①国語 ②数学 ③理科 ④社会 ⑤音楽
3 ①国語 ②数学 ③理科 ④空白 ⑤空白
こんな感じに反映させたいです。

ところが 空白(スペース)の数がどの行も同じであるならば

=LEFT(L4,FIND(" ",L4)-1) や
=MID(L4,FIND(" ",L4)+1,LEN(L4)-FIND(" ",L4)-(LEN(L4)-FIND(" ",L4,FIND(" ",L4)+1))) などで

何とか出来るのですが
空白の数が行によって変わるとうまくできません。

良い方法があればご教授下さい。

よろしくお願いします。

補足スペースで区切られた文字の文字数はまちまちです。

一つのセルに入っているスペースの数もまちまちです。
(空白の数は0から4まですなわち単語は1語から5語)

「区切り位置」を使わず関数で一発で反映させたいのですが無理でしょうか?

閲覧数:
3,816
回答数:
3

違反報告

ベストアンサーに選ばれた回答

nar********さん

2012/3/2918:23:22

スペース文字での文字列分割する式です。
最大5分割、関数一発、分割数も分割文字数も不定数、という要望内容が
良く伝わりました。
分割前と後の文字列位置関係が、解らなかったので
A列の文字に対し、B~Fの列に分割する設定で作りました。

[B1]式
=IF($A1="","",IF(ISERROR(FIND(" ",$A1,1))=TRUE,$A1,MID($A1,1,FIND(" ",$A1,1)-1)))

[C1]式
=IF(LEN($A1)>LEN($B1)+2,MID($A1,LEN($B1)+2,IF(ISERROR(FIND(" ",$A1,LEN($B1)+2))=TRUE,LEN($A1)+1,FIND(" ",$A1,LEN(B1)+2))-LEN($B1)-2),"")

[D1]式
=IF(LEN($A1)>LEN($B1&$C1)+3,MID($A1,LEN($B1&C1)+3,IF(ISERROR(FIND(" ",$A1,LEN($B1&$C1)+3))=TRUE,LEN($A1)+1,FIND(" ",$A1,LEN($B1&$C1)+3))-LEN($B1&$C1)-3),"")

[E1]式
=IF(LEN($A1)>LEN($B1&$C1&$D1)+4,MID($A1,LEN($B1&$C1&$D1)+4,IF(ISERROR(FIND(" ",$A1,LEN($B1&$C1&$D1)+4))=TRUE,LEN($A1)+1,FIND(" ",$A1,LEN($B1&$C1&$D1)+4))-LEN($B1&$C1&$D1)-4),"")

[F1]式
=IF(LEN($A1)>LEN($B1&$C1&$D1&$E1)+5,MID($A1,LEN($B1&$C1&$D1&$E1)+5,IF(ISERROR(FIND(" ",$A1,LEN($B1&$C1&$D1&E1)+5))=TRUE,LEN($A1)+1,FIND(" ",$A1,LEN($B1&$C1&$D1&E1)+5))-LEN($B1&$C1&$D1&$E1)-5),"")

各列の式を、各々2行以下にコピーして、使用して下さい。

質問した人からのコメント

2012/3/29 22:30:07

ありがとうございました。
さっそく活用させてください。

ベストアンサー以外の回答

1〜2件/2件中

並び替え:回答日時の
新しい順
|古い順

was********さん

2012/3/2900:12:25

どこかで下記のような数式を見ませんでしたか。

=TRIM(MID(SUBSTITUTE(TRIM($L4)," ",REPT(" ",100)),(COLUMN(A4)-1)*100+1,100))
縦横にコピーします。

msk********さん

編集あり2012/3/2823:17:22

一例です。
文字列が2文字限定です。
=MID(SUBSTITUTE(SUBSTITUTE($A1," ","")," ",""),COLUMN(A1)*2-1,2)、右方向にコピー

補足から
スペース文字が半角、全角のどちらかで統一されていれば、TRIM関数を使用でご例示の関数が使用できますのでお試しください。

あわせて知りたい

この質問につけられたタグ

みんなで作る知恵袋 悩みや疑問、なんでも気軽にきいちゃおう!

Q&Aをキーワードで検索:

Yahoo! JAPANは、回答に記載された内容の信ぴょう性、正確性を保証しておりません。
お客様自身の責任と判断で、ご利用ください。
本文はここまでです このページの先頭へ

「追加する」ボタンを押してください。

閉じる

※知恵コレクションに追加された質問は選択されたID/ニックネームのMy知恵袋で確認できます。

不適切な投稿でないことを報告しました。

閉じる