アプリ版:「スタンプのみでお礼する」機能のリリースについて

ExcelのROUNDUP関数で桁数を-0.5にするのと0にするのとでは結果が同じになるのですが、-0.5に指定した数式があり、そのようにする理由をおしえてください よろしくお願いいたします

A 回答 (2件)

「桁」数なので、「整数であるべき」というのが常識なのだけど、その人(桁数を-0.5とした人)は Mictrosoft Excel 特有の性格を呑み込んだ“達人”と推察します。


つまり、貴方が「ExcelのROUNDUP関数で桁数を-0.5にするのと0にするのとでは結果が同じになる」と仰るのは、全くそのとおりなのです。
私自身は INDEX関数や OFFSET関数に指定すべき「行(列)番号」に計算値を充てる際に、計算値を整数化する手間を省くために、その手の手法を用いています。
Excel特有の性格を知っておくと式を簡略できることがあるのです。
    • good
    • 1
この回答へのお礼

mike_gさん ご回答、ありがとうございます。Excel特有の性格を勉強していきたいと思います。
勉強になりました。

お礼日時:2015/03/08 10:01

こんにちは。



ちょっと疑問に感じたので、私も考えてみました。

つまり、
=ROUNDUP(A1,-0.5)
のように書くという意味ですよね。
そこで、プログラム(VBA)でシミュレートしてみました。

'-------------------
Sub Image_of_RoundUp_Test1()
 Dim num As Double
 Dim digit As Double
 Dim i As Currency
 Dim sg As Integer
 Dim ans As Currency
 num = 1.01 '数値
 digit = 0  '桁
'--------------------
 sg = Sgn(num) '符号を取る
 num = Abs(num) '絶対値
 i = 10 ^ digit 'Log の逆関数
 If num * i - Int(num * i) > 0 Then
  ans = sg * (Int(num * i) + 1) / i
 Else
  ans = sg * (Int(num) * i) / i
 End If
 Debug.Print ans
End Sub
'-------------------
最初の計算の答えは、「2」になります。

そこで、桁数を、-0.5 にしてみます。
計算の答えは、「 3.1626 」になります。(Currency型なので、下4桁までです)

つまり、この関数のパラメータの「桁数」に対して、内部で補正措置をされているだけであって、本来は、「-0.5」は、成立すると考えたほうがよいわけです。個人的には、ROUNDUP関数に、そのような数値を入れるのは、紛らわしいだけであって、本来は好ましいことではないと考えます。

もし、そうした計算があったのでしたら、何かの間違いではないでしょうか。
また、不活性の数字の数値化は、VALUE関数の代わりに、元の数字に、「--」(マイナスを2つ)や「*1」(×1)とすることはあります。

なお、=ROUNDUP(A1 -0.5, 0) は、別の意味があると思います。
    • good
    • 1
この回答へのお礼

WindFallerさん ありがとうございます。
VBAはほとんどわかりませんが、一般的にはROUNDUP関数には、このような桁数を入れるのは好ましくないとのこと VBAでシュミレーションまでしてくださり、ありがとうございます。

お礼日時:2015/03/16 21:14

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!