• ベストアンサー

VBで小数点以下を切り捨てる方法

小数点以下の切捨てをしたくて確かFix関数で切り捨てられると聞いたのですが、 Fix(1.8) のような場合、2が返ってきます。 Int関数やRound関数でも同じ事なのですが、 ここで1を戻したい場合どうすればいいのでしょうか? どなたかご回答よろしくお願い致します。 (ちなみにカテゴリーはVBを選択していますが、実際はVBAで開発しています)

noname#169207
noname#169207

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

  • ベストアンサー
noname#140971
noname#140971
回答No.1

[イミディエイト] ? Rounds(1.8, 切り捨て) 1 ? Rounds(-1.8, 切り捨て) -1 ? Rounds(-1.811, 切り捨て, 2) -1.81 Public Const 四捨五入 = 0 Public Const 切り捨て = 1 Public Const 切り上げ = 2 Public Function Rounds(ByVal M As Currency, _             ByVal A As Integer, _             Optional D As Integer = 0) As Variant     Rounds = Sgn(M) * Fix(Abs(M) * 10 ^ D + Abs((A = 0) * 0.5@ + (A = 2) * (Int(M * 10 ^ D) <> (M * 10 ^ D)))) / 10 ^ D End Function つまり、Sgn関数とFix関数とAbs関数とを組み合わせれば良いと思います。 [イミディエイト] ? Sgn(1.8)*Fix(Abs(1.8)) 1 ? Sgn(-1.8)*Fix(ABS(-1.8)) -1

noname#169207
質問者

お礼

早速のご回答ありがとうございました! とても的確なお答えで助かりました。 またの機会がありましたらぜひよろしくお願いします。

その他の回答 (2)

  • kiskfry
  • ベストアンサー率34% (32/93)
回答No.3

こんにちは。 聞く限りはINTかFIX共に可能のはずです。 いま、EXCEL2000環境のVBAで確認しましたが 例えば X=1.8 Y=-1.8 A=INT(X) B=INT(Y) C=FIX(X) D=FIX(Y) とすれば A=1 B=-2 C=1 D=-1 が各値となっています。 再度試して見てください^^

noname#169207
質問者

お礼

ご回答ありがとうございました! 分かりやすいたとえで助かります。 まだまだ初心者の為、手違いで関数の使い方を間違っていました(汗) ありがとうございました!

回答No.2

??? Excel2000のVBAで、以下のマクロ実行すると1が表示されますよ? Sub Macro1() MsgBox CStr(Fix(1.8)) End Sub Currency型とかDouble型とかの変数を宣言して、それにFix関数を適用しても 同じでしたが… ちなみにIntとFixでは負の数の処理が違います。 また、「VBAの」Round関数は、切捨てでも四捨五入でもなく、銀行式まるめです。 (ワークシート関数のRoundは四捨五入) もしかしてバージョンによって違ったりするんでしょうか? こんなのがバージョンによって違ったら酷い事になりそうですが…

参考URL:
http://support.microsoft.com/kb/225330/ja
noname#169207
質問者

お礼

ご回答ありがとうございました! 実は関数以前に間違っていた部分がありまして、 (Integerで宣言した変数に代入してからFix関数を使おうとしてました。) マイナス値以前の問題だったみたいです(汗) Integer型に代入すると勝手に四捨五入されてしまうんですね(汗) 初心者丸出しで大変お恥ずかしい限りです…

関連するQ&A

  • Excelの小数点以下

    詳しい方お願い致します。 Excelの小数点以下の計算結果を、全て切捨てにする方法ありますでしょうか? セルの計算式はその都度変るのですが、その結果の小数点以下は、ずべてきり捨てたいのです。 関数、ROUNDDOWNを使うと小数点以下切捨てになるのは分るんですが、 毎回関数使うのは面倒ですし、時々忘れて、1円多くなってしまいます。 開いたファイル全てで、切捨てで計算してほしいのです。 こんな方法ありますでしょうか?

  • エクセルでSUM関数の小数点以下を切り捨てる方法

    エクセル初心者です。 SUM関数で計を求めた数値に小数点があった場合、 小数点以下を切捨てする関数、計算式、を教えてください。

  • 【PHP】printf()関数の小数点以下の扱い方

    printf()関数で以下のような記述をしました。 関数の引数を計算すると単純で 5 × (1 - 0.35) で結果は 3.25 となります。 これを$%.1f によって出力するため小数点以下は1桁です。 桁数を指定した場合、指定し桁数以下は「四捨五入」されると思っていました。 よって、自分では Price: 3.3 と出力されると考えていましたが 実際には Price: 3.2 と表示されます。 ちなみに 3.25 を round() 関数で使うと 3.3 と返ってきます。 printf()関数で小数点以下の桁数をしてした場合、四捨五入、切り上げ、切り捨て いずれでもない値が返ってくるのでしょうか? このような小数点以下の桁数を扱う方法はPHPの他の関数でも使われるのでしょうか? この方法の呼称というか名称というのはあるのでしょうか? 初学者です。分かりやすく教えていただければ幸いです。 よろしくお願いいたします。! <表示結果> Price: $3.2 3.3 <?php $price = 5; $off = 0.35; printf("Price: $%.1f", $price * (1 - $off)); echo "<br>\n"; echo "<br>\n"; echo round(3.25, 1); ?>

    • ベストアンサー
    • PHP
  • 小数点以下の数字の桁数表示について

    VB6.0で小数点以下の数値が0の場合でも指定した桁数で0も表示するにはどのようにしたらよいですか? 例えば、四捨五入のROUND(0.195000,4)のとき返ってくる数値が「0.195」となり最後の0が表示されません。(以下は4桁表示したいのに) (小数点以下第5位が5なら切り上げで最後に1が表示されますが) エクセルだとセルの書式設定で表示桁数を設定するだけだったのですが。 FIXED関数、TEXT関数はVB6.0では使えないのですよね? VB6.0に詳しい方よろしくお願いします。お手数です。

  • VBの小数点周り

    以前から思っていたのですが、VBの小数点ってあやしくないですか? 変な現象を見つけたので、知っている方がいたら教えていただきたいのです。 小数点以下、四捨五入をしようと思い、 c = fix(val(a)+val(b)) という、式に対して、a = 20,b = 76.80 と、入れたところ、c = 1536 となるはずなのですが、返ってきた値は c = 1535 でした。 fixかけてるのに、値が減ってしまうなんてことがあるのでしょうか?? 意味不明な現象に戸惑っております。

  • 小数点以下を5より大きいと切り上げる

    こんにちは エクセルで計算式を作っています。 計算結果の小数点以下を四捨五入して、整数にする場合は ROUND(計算式,0) となると思うのですが、 小数点以下が5より大きい場合に切り上げて、5ちょうどだった場合に切り捨てるには、どのようにすればよいでしょうか。 恐れ入りますが、よろしくお願いいたします。

  • 小数点の切捨て

    ご教授お願いいたします。 小数点の切捨てで、下記のように書いたのですが、あっていますでしょうか? double a=32.1111; long int l; double res; l = (int)(a * 10); res = l / 10; Cは、久しぶりなので忘れてしまいました。 小数点の切捨て・切り上げは、自力でやるんでしたよね? それとも、標準関数でもありましたでしょうか?

  • 小数点以下を強引に表示させたい

    小数点以下を強引に表示させたいと考えています。 具体的には、「130」という値を「130.00」というように、小数点以下2桁まで表示させたいのです。3桁以下は切り捨てます。 これまでは、 $c = $a / $b; round($c, 2); という方法でやっていたのですが、$cがきっちり割り切れる値だと、どうも普通に小数点以下を表示させないようなのです。 例え「00」でも表示させたいのですが、そのような関数はありますでしょうか? よろしくお願いいたします。

    • ベストアンサー
    • PHP
  • エクセルで小数点以下を切り捨てた答えを表示したい!

    こんにちは。宜しくお願いします。 OSは、WindowsNT、Excel97を使用しています。 エクセルで計算式を作った時、答えが小数点以下2ケタまで表示されたとします。それを小数点以下を切り捨てた数字で表示したい時、どうすればいいのか分かりません。 関数「ROUND DOWN」を使えば切り捨てが出来るという事は分かるのですが、出来れば、計算して答えが出るセルに直に切り捨てた答えが出るようにしたいのです。(つまり、小数点以下の答えが表示されるセルと、切り捨てた答えが表示されるセルを分けたくないのです) 拙い説明で申し訳有りませんが、不明な点などあれば補足致しますので、宜しくお願いします。

  • EXCELで小数点以下を切り捨てるには どうするのか 教えてください

    EXCELで小数点以下を切り捨てるには どうするのか 教えてください EXCELの初心者です。 税金計算のとき 小数点以下は切捨てなのですが、普通に掛け算をすると 最後の桁が自動的に四捨五入されます。切捨てにするにはどうするのか教えて下さい。