• ベストアンサー

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

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

専門家に質問してみよう