- 締切済み
EXCEL セル内の特定の数値のみを抽出したい (関数だけで)
セル内に数値・文字列を両方含む列があります。 数値(1) 文字列(1) 数値(2) 文字列(2) 【例】 11213234 AIUEO 21213 ABC 42321243 KAKIKUKEKO 32480 CBAAA 59343124 SA 85727 BBAC 数値(1)の桁数は同一 文字列(1)の文字数は変動 数値(2)の桁数は同一(だが、文字列(1)が変動のため、スタート位置はことなってくる) 文字列(2)の文字数も変動 ここから「数値(2)のみ」を関数で抽出したいのですが、どのようにすればよいのでしょうか? ご教授よろしくお願いいたします!!
- みんなの回答 (4)
- 専門家の回答
みんなの回答
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
文字列(1)の始まりは10文字目固定。それより後ろのスペースの位置 は、=find(" ",A1,10)で発見できるので、数値(2)の開始位置はその1 文字後ろ。 =MID(A1,FIND(" ",A1,10)+1,5) ちゃんと数値として扱うなら1でもかけてね。
- imogasi
- ベストアンサー率27% (4737/17069)
>特定の数値のみを抽出したい 内容からするとこの表現はおかしいのでは。「数値部分をとり出したい」ではないか。「特定」では無いのでは。 ーーー (1)は先頭から定桁分を取り出すので =MID(A1,1,8)か=LEFT(A1,8) (2)が出現位置が変動するので=RIGHT(A1,LEN(A1)-9)について 数字先頭を求める。 これが結構難しくて、定石として、学習するほか無いと思うが、 A12に 11213234 AIUEO 21213 ABC B12に =RIGHT(A12,LEN(A12)-9) で AIUEO 21213 ABC C12に =MID(B12,MIN(FIND({"0","1","2","3","4","5","6","7","8","9"},B12&"0123456789")),5) で 21213 上記のC12へ,B12をネスト(含める、合体)して1つの式にしてください。 本件は間のスペースに頼らない式です。 ーーー >関数だけで VBAで、ユーザー関数で、数値桁の先頭位置を割り出すプログラムを組むと、上記のような技巧的な関数を使わなくて済むのだが(記述略) 上記のほうはん後半のの式(MIN(FIND・・)など、何年考えても相当関数を勉強しないと思いつかない。私も学んだもの。 VBAだと各桁が数字かどうかIsNumeric関数で判別できる。すぐ思いつく。
=MID(SUBSTITUTE(TRIM(A1)," ","_",2),FIND("_",SUBSTITUTE(TRIM(A1)," ","_",2))+1,5)+0
- maron--5
- ベストアンサー率36% (321/877)
◆「数値(1) 文字列(1) 数値(2) 文字列(2)」の順番で、その間に必ず、スペースがあるのであれば =TRIM(MID(SUBSTITUTE($A1," ",REPT(" ",99)),99*3-99,99))*1 ★下にコピー
補足
前回に続きご回答ありがとうございます! 早速試してみたのですが#VALUE!とエラーになってしまいました。 もしお願いできるのであれば、上記数式の簡単なご説明をいただくことはできないでしょうか? (勉強のため理解してから使いたいと思っています!)