• 締切済み

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