• ベストアンサー

四捨五入するときの関数は

金額データで、74352を千円未満を四捨五入するときの、データ定義、使用関数を教え願いたい。 (結果は、74000としたい。)

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

  • ベストアンサー
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.5

No.1です。 >百未満の時は、Format(値, "0,")*100 ですか。 No.1の回答は、千円未満限定の四捨五入方法です。 桁数によらない、汎用の式は、 =Format(値/100, "0") * 100 です。 式中の「100」の部分を、四捨五入する桁によって、変更します。

その他の回答 (6)

noname#7749
noname#7749
回答No.7

簡単なベンチマークを作って性能を測定してみました。 予想通り、Int関数の方がFormat関数より約20倍速いという結果でした。 大した差ではないので、気にするほどの問題ではないと思いますが、処理速度を要求される場面では、Int関数の方が無難かもしれません。 Option Explicit Public Sub TestA() Dim sglSt As Single Dim sglEd As Single Dim i As Long Dim curTmp As Currency sglSt = Timer() For i = 1 To 10000000 curTmp = Int((123456 + 5 * 1000 / 10) / 1000) * 1000 Next i sglEd = Timer() Debug.Print sglEd - sglSt End Sub Public Sub TestB() Dim sglSt As Single Dim sglEd As Single Dim i As Long Dim curTmp As Currency sglSt = Timer() For i = 1 To 10000000 curTmp = Format(123456 / 1000, "0") * 1000 Next i sglEd = Timer() Debug.Print sglEd - sglSt End Sub

  • imogasi
  • ベストアンサー率27% (4737/17069)
回答No.6

INT関数はあらゆる言語にあるでしょう。 Sub test01() k = 3 '千の位の場合の例 c = 10 ^ k a = 74452 b = Int((a + 5 * c / 10) / c) * c '千の位の時は500や万の位の時は5000を足して割って切り捨て、掛けて位を戻す MsgBox b End Sub

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.4

#1の補足:百未満の時は、Format(値, "0,")*100 ですか。 違います。その場合は Format(値, "0.0,")*100 になります。 0の後の「,」は千単位の区切りです。 汎用性を持たせたいならユーザー関数(カスタムプロシージャ)を作ってください。

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.3

下記URL参照してください。 【丸めを行うカスタム プロシージャを実装する方法】 http://support.microsoft.com/default.aspx?scid=kb;ja;196652&Product=vbJPN

参考URL:
http://support.microsoft.com/default.aspx?scid=kb;ja;196652&Product=vbJPN
  • asuca
  • ベストアンサー率47% (11786/24626)
回答No.2

四捨五入の間酢はなかったように思いますが。 参考URLの方法ではどうでしょう。

参考URL:
http://www.studiofly.net/vb/vbtip14.html,http://www.alato.ne.jp/kazu-/vb/tip24.htm
  • maruru01
  • ベストアンサー率51% (1179/2272)
回答No.1

こんにちは。maruru01です。 Round関数を使用したいところですが、ちゃんと四捨五入してくれないので、以下のような風にします。 =Format(値, "0,")*1000

shdego
質問者

補足

百未満の時は、Format(値, "0,")*100 ですか。

関連するQ&A