• ベストアンサー

エクセル 文字列から数字だけを抽出

エクセル2016の操作について教えて下さい。 セル内の文字列から数字だけを抽出したいです。 例えばAの列にこのような文字列が入っているとします。 高度5km 高度10.1km この中の数字だけを取り出して隣のB列の同じ行に数字だけを表示させる方法がありましたら教えて下さい。 宜しくお願いします。

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

  • ベストアンサー
  • bunjii
  • ベストアンサー率43% (3589/8248)
回答No.8

>この中の数字だけを取り出して隣のB列の同じ行に数字だけを表示させる方法がありましたら教えて下さい。 A1セルに文字列の"高度5km"と入力されているとします。 A2セルに同様に"高度10.1km"と入力されているとします。 B1セルに次の数式を入力すれば数値の5が代入されます。 =MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},$A1&1234567890)),MAX(INDEX(ISNUMBER(MID($A1,{1;2;3;4;5;6;7;8;9;10},1)*1)*ROW($A$1:$A$10),0))-MIN(FIND({0;1;2;3;4;5;6;7;8;9},$A1&1234567890))+1)+0 B1セルをB2セルへコピーするとB2セルへは数値の10.1が代入されます。 但し、A1セルの文字列長が10文字までに対して有効です。 A列の文字列が11文字以上のときはROW($A$1:$A$10)を文字列の長さに合わせて修正してください。 不特定の長さに対応させる方法もありますので要望がありましたら補足してください。 考え方はA1セルの文字列中に数字の"0"~"9"までの文字が何番目に出現するかをチェックし、数値化すべき文字列の先頭位置が最小位置であり、数値化すべき文字列の長さが最大位置-最小位置+1になります。 A1セルの文字列"高度5km"の数字は3桁目に出現します。 MIN(FIND({0;1;2;3;4;5;6;7;8;9},$A1&1234567890)) → 3 MAX(INDEX(ISNUMBER(MID($A1,{1;2;3;4;5;6;7;8;9;10},1)*1)*ROW($A$1:$A$10),0)) → 3 因って、A1セルの文字列から切り出す文字列としての数字は次のようになります。 =MID(A1,MIN(FIND({0;1;2;3;4;5;6;7;8;9},$A1&1234567890)),MAX(INDEX(ISNUMBER(MID($A1,{1;2;3;4;5;6;7;8;9;10},1)*1)*ROW($A$1:$A$10),0))-MIN(FIND({0;1;2;3;4;5;6;7;8;9},$A1&1234567890))+1)+0 → MID(A1,3,3-3+1)+0 → MID(A1,3,1)+0 → 5 MID関数の戻り値は文字列の数字なので数値化するために0を加算しました。 Excelでは数値化できる文字列は加減乗除で数値化できます。 つまり、文字列に0を加減算するか1の乗除算で数値化できます。(VALUE関数の代用)

jyaramanti
質問者

お礼

とても詳しく回答を下さいましてありがとうございます。 関数を組み合わせる方法をご教示下さり、大変助かっております。 エクセルは最近始めたばかりなのですが、ご教示下さいましたように関数を組み合わせることが出来るのでありましたら、ちょっとしたプログラムのように使うことが出来そうです。 思ったよりも高機能なので機能を存分に活用するべく勉強して参る所存であります。 この度は本当にありがとうございました。 心より感謝申し上げます。 失礼致します。

その他の回答 (8)

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.9

 アドバイスですが、ここに回答されて来た各回答の関数について、A列のセルに入力されている値が 高度4.321km などの様なものである場合に正しい結果が表示されるかどうかも確認しておかれる事をお奨め致します。  またその他にも、A列のセルに何も入力されていない場合や、「高度km」などの様に数値が含まれていない場合に関しても確認しておかれた方が良いでしょう。

jyaramanti
質問者

お礼

セルに何も入力されていない場合や文字列の場合には、エクセルが固まってしまうことがあるようです。 なるべく正確を期して入力をした方が良さそうだと思いました。 気を付けようと思います。 回答を下さいましてありがとうございました。

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.7

高度5km 高度10.1km 最大高度1234.56789mile などといった文字列が例えばA1セルに入力されている場合において、 5 10.1 1234.56789 などの数値部分をB1セルに表示されセルのでしたら、B1セルに次の様な関数を入力して下さい。 =IFERROR(MID($A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},$A1&1234567890)),MAX({1,2,3,4,5,6,7,8,9,10,11,12,13,14,15}*ISNUMBER(MID($A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},$A1&1234567890)),{1,2,3,4,5,6,7,8,9,10,11,12,13,14,15})+0)))+0,"")

jyaramanti
質問者

お礼

回答をありがとうございます。 ご教示下さいました方法で小数点以下どのような桁数でも抽出することが出来ました。 このような高度な関数を使えるようになりたいてず。 時間はかかるかもしれませんが、勉強して参る所存であります。 この度は、本当にありがとうございました。

  • webuser
  • ベストアンサー率33% (372/1120)
回答No.6

>その文字を外して得られた数字を隣のセルに表示させる方法はありますでしょうか? 式を隣のセルに書けば隣に表示されるし、 20個右のセルに書けば20個右に表示されるだけでしょう。

jyaramanti
質問者

お礼

隣に限らず、式を記入した列に表示させることが出来ました。 ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.5

B1セルに以下の式を記入して下にドラッグコピーしてみて下さい。 =MAX(TEXT(MID(A1,{1,2,3,4,5},{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}),"標準;;0;!0")*1)

jyaramanti
質問者

お礼

再度の回答をありがとうございます。 ご教示下さいました方法で数値のみ抽出することが出来ました。 この度は本当に有難うございました。

  • Prome_Lin
  • ベストアンサー率42% (201/470)
回答No.4

あまり、いい回答ではありませんが、 =MID(A1,3,LEN(A1)-4) セル「A1」の3番目の文字から、セル「A1」の文字列の長さ-4(すなわち、「高度」と「km」の4文字を削除した長さ)。 邪道ですので、無視して頂いて結構です。

jyaramanti
質問者

お礼

回答ありがとうございました。

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.3

=MAX(TEXT(MID(A1,{1,2,3,4,5},{1;2;3;4;5;6;7;8;9;10;11;12;13;14;15}),"標準;;0;!0")*1)

jyaramanti
質問者

お礼

回答を下さいまして、ありがとうございます。 このようにする方法がありますこと、大変勉強になっております。 この度はご教示下さいまして本当にありがとうございました。

jyaramanti
質問者

補足

回答ありがとうございます。 この式をどこに書き込めばいいでしょうか?^^;

  • webuser
  • ベストアンサー率33% (372/1120)
回答No.2

抽出に拘るなら↓こんなの http://qiita.com/mhara/items/82421d1b34e88a3efba1

jyaramanti
質問者

お礼

教えて頂いた先、読みます。 回答をありがとうございました。

  • webuser
  • ベストアンサー率33% (372/1120)
回答No.1

単位のように、まとわりつく文字が決まっているなら、それを外した方が簡単ですけどね。 =SUBSTITUTE(SUBSTITUTE(A2,"高度",""),"km","")

jyaramanti
質問者

お礼

そのような方法もあるのですね。 これはA列の文字を外す方法なのですね。 その文字を外して得られた数字を隣のセルに表示させる方法はありますでしょうか? 回答ありがとうございました。

関連するQ&A

  • EXCELで、文字列の中から数字を抽出したいのですが。

    お世話になります。 EXCELにおいて、A1のセルに文字と数字が入力されています。この中から、最初の数字のみを、B1に抽出したのですが、ご教示お願いします。 文字の長さと数字の位置は、様々な文字列です。 宜しくお願い致します。

  • エクセルで文字列の抽出方法についてお尋ねします。

    宜しくお願いします。 エクセルを使用して条件付の文字列の抽出をしたいと思っています。 A列のセルに2つの文字列がスペースを挟んで50行ほど入っています。 また、その中にはひとつの文字列しか入っていないものもあります。 イメージ的には以下のようなものです。 | A | B ------------------------------------- 1|エクセル マウス| -------------------------------------- 2|エクセル ペン | -------------------------------------- 3|エクセル ノート | ------------------------------------- 4|エクセル    | ------------------------------------- 上記の例では「エクセル」という文字はひとつのセルですが コレが多くあります。 ここで、2つの文字列の組み合わせだけをB列に表示させることは 出来ますか? また、このパターンが終わった後に、「エクセル」という文字列の代わりに 「ワード」という文字列のものが51行目から続きます。 ここでも2つの文字列の組み合わせと「ワード」単体のものとが あるので、出来れば2つの文字列の組み合わせだけをB列に表示し なおかつ上の方へ詰めて表示したいのです。 分かりづらい質問で申し訳ありません。 宜しくお願いします。

  • エクセルの文字列の抽出方法について

    ★★エクセルの文字列の抽出方法について★★ 下記の「対象セルの内容」のような感じで1つのセルの中に複数行の文字列が入っているのですが、 下から3行とか4行とかを指定して文字列を抽出したいと考えています。 ■対象セルの内容 [改行] [改行] [改行] a/b/r1.php[改行] a/b/r2.php[改行] a/b/r3.php[改行] a/b/r4.php ■抽出したい値 a/b/r2.php[改行] a/b/r3.php[改行] a/b/r4.php 何かしらうまい方法はないでしょうか。 ご教授なにとぞよろしくお願いいたします。

  • Excelの文字数が決まっていない文字列の抽出

    教えてください。Excelで、文字数の決まっていない文字列を抽出したいのですが、例えば、 セルA1 : プロジェクト1 簡単な文章 2352 PD_JOK セルA2 : プロジェクト13 複雑な文章列とは決まっていない 2453 AO_JKI ・・・・・・ というセルから、 プロジェクト名から、半角数字前までの文字数が決まっていない文字列「簡単な文章」や「複雑な文章~」をセルB列に抽出する方法を教えていただきたいのですが、 そして、半角数字後の半角英字「PD_JOK」をセルC列に抽出する方法も同時に教えてください。 万単位でデータがあるので、関数を使わないと難しいです。 よろしくお願い致します。

  • エクセル セルの表示形式「文字列」だけを抽出したい

    エクセル2007を使用しています。 A列に数字が入力されていますが、そのセルの表示形式は、「標準」「数値」「文字列」とバラバラです。 この「文字列」のセルだけを抽出したいのです。 例えば、関数などを利用して、B列に表示するなど。 よろしくお願いします。

  • セル内からの数字の抽出

    複数のセルがあり、そのセルそれぞれに、 「(文字列A)(数字1) (文字列B)(数字2)」 と入力してあります。(文字列A)と(文字列B)は、定型文字列なので、複数のセルがありますが、同じ文字列が入っています。 一方で、(数字1)(数字2)は、それぞれのセルによって、異なった数字が入っています。 ただし、セルによっては、(文字列A)(数字1)は、入力していないものもあります。 このようなセルが複数ある中から、(数字1)だけを抽出して、セル内に「(数字1)」だけの列を作りたいのですが、何かよい方法はないでしょうか?よろしくお願いします。

  • エクセルで、異なる文字列を抽出するには。

    エクセルで、A1からA10に文字列のデータがあるとします。 10個のセルのデータは「あああ」が4こ「いいい」が3こ「ううう」が2こ「えええ」が1こ順不同であった場合、B1に「あああ」B2に「いいい」B3に「ううう」B4に「えええ」と異なる文字列のみ1個ずつ抽出するにはどうすればいいでしょうか。

  • Excel(エクセル)での特定文字以降の文字列抽出

    Excelでの 特定文字以降の文字列抽出&条件による振り分け を自動的にする事は可能でしょうか? 例えば図のように セルA2に1200×15 セルA3に2300×3 と入力されている時 C2に15 B3に3 と表示したいです。 できれば、 後で合計を出したいので数字として扱いたいです。 よろしくお願いいたします。

  • エクセル2000で文字列から数値を抽出したい。

    エクセル2000で文字列から数値を抽出したい。 ワークシートのA列に下記の文字列が入力されています。 A1セル="123456 日本男子 54,321 7,654,321 12,345" A2セル="234567 東京都子 1,234 2,345 5,321" A3セル="345678 大阪太郎 99 689 9,876" データ間はスペースで区切られています。 後方2番目の数値をB列に取出す方法を教えて下さい。 B1セル=7,654,321 B2セル=2,345 B3セル=689 よろしくお願い致します。

  • 表の中でもっとも多く使用されている文字(数字)を抽出するには

     |A|B|C|D| -------------- 1|あ|い|う|え| -------------- 2|お|あ|あ|か| -------------- 上記は1行目に左から「あ」「い」「う」「え」が入力されていることを表しています。 この表の中から、一番多く入力されている文字だけを別のセルに抽出させるにはどのようにしたら良いでしょうか。 上記の例を使用すると、A列の5行目(任意のセル)に「あ」と抽出するようにしたいです。 いろいろと調べてみましたが、このように表の中で最も多く入力されている、「文字」または「数字」だけを抽出するという処理方法がみつかりませんでした。 マクロなら可能でしょうか? このような処理ができる関数もなさそうなので、無理なのかな。 アドバイスを御願い致します。

専門家に質問してみよう