• 締切済み

文字列の分解

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の部分の桁が増減すると上手く表示が出来なく成ります。 何かいい方法は無いでしょうか?

みんなの回答

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.5

#4のmaronです ★B1の式を右と下にコピーしてください

  • maron--5
  • ベストアンサー率36% (321/877)
回答No.4

>文字列に” ”や”/”がない場合は#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)))

回答No.3

要するに、φの後に数値, 正負符号付き数値, 正負符号付き数値って分け ればいいんでしょ。「データ」→「区切り位置」で、スペースとスラッ シュを区切りに指定するって手口はどうでしょうね。 スペースやスラッシュが無い場合ってのがどういう状態で、どういう風に 区切りたいのか不明なんだけど、大量にあるのならExcelに執着するのは やめて、正規表現の使えるエディタで一気に整形してCSVにでもして読み 込み直すのが手っ取り早くて好きです。愛用のJEditは、 {φ[\d\.]+}.*{[+ー\+\-][\d\.]+}.*{[+ー\+\-][\d\.]+}を\1,\2,\3に 置換しろといえばスペースやスラッシュが欠落してたり符号が1バイトと 2バイトごちゃごちゃだったりしても、全部きれいに分離したCSVを作って くれます。

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.2

FIND関数は探索した文字が無いときはISERRORで捉えます。 ーー 次の2点を明確に区別して (区切りの問題) 第2と第3の区切りが、実例では良くわかりません。スペースですか 第1はスペース 第2は/ または/+か? ーー (有無を判別する問題) 有無の捉えるのは 第1はシータ 第2はスペース+「+」 第3は/+ かな。IFのネストでややこしくなるが、関数で不可能ではない。 しかし、小生なら、IFのネストと、関数の文字数が増えるのが嫌いで、VBAでユーザー関数を作るのが好みかな。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.1

下記のようにすれば#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))

関連するQ&A