- ベストアンサー
Excelで数字だけ抽出
Excelを最近になって職場で使い始めました。 初心者ですのでよろしくお願いします。 「パソコン(25%)」,「プリンタ(55%)」のような列の中から %の前の数字の部分だけを抽出したいのですがうまくできません。 MIDやLEFTだと、%の前の部分の文字数が同じでないといけないし、、。 今は隣の列に数字だけを手入力して、その数値を使って 計算しているのですが面倒なので、なにかいい手段があれば 教えてください。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
以下の条件を仮定して作ってみました。 ご参考になれば^^; 条件 文字列がA列に入力されている。 数字は1箇所だけで、連続して入力されている。 数字の左側は半角の(、右側は半角%が入力されている B列に、=FIND("(",A1,1) C列に、=FIND("%",A1,1) D列に、=MID(A1,B1+1,C1-D1-1) と入力するとD列に数値が表示されるはずですが^^; はずしてたらごめんなさい
その他の回答 (5)
- Nouble
- ベストアンサー率18% (330/1783)
残念 ネスト数の壁に阻まれてしまいました =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)
◆%の前に限らず、文字と文字の間の数字を抽出します 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},)))) ★下にコピー
- zap35
- ベストアンサー率44% (1383/3079)
文字列に必ず数字と、その後ろの"%"が存在するなら =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)
A1に文字列が入ってるとして、 =MID(A1,FIND("(",A1,1)+1,FIND("%",A1,1)-FIND("(",A1,1)-1) などで出来ます。合わない部分は修正して使用してください。
- KenKen_SP
- ベストアンサー率62% (785/1258)
こんにちは。 文字列として取り出す =SUBSTITUTE(RIGHT(A1,FIND("(",A1)-1),")","") さらに数値化したいなら =VALUE(SUBSTITUTE(RIGHT(A1,FIND("(",A1)-1),")","")) とか。
お礼
返信が遅くなりました。 ありがとうございました。 まさしくこれです。