- ベストアンサー
エクセルの関数で、数値に直したい
120 Km のように単位とスペースが後ろに付いた数字を、数値の値を求める関数は無かったでしょうか?この場合は、120という値が求まればいいのですが。valueではだめなようですが、文字列の切り出しをしなくでも、一度で数値を取り出せるものはありませんでしょうか?
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
こんにちは 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) よけいなおせっかいかもしれませんが^^;
その他の回答 (5)
- Cupper
- ベストアンサー率32% (2123/6444)
A1に"120 km"と文字列があるとします。 =VALUE(SUBSTITUTE(A1," km","")) SUBSTITUTE関数で" km"を""(空白)に置き換えてからVALUE関数で数値化してはどうですか?
- sas-love
- ベストアンサー率17% (27/155)
No2の者です。 私の方法ですと、120 という数値は出るものの、その後その数値を計算するとなると他のセルへ値をコピーしなければなりませんでした。 すみません。。。
- zap35
- ベストアンサー率44% (1383/3079)
セルに「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)
他の方法があるのかもしれませんが、私は下記の方法でやっています。 例として、F10に 120 km が入力されているとします。 数値を出したいセルに、 =MID(F10,1,3) という関数で解決する事と思います。 これは、F10の文字列の1番目から3番目を抜き出すという式です。 もし、1200 km 等の3桁ではない数値の場合は、式の3の箇所を4に変更すると 1200 という数値が返されます。 いかがでしょうか?
- ASIMOV
- ベストアンサー率41% (982/2351)
数字の後ろに必ずスペースが有るとして A1="120 Km" の場合 B1=VALUE(LEFT(A1,FIND(" ",A1)))
お礼
ありがとうございます。この関数を探していましたが、これはワークシート関数には無いのですね。でも、VBAで関数を作ってしまえば良いですね。 確か、昔のBasicにはこういう関数があったように記憶していました。