• ベストアンサー

#Func! 四捨五入

T_一覧の件数フィールドには、1234などの数字が入っているのですが、10の位を四捨五入したいのですが、 クエリでどうやって作ればいいのでしょうか? SELECT T_一覧.件数, Round([T_一覧]![件数],-2) AS 四捨五入 FROM T_一覧; にすると、#Func!になってしまいます。

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

  • ベストアンサー
回答No.4

【補足】Rounds()正規版 Public Function Rounds(ByVal M As Currency, _             ByVal A As Integer, _             Optional D As Integer = 0) As Variant   Dim R As Currency      Select Case A     Case 0 ' 四捨五入       R = Fix(M * 10 ^ D + 0.5@)     Case 1 '切り捨て       R = Fix(M * 10 ^ D)     Case 2 ' 切り上げ       If Int(M) <> M Then         R = Fix(M * 10 ^ D) + 1 * 10 ^ D       Else         R = Fix(M * 10 ^ D)       End If   End Select   Rounds = Sgn(M) * (R / 10 ^ D) End Function ちょっと非正規版を紹介する誤りを冒してしまいました。その違いは。切り上げ処理にあります。通常は、正規版の考え方かと思います。

nebjldkzxzey
質問者

お礼

ありがとうございました。

その他の回答 (3)

回答No.3

>#Func!になってしまいます。 なら、Rounds()を用意するのみ! Public Function Rounds(ByVal M As Currency, _             ByVal A As Integer, _             Optional D As Integer = 0) As Variant   Dim R As Currency      Select Case A     Case 0 ' 四捨五入       R = Fix(M * 10 ^ D + 0.5@)     Case 1 '切り捨て       R = Fix(M * 10 ^ D)     Case 2 ' 切り上げ       R = Rounds(M * 10 ^ D + 0.4@, 0)   End Select   Rounds = Sgn(M) * (R / 10 ^ D) End Function

nebjldkzxzey
質問者

お礼

ありがとうございました。

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

SQLでは MOD(FLOOR(件数/1000),10) 件数は正の整数だと思うので、SQL巻数にINTが無いらしいのでFLOORを使う。 間違っていたらすみません。 -- 蛇足 エクセルでやると A  B  C  D 3456 23 3 3 2345678 2345 5 5 234 0 0 0 12123567 12123 3 3 ーー A列  原データ B列は=INT(A1/1000) C列は=MOD(B1,10) D列は=MOD(INT(A1/1000),10)

nebjldkzxzey
質問者

お礼

ありがとうございました。

  • kkkkkm
  • ベストアンサー率66% (1719/2589)
回答No.1

http://homepage2.nifty.com/sak/w_sak3/doc/sysbrd/sq_kj07_1.htm こたらが参考になりませんでしょうか。

nebjldkzxzey
質問者

お礼

ありがとうございました。

関連するQ&A