• ベストアンサー

Excelで数字だけ抽出

 Excelを最近になって職場で使い始めました。 初心者ですのでよろしくお願いします。  「パソコン(25%)」,「プリンタ(55%)」のような列の中から %の前の数字の部分だけを抽出したいのですがうまくできません。 MIDやLEFTだと、%の前の部分の文字数が同じでないといけないし、、。  今は隣の列に数字だけを手入力して、その数値を使って 計算しているのですが面倒なので、なにかいい手段があれば 教えてください。    

質問者が選んだベストアンサー

  • ベストアンサー
  • surounin
  • ベストアンサー率28% (30/106)
回答No.3

以下の条件を仮定して作ってみました。 ご参考になれば^^; 条件 文字列がA列に入力されている。 数字は1箇所だけで、連続して入力されている。 数字の左側は半角の(、右側は半角%が入力されている B列に、=FIND("(",A1,1) C列に、=FIND("%",A1,1) D列に、=MID(A1,B1+1,C1-D1-1) と入力するとD列に数値が表示されるはずですが^^; はずしてたらごめんなさい

その他の回答 (5)

  • Nouble
  • ベストアンサー率18% (330/1783)
回答No.6

残念 ネスト数の壁に阻まれてしまいました =sumproduct(VALUE(CHAR((1-ISERROR(VALUE(MID($B$4,COLUMN(OFFSET($A$1,0,COLUMN(A1)-1,1,LEN($B$4))),1))))*CODE(MID($B$4,COLUMN(OFFSET($A$1,0,COLUMN(A1)-1,1,LEN($B$4))),1))+ISERROR(VALUE(MID($B$4,COLUMN(OFFSET($A$1,0,COLUMN(A1)-1,1,LEN($B$4))),1)))*48))*10^(LEN($B$4)-COLUMN(OFFSET($A$1,0,0,1,LEN($B$4)))))/100 最後の「/100」が情けないですが参考にどうぞ 基本的な考え方は 「プリンタ(55%)」を「{"プ","リ","ン","タ","(","5","5","%",")"}」に分解し それぞれの要素に対し数値かの判定をして 数値でないものに「0」を割り振って 「{"0","0","0","0","0","5","5","0","0"}」として これを再数値化 「{0,0,0,0,0,5,5,0,0}」として その上で各要素に 「{10^8,10^7,10^6,10^5,10^4,10^3,10^2,10^1,10^0}」を掛けて 「{0,0,0,0,0,5000,500,0,0}」としておいて これの総和を求めて0を2つ切り捨ててます 0を2つ切り捨てる部分も関数でフレキシブルに表現できるのですが 既にこの時点でネストの壁に引っかかったので 思考が止まりました (ーー;)

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

◆%の前に限らず、文字と文字の間の数字を抽出します   A          B 1 パソコン(25%)  25 2 プリンタ(55%)   55 B1=--MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&1234567890)),LEN(A1)*10-SUM(LEN(SUBSTITUTE(A1,{0,1,2,3,4,5,6,7,8,9},)))) ★下にコピー

aisim
質問者

お礼

返信が遅くなりました。 ありがとうございました。 まさしくこれです。

  • zap35
  • ベストアンサー率44% (1383/3079)
回答No.4

文字列に必ず数字と、その後ろの"%"が存在するなら =MID(ASC(A1),MIN(FIND({1,2,3,4,5,6,7,8,9,0},ASC(A1)&1234567890)),FIND("%",ASC(A1)&"%")-MIN(FIND({1,2,3,4,5,6,7,8,9,0},ASC(A1)&1234567890))) で数字部分のみを取り出せます。数値と"%"がない場合は#VALUE!エラーとなります

  • driverII
  • ベストアンサー率27% (248/913)
回答No.2

A1に文字列が入ってるとして、 =MID(A1,FIND("(",A1,1)+1,FIND("%",A1,1)-FIND("(",A1,1)-1) などで出来ます。合わない部分は修正して使用してください。

  • KenKen_SP
  • ベストアンサー率62% (785/1258)
回答No.1

こんにちは。 文字列として取り出す =SUBSTITUTE(RIGHT(A1,FIND("(",A1)-1),")","") さらに数値化したいなら =VALUE(SUBSTITUTE(RIGHT(A1,FIND("(",A1)-1),")","")) とか。

関連するQ&A