• ベストアンサー

ACCESSの関数

知人に頼んで作ってもらった、請求管理のデータベースがあります。 請求金額、入金金額、その差額が一覧で見れるようになっていますが 差額が四捨五入できておらず、自分でどうにか四捨五入をして整数で 分かるように設定をし直しました。(ACCESSに関してはド素人です) その時入力したのが 差額: Nz([入金合計]-[請求合計]) でした。 その後知人が修正したものを持って来てくれたので入れ替えたのですが 次は小数点の関係からか、なぜか1円誤差が出るようになりました。 自分でしたときは大丈夫だったので、関数を確認したところ 上記nz部分が、 fix となっていました。 誤差が出るのはややこしいので、Nzに戻そうかと思うのですが 何か問題があるか教えてください。 ヘルプでfixの説明を読みましたが、いまいち意味がわかりませんでした。 どなたかよろしくお願いいたします。

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

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

差額:Nz([入金合計]-[請求合計]) これも、おかしな式ですね。 差額:Nz([入金合計])-NZ([請求合計]) なら、ヌルエラー回避としては理解できます。 しかし、そもそも、[入金合計]や[請求合計]に小数点が発生している訳がないでしょう。 10円50銭なんて請求も入金も世の中にはないですからね。 ですから、問題は、ここじゃないですね。 [イミディエイト] ? (1230 * 1.05) * 3 3874.5 例えば、こういう総額方式での単価と数量の計算箇所があるんじゃないのですか? ここで、 3874.5 -> 3875 と請求額を修正しているかどうかじゃないですか? しかし、上述の計算の仕方は信頼できませんよ! ? (Ccur(1230) * Ccur(1.05))*3 3874.5 がお勧めです。 ? Rounds((Ccur(1230) * Ccur(1.05))*3, 切り捨て) 3874 ? Rounds((Ccur(1230) * Ccur(1.05))*3, 切り上げ) 3875 と、この段階で関数を使って整数化します。 書式指定で見かけ上だけ整数化していても問題は解決しませんよ。 なお、取引先100社は、全て切り捨てしていますね。 Access2002 までは Excel みたいな RoundDown みたいな関数がないです。 ですから、そこは、上記のように Rounds関数を使うしかないです。 ' ---------------------------------------------------------------------------------------- ' 共通記号定数 ' ---------------------------------------------------------------------------------------- Option Compare Database Option Explicit ' ' Rounds関数用 ' 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

noname#68919
質問者

お礼

お礼が遅くなり申し訳ございません。 大変詳しく解説して頂き、有難うございます。 参考に一度、がんばってみたいと思います。 他に回答を下さった方もありがとうございました。 ここで代表してお礼申し上げます。

全文を見る
すると、全ての回答が全文表示されます。

その他の回答 (2)

  • mshr1962
  • ベストアンサー率39% (7418/18948)
回答No.2

小数点以下第1位の四捨五入でいいなら CLng(Nz([入金合計])-Nz([請求合計]))  Clng関数は 数値範囲2,147,483,648 ~ 2,147,483,647で小数点以下は四捨五入されます。

全文を見る
すると、全ての回答が全文表示されます。
  • Qoo1985
  • ベストアンサー率22% (131/570)
回答No.1

fixは小数点以下切捨てですね。 どうしたいのか分かりませんが、下記を参考にすれば良いかと。

参考URL:
http://www.relief.jp/itnote/archives/002655.php
全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • アクセス 関数について

    業務で、アクセスを利用して顧客データ管理してます。 クエリで金額計算を行っていますが、整数をうまく計算できません。 int([金額]*[料率])として販売価格を出すようにしているのですが 料率が70%の場合、1円合わなくなります。 例えば int([43,100]*[70%])とした場合 30,169円と表示してしまいます。 Roundを使ってみると30,170円と表示しましたが、四捨五入されるため、ほかのデータに 1円誤差が生じてしまいます。 試しにfix関数を入れてみましたが、intと同じ結果になりました。 前任者から、社内システムを引き継いだものの アクセス初心者で困っております。 良い解決法をお教えいただけないでしょうか。

  • エクセルの四捨五入の合計

    エクセルで表計算をして、小数一位で四捨五入した場合ですが、横の計は四捨五入後の整数でいいのですが、縦の計をオートシグマで集計すると四捨五入前の計になり、合計があいません。これを四捨五入後の整数の合計にできないでしょうか?

  • EXCELで税込税抜き金額を計算する時に発生する、合計金額の誤差について

    【教えてください】 エクセルで税込金額から税抜き金額を自動計算し、それぞれ、複数の金額を合計すると、数円の誤差が生じてしましまいす。 合計誤差を0にするためには、(税込合計=税抜き合計×1.05にするためには)どのようにすればよいのでしょうか。 現在は一度自動計算し、誤差を手入力で修正しています。 何かいい方法があれば教えてください。 ちなみに、税抜き金額は税込金額÷1.05で自動計算しています。(小数点一桁で四捨五入し、整数にしています。) よろしくお願い致します。

  • 四捨五入で計算された数字を、整数で返す関数を教えてください。

    エクセルで見積金額をだす時に、小数点以下非表示で計算すれば、100.4+100.9+100.4=301.7 302となります。 関数を使い小数点第1位四捨五入で、これを301にしたいのです。 小数点第一位を四捨五入して整数で返すと言うのでしょうか? (小数以下斬り捨てだと、300になります。INT関数がそうなのでしょうか?) すみません、関数がまだ良く分かりません。間違っていたり説明がまずかったなら、ごめんなさい。

  • エクセル関数

    請求書をエクセルで作成しています。 それぞれの項目の小数点以下は四捨五入していますが、問題は各項目の合計が1円とか2円が合わなくなってしまいます。 その合計を合う様にするにはどうしたらよいですか?

  • 算数の四捨五入が分かりません

    小学生レベルの四捨五入の問題なのですが、 (1) 0.75を小数第一位で四捨五入し、整数で表せ (2) 0.01を小数第二位で四捨五入し、小数第一で表せ (3) 4.2を小数第一位で四捨五入し、整数で表せ などという問題が、昔のことですっかり忘れてしまって分からない状態なんです。 ちなみに(1)の答えは『1』なんじゃないかな、と考えたりもしたのですが違うのでしょうか? このような四捨五入の仕方を教えていただけると助かります。 明日までにどうしても解かなければならないので、回答宜しくお願いします!

  • 四捨五入関数を作りたい

    Cでdouble型の数値の四捨五入を考えています。 小数点7桁目を四捨五入したいです。 1000000倍して0.5足して切り捨てる やり方が載っていました。 しかし1000000倍した時に誤差で「.3999999」となる ことがあるようです。 どうやったら回避できるのでしょうか。

  • エクセル関数を教えて下さい。

    ROUND関数で除算して、小数点以下を四捨五入させたセル(ROUND(A1/1.05、1))を合計する際、ROUND関数で求めた画面上の整数の合計をさせる関数を教えて下さい。SUM関数を使用すると、除算した小数点以下の数字にて集計されます。

  • エクセルのROUND関数について

    小数点以下を四捨五入して整数にするには,例えば ROUND(1.52,1) なら,2になると思うのですが, ROUND(1.52,01) としても2となります. 1としても0.1としても結果は必ず等しくなるのでしょうか? よろしくお願いします.

  • エクセルの小数以下の合計で!

    こんにちは! エクセルで表計算をしていますが、小数が入った場合の合計金額が、セルの合計と違ってきます。 ROUNDの使い方がわからないので教えてください!   13545.0  →  13545   17437.5  →  17438  +15862.5  →  15863 --------   ------   46845       46846            ↑   これを、四捨五入の整数を足した右の数字の「46846」にするにはどうしたらいいでしょうか?  今は、合計欄に「SUM=??」の式が入れてあります。

専門家に質問してみよう