- 締切済み
文字列の分解
1つのセルに入力された文字列を分解したいのです。 例えばφ20 +0.010/+0.001と有る場合別のセルにφ20、+0.020、+0.001と分解したいのです。 =MID(C1,1,FIND(" ",C1)-1) =MID(C1,FIND(" ",C1)+1,6) =MID(C1,FIND("/",C1)+1,FIND("/",C1)) としているのですが、文字列に” ”や”/”がない場合は#VALUE!となり表示出来ませんし、+0.010の部分の桁が増減すると上手く表示が出来なく成ります。 何かいい方法は無いでしょうか?
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- maron--5
- ベストアンサー率36% (321/877)
#4のmaronです ★B1の式を右と下にコピーしてください
- maron--5
- ベストアンサー率36% (321/877)
>文字列に” ”や”/”がない場合は#VALUE!となり表示出来ません >+0.010の部分の桁が増減すると上手く表示が出来なく成ります。 ◆とりあえず、上の問題はクリアしています A B C D 1 φ20 +0.010/+0.001 φ20 +0.010 +0.001 2 φ20+0.010+0.00234 φ20 +0.010 +0.00234 B1=TRIM(INDEX(MID(SUBSTITUTE(SUBSTITUTE($A1,"/",),"+",REPT(" ",50)&"+"),ROW($1:$50)*50-49,50),COLUMN(A1)))
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
要するに、φの後に数値, 正負符号付き数値, 正負符号付き数値って分け ればいいんでしょ。「データ」→「区切り位置」で、スペースとスラッ シュを区切りに指定するって手口はどうでしょうね。 スペースやスラッシュが無い場合ってのがどういう状態で、どういう風に 区切りたいのか不明なんだけど、大量にあるのならExcelに執着するのは やめて、正規表現の使えるエディタで一気に整形してCSVにでもして読み 込み直すのが手っ取り早くて好きです。愛用のJEditは、 {φ[\d\.]+}.*{[+ー\+\-][\d\.]+}.*{[+ー\+\-][\d\.]+}を\1,\2,\3に 置換しろといえばスペースやスラッシュが欠落してたり符号が1バイトと 2バイトごちゃごちゃだったりしても、全部きれいに分離したCSVを作って くれます。
- imogasi
- ベストアンサー率27% (4737/17069)
FIND関数は探索した文字が無いときはISERRORで捉えます。 ーー 次の2点を明確に区別して (区切りの問題) 第2と第3の区切りが、実例では良くわかりません。スペースですか 第1はスペース 第2は/ または/+か? ーー (有無を判別する問題) 有無の捉えるのは 第1はシータ 第2はスペース+「+」 第3は/+ かな。IFのネストでややこしくなるが、関数で不可能ではない。 しかし、小生なら、IFのネストと、関数の文字数が増えるのが嫌いで、VBAでユーザー関数を作るのが好みかな。
- mshr1962
- ベストアンサー率39% (7417/18945)
下記のようにすれば#VALUE!と桁の増減に対処できます。 C2=MID(C1,1,FIND(" ",C1&" ")-1) C3=MID(C1,LEN(C2)+2,MAX(FIND("/",C1&"/")-LEN(C2)-2,0)) C4=RIGHT(C1,MAX(LEN(C1)-FIND("/",C1&"/"),0))