• ベストアンサー

エクセルの関数で、数値に直したい

120 Km のように単位とスペースが後ろに付いた数字を、数値の値を求める関数は無かったでしょうか?この場合は、120という値が求まればいいのですが。valueではだめなようですが、文字列の切り出しをしなくでも、一度で数値を取り出せるものはありませんでしょうか?

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

  • ベストアンサー
  • Wendy02
  • ベストアンサー率57% (3570/6232)
回答No.5

こんにちは VBAだったら、ただ、Val 関数だけでよいと思います。 '標準モジュール Function mVal(rng As Range)  mVal = Val(rng.Value) End Function ※一応、出力は、Variant 型にします。数値型やテキスト型ですと、使い勝手が悪いです。 #4 さんへ >120 という数値は出るものの、その後その数値を計算するとなると他のセルへ値をコピーしなければなりませんでした。 その必要はないと思います。もともと、Excelのセル上では、数値とか文字列とかは厳密に違いはありません。コピーしなくても、演算すれば、数値に変わります。 試してみてください。 例: =MID(A1,1,3)+10        ↑       演算 まあ、汎用性を考えれば、こうなるでしょうけれどね。 =MID(A1,1,FIND(" ",A1)) スペースのない場合は、こんなものもあるかもしれません。 =--LEFT(A1,MATCH(TRUE,INDEX(ISERROR(MID(A1,ROW(A1:A16),1)*1),,),0)-1) よけいなおせっかいかもしれませんが^^;

cmc32000
質問者

お礼

ありがとうございます。この関数を探していましたが、これはワークシート関数には無いのですね。でも、VBAで関数を作ってしまえば良いですね。 確か、昔のBasicにはこういう関数があったように記憶していました。

その他の回答 (5)

  • Cupper
  • ベストアンサー率32% (2123/6444)
回答No.6

A1に"120 km"と文字列があるとします。  =VALUE(SUBSTITUTE(A1," km","")) SUBSTITUTE関数で" km"を""(空白)に置き換えてからVALUE関数で数値化してはどうですか?

  • sas-love
  • ベストアンサー率17% (27/155)
回答No.4

No2の者です。 私の方法ですと、120 という数値は出るものの、その後その数値を計算するとなると他のセルへ値をコピーしなければなりませんでした。 すみません。。。

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

セルに「120Km」とそのまま入力した場合は文字列となってしまいますので、このままでは数値としての計算はできません。単位が「Km」固定なら =LEFT(A1,LEN(A1)-2)*1 のような関数式で数値を取り出せます。 数値の後ろにつく単位が色々とあって、全角、半角文字が混在するような場合は、マクロでないと対応が難しいかもしれません。 先日回答した下記質問の#01のマクロの1行を直せば、先頭の連続する半角数字のみを取り出すことは可能です http://oshiete1.goo.ne.jp/kotaeru.php3?q=2425911 strPattern = "^[A-Z,A-Z]+" の行を以下に変更 strPattern = "^[0-9]+"

  • sas-love
  • ベストアンサー率17% (27/155)
回答No.2

他の方法があるのかもしれませんが、私は下記の方法でやっています。 例として、F10に 120 km が入力されているとします。 数値を出したいセルに、 =MID(F10,1,3) という関数で解決する事と思います。 これは、F10の文字列の1番目から3番目を抜き出すという式です。 もし、1200 km 等の3桁ではない数値の場合は、式の3の箇所を4に変更すると 1200 という数値が返されます。 いかがでしょうか?

  • ASIMOV
  • ベストアンサー率41% (982/2351)
回答No.1

数字の後ろに必ずスペースが有るとして A1="120 Km" の場合 B1=VALUE(LEFT(A1,FIND(" ",A1)))

関連するQ&A

  • Excel関数で数値のみ取り出したい

    Excelの関数について教えてください。 A列には単位付の数値が入っています。数値の桁数は決まっていませんが、3桁区切り、小数も含まれて居ます。単位はkm2とか、m3、L、Kw、gとかの3文字以内です。 この列から、B列に「数値のみ取り出したい」場合の関数式を教えてください。

  • 文字列が数値に変換されない

    文字列の数字をVALUE関数で数値に変換したくても数値になりません。 ♯N/Aと表示されるだけです。 関数を入れたあとに表示形式を数値にしても変わりません。 元の文字列はVLOOKUP関数で検索した数字です。 これができないと仕事が進みません。急いでます。お願いします。

  • excel 関数にて文字を0として認識させる方法

    数式の中に数字以外の文字が入ると#VALUE!が出ます。 ヘルプを参照すると、 「文字列が正しいデータ型に変換されません。必要な演算数や引数について、数式または関数が正しいかどうか、また、数式で参照するセルの値が有効かどうかを確認します。たとえば、セル A5 に数値が入力され、セル A6 に "なし" という文字列が入力されている場合、数式 =A5+A6 は、エラー値 #VALUE! を返します。」 これを解決させるにはどうしたらいいでしょうか? 上の例ですと、"なし"と打ち込んだ場合0として認識させるようにしたいです。

  • エクセル 数値だけ抽出するには?

    エクセルで、文字列+スペース+数字と入力されているセルから数値だけ取り出す方法を教えていただけますか? 文字列とスペースの字数は一定で、数値の桁数は6-8桁と変動します。 A列からb列のように変換したいのです。 A列          B列 PMID:_12345678    12345678 PMID:_123456     123456 宜しくお願いいたします。

  • ある数値が何個目にあるか調べる関数ありますでしょうか?

    タイトルにありますとおり ある数値が何個目にあるか調べる方法 または関数がないか悩んでおります^^; 文章だけではわかりにくいので以下に例を示します。   A B C D  1 2 2 0 3 1 4 8 5 2 6 9 7 5 8 3   このような表があったとします。 A列に適当な数字が並んでいます。 A列で3が何個目にあるか?という場合は MATCH関数でMATCH(3,A1:A8)で8と表示されると思います。 調べたい数値が1個だけしか存在しない場合はいいのですが 複数ある場合、MATCH関数だとうまくいきません。 例えば、A列の2を調べる場合は1行目と5行目にあるため使えません。 このような場合、使えそうな関数、またはMATCH関数でも便利な活用方法など ご存知の方いらっしゃいましたら、ご教示いただけませんでしょうか^^;

  • Excelで数値が文字列になっています

    Excel2010で「このセルにある数値がテキスト形式か、またはアポストロフィで始まっています」という警告が表示されたりして、計算が出来ません。 打ち直ししたり、「エラーチェックルール」で「文字列形式の数値、、またはアポストロフィで 始まる数値」のチェックを外したりして計算は出来るようになります。 「表示形式を変えてもセルの中の値は変化しません。数値データは数値のまま、文字列データは文字列のままです。」とは本当ですか? 本当ならば、数字の保存形式が文字列データかどうかを確かめる方法はありますか? なお、ISNUMBERという関数ではTRUEと出ます。

  • EXCEL関数 文字列の一部の数字文字を数値化して計算につかいたい

    EXCEL関数について質問です。 あるセルの文字列に記載されている一部の数字文字を 数値化して計算につかいたいと思っています。 <例>  あるセルの文字列(A1)⇒あいうえお12345番目の方  出力したい数字文字⇒12345 知る限りの関数を使って以下の関数式を作ってみました。 (1) MID関数を使う  最初の文字「あいうえお」は10バイトなので開始は「11」としました。 (2)後に登録されている「番目の方」を除きたいので  SEARCHB関数を使って、「番目」の開始バイトを見つけ  そこから最初の文字バイト「11」を引き、抽出するバイトを求める。 (3)抽出した文字列を数値に変換するVALUE関数を使う。 次の関数式を作ってみました。   =VALUE(MIDB(A1,11,SEARCHB("番目",A1,1)-11)) でも結果は「」となります。 何がいけないのかわかりません。エラーの原因がわかれば教えて下さい。 ほかによい方法があれば教えてください。 よろしくお願いします。  

  • 関数によって空白したのを数値「0」に置き換える

    A.............B...............C 1 ZZ............6..............× 2 AA........... 1 3 BB 4 CC............3 B列にはそれぞれ関数が入っています。 セルB1には、B2、B3、B4の数値の合計です。 C1のセルには、C1数値とB2、B3、B4の数値の合計が一致しているか否かの判定する関数が 入っており、一致していなければ、"×"が表示させるようにしています。 しかし、ここで問題が起きました。 「VALUE」というエラーが表示されました。 上記の表では、セルB3は、空白になっております。 本来は、セルが空白になっている場合は、「0」が格納されていると思うのですが、 ここには、関数によって、文字列?の「空白」に置き換えられています。 例えば = IF((Z5) ,5, "") ようにです。 多分、関数によって文字列として認識される空白("")を置いたためと思います。 関数によって置き換えた空白("")を数値「0」として認識できる関数を教えてください。 いろいろな方法があると思いますが、「関数」のみで教えてください。 C1には、以下の関数が入っています。 =IF((B1) = (B2+B3+B4) ,"○","×")

  • 文字列と数字を含むセルから数値のみをとりだす関数と、文字列のみを取り出す関数があれば両方教えてください!

    (Excel 2003 ) 文字列と数字を含むセルから数値のみをとりだす関数と、文字列のみを取り出す関数があれば両方教えてください!

  • エクセル MID関数

    MID関数で表示した文字列が、数字として認識されません。 MID関数で表示された数字が10とします。セルはA1とします。 その後、IF式で =if(A1<5,10,0) とすると、結果は0になるはずなのに、常に真の値、10になってしまいます。 原因は、MID関数で表示された数字が文字列として認識しているからと考えられますが、対象方法をご存知の方がおりましたら教えてください。 よろしくお願いします。

専門家に質問してみよう