• 締切済み

Excelの四捨五入で・・・

他の方も質問されてるものも拝見したのですが、消費税等の計算をする時、個別に出すのと合計に対して出すのとでは数値が違いますよね。それを、Round関数等を使わずに、シート全体に出た値を小数点以下切り捨てで返すように設定をする事はできますか? 1シートに設定する箇所が多いもので、何とかならないかと思ってます。 どなたかご存知の方がおられましたら教えて下さい。

みんなの回答

  • nishi6
  • ベストアンサー率67% (869/1280)
回答No.2

処理を簡略化できないか考えるのは大事なことですね。質問を見て思いついたのは次のような方法です。   入力(変更)を感知する     ↓   変更したセルは算式か     ↓   算式なら、答えは数値か     ↓   数値なら、算式を整数位で切り捨てにする式に書き換える 実用的かどうかは分かりませんが、質問にあることは実現できているはずです。 算式を値にできれば一番簡単ですが、それではExcelの意味がなくなると思い算式は残しています。 そのため、マクロで書き換えた算式を修正した場合、その算式を再度書き換えるべきかどうかは 評価が難しくなります。今は再度書き換えています。 この辺を対応しようとすると、コードはどんどん長くなっていってしまいます。逆に複雑になりそうで簡略化しようとしたことと逆行するようなことになってしまうでしょう。 Excelの性質からも、算式で明示的に端数処理を書くのが一番の方法だと思います。1回算式を書けば何回も使えるわけだし、コピーもできます。 Sheet1で行う例です。(参考例です) ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。シートで、算式による数値計算を行えば、式を書き換えます。(書き換えるだけです) Private Sub Worksheet_Change(ByVal Target As Range)   Dim rg As Range 'セル   'エラーが起きた時の対応   On Error GoTo ErrorHandler   For Each rg In Target     '算式だったら     If Left(Target.Formula, 1) = "=" Then       '算式が数値の評価ができれば       If IsNumeric(Target) Then         'イベントが発生しないようにする         Application.EnableEvents = False         '入力した算式を強制的に切捨てするようにする。(整数にする)         Target = "=Int(" & Mid(Target.Formula, 2) & ")"         'イベントが起きるように戻す         Application.EnableEvents = True       End If     End If   Next   Exit Sub ErrorHandler:   'イベントが起きるように戻して終わる   Application.EnableEvents = True End Sub

chibibuta
質問者

お礼

ありがとうございます。 簡単にしようと思うと余計に面倒な事をする時ってありますね。 当方マクロはまだ使ったことが無いものでわかりません。 もう少し勉強してから挑戦してみます。 今のところは、地道にやってみます。

  • Good-S15
  • ベストアンサー率33% (149/439)
回答No.1

こんばんわ。 長年7年位、Excelを触って来ましたが、 そのようなことができるのかどうかが 不明です。 私なら、1つのセルに対し、関数で行い その他のセルを複数選択指定して、 数式の貼り付けで一気に対応しますが。。。

chibibuta
質問者

お礼

ありがとうございます。 やはり無理でしょうかね・・・ 地道にやることにしました。

関連するQ&A

  • グーグルスプレットシートの四捨五入は?

    私は、グーグルスプレットシートを使っています。 デフォルトでは小数点第二位まで表示されています。 ですから、あるセルの値は 1855.98 と表示されています。 これをROUND関数を使い小数点以下を表示させないようにすると 1856 と表示されます。 表示形式→数字→カスタムの小数点桁数 を0に設定するとROUND関数使わずとも 1856 と表示されます。 このままで問題ないのでしょうか? 詳しい方教えてください。

  • エクセルの表示形式で、10の桁で四捨五入した値を表示させるには?

    エクセルの表で、数字を四捨五入する方法にはROUND関数がありますが、関数で変換すると値そのものが変わってしまいます。 値はそのままで四捨五入した数字で表す方法を教えてください。 小数や一桁の整数までの四捨五入であれば、セルの書式設定・表示形式を「数値」にして小数点以下の桁数を指定してやれば簡単ですが、10の桁以上で丸めて表示させる方法を探しています。 例えば、9876→9880と表示させる書式設定の方法です。 値は計算に使うので、ROUND関数で実際に丸めたくないのです。 ユーザ定義を組み合わせるなどで、うまくできませんか?

  • excel関数で四捨五入以外の切り捨て、切り上げ

    excelの関数で四捨五入以外の切り捨て切り上げはどうすればいいでしょうか。 小数点以下を切り上げ・切り捨てしたいのですが、 .5までは切り捨てにしたいのです。.51だと切り上げ。 ROUNDだと.5から切り上げになりますよね。 よろしくお願いいたします。

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

    こんにちは。 エクセル関数でわからないところがあるので、教えてください。 Round関数で、四捨五入の小数点以下の表示を切っています。 そうすると、その合計を取ると、実際は表示は小数点以下が 切れていても、元の数字は小数点が残っているので 合計を出した時に端数が合いません。 =IF(E5=0,"",G5) このG5に当たる個所が、Round関数が入っていて 合計が合いません。 ちなみにG5には、=ROUND(C6,2) こんな式が入っています。 C6の数値が小数点になっています。 分かる方、教えてください。よろしくお願いいたします。

  • エクセルの四捨五入(ROUND関数? 書式設定?)

    タイトルのとおりなのですが、エクセルで四捨五入するときは、ぶっちゃけた話、どちらが王道なのでしょうか? 私は、最終的な結果であればどちらもありだと思いますが、計算の途中であればround関数で丸めるのは誤差が大きくなるのでよくないと思っています。 よくある表の作成なのですが、縦横にある数字(整数)を入れていって、横列の平均を右側に、縦列の平均を下側に出し、さらに右端の平均値を計算して平均の平均を右下に出しているのですが、上記の理由から、私はセルの書式設定で表示形式の数値にして桁数ゼロにしています。 しかし別のある人は、同じような表を作るのに、右端の平均を一つ一つ「=ROUND(AVERAGE(A4:F4),0)」などと関数で丸めてから縦の平均を出しています。 当然ながら、私のやり方とその人の方法では最終結果(平均の平均)は微妙に違うことがよくあります。 その人に言わせると、「横の計算結果を見て検算する人がいたら縦の計算結果と合わないのはおかしいと思う」そうです。 でも横一列のデータもあるし、ちょっと見れば横平均の本当の値は小数になることは(小数を習っていれば)子どもでもわかります。 計算結果を小数で表示すればいいのでしょうけど、列幅の制約などもあって整数表示で統一することになっています。 ネットで検索したら、「消費税などの財務計算はそのつど四捨五入した値が本当の値なのでROUND関数を使うのが正解」というのがありましたが、ここでは金額を入力しているわけではありません。 業務上のことで明らかにできませんが、例えば警察の交通事故件数や学校のテストの点数みたいに、入力するのは整数でも平均値は小数になりうる性質のものです。 周りの第三者の意見を聞いてみると結構まちまちで、私の方法を支持する人も多いですが、中にはその人と同じく「見た目が大切」という人もいます。 私は途中計算を丸めるのは、極端に言えば違う値に変更(改ざん)するわけだから、見た目を綺麗にしようと画像を修正したSTAP細胞の論文みたいだと思うのですが、どうなのでしょうか?

  • エクセルでの切捨て

    売上の集計表を作っています。 エクセルで各部門の売上およびそれを集計した数値を消費税込みで表示したいのですが 各部門の売上の消費税抜きの数値に5%をかけた式を入力したセルには 小数点が表示されてしまいます。 たとえば、消費税抜きの値が6418674円の場合 税込みにすると6739607.7円となってしまいます。 これを切り捨て表示(6739607円)にしたいのですが どーすればいいのでしょうか? (全20部門を税込み価格にしてその合計をとるので  小数点以下の数値により  誤差が生じます。。。) 教えてください。 よろしくお願いします。

  • エクセルで各セルそれぞれ四捨五入してからの合計を求めたいのです

    エクセル2000です。 ワークシート関数でこんな場合どうすればよいでしょうか? 添付画像のようにA列に数値データがあります。 途中に空白(数式で ="" が表示されています。)のセルもあります。 このA列のデータを各セルそれぞれ四捨五入してからの合計を求めたいのです。 画像ではB列を作業列にして、 =IF(ISNUMBER(A2),ROUND(A2,0),0) と、="" への対応をして ROUNDして合計していますが、作業列を使わなくとも良い方法があればと思い質問いたしました。 途中の空白が、数式による ="" では無くほんとの空白であれば、 =SUMPRODUCT((ISNUMBER(A2:A11))*ROUND(A2:A11,0)) で、一発で求められるのですが・・・・・。 ご教示いただければ幸いです。 宜しくお願いいたします。

  • Access2000 小数第3位で四捨五入

    質問させていただきます。 Access2000で以下の計算式を作りました。 金額 = Round(重量 × 単価,2) これは「金額」を小数第3位で四捨五入します。 ところが以下の数値の場合、正しく計算してくれません。 764.00 = 0.479 × 1595 本当は 764.005 だから 小数第3位で四捨五入すると 764.01 になると思うのですが・・・。 ちなみに以下の値では・・・ 754.44 = 0.473 × 1595 (754.435だから小数第3位で正しく四捨五入されています)。 やり方が悪いのでしょうか?それとも他に正しく計算できる方法があるのでしょうか?

  • EXCELの関数について(IF、ROUND)

    エクセルの数値の丸め方について エクセル初心者です。今までの投稿で近い投稿が無かったので、質問させて頂きます。 例として、ある数値が小数第1位まであるとします。 (1)その値が300未満のとき 小数第1位の値が4以下のとき切り捨て、5以上のとき切り上げる。 (2)その値が300以上1000未満のとき 小数第1位の値が4以下のとき切り捨て、5以上のとき切り上げる。 整数第1位の数値が2以下のとき切り捨てる。3以上6以下のとき5とする。7以上のとき切り上げる。 (3)その値が1000以上10000未満のとき 小数第1位の値が4以下のとき切り捨て、5以上のとき切り上げる。 整数第1位の数値が4以下のとき切り捨てる。5以上のとき切り上げる。 このような関数、もしくはVBAの設定を詳細に教えて頂けないでしょうか?よろしくお願いします。

  • Excel2000で変則的な四捨五入の関数を教えて下さい。

    関数式を教えて下さい。 小数点以下を四捨五入した結果を整数で出したいです。 但し、普通のROUND関数で出た答えを尚も、下一桁が5づつ飛ぶように.. たとえば、 100.5--101--100(求めたい値) 101.7--102--100(求めたい値) 102.5--103--105(求めたい値) 105.8--106--110(求めたい値) 112.4--112--110(求めたい値) 113.5--114--115(求めたい値) 118.5--119--120(求めたい値) こんな感じです。(中央の値は特に必要ではありません) 四捨五入し、且つ5の倍数の整数での値が欲しいです。 よろしくお願いします。

専門家に質問してみよう