まりふのひと

Excel2002のRoundDown関数のヘルプで苦戦

パソコン同好会で使っているテキスト「よくわかる Microsoft Excel 演習問題集」で出てくる関数は、まずヘルプを見るようにしている。今日のパソコンA組では RoundDown が出てきた。早速、ヘルプ‥‥

Excel 2002 の RounDown のヘルプ

説明していて‥‥ ????

桁数 に 0 を指定すると、数値最も近い整数として四捨五入されます

内心、「Fix かと思ったら Int かよ‥‥」「切捨ての関数なのに四捨五入かよ‥‥」
「最も近い整数」の意味を説明して、さぁ、やってみましょう‥‥ なる訳ないよね〜〜〜
で、Excel2003のヘルプを見せてもらったら、

桁数 に 0 を指定すると、数値 は最も近い整数に切り捨てられます。

「四捨五入」が「切り捨て」に変わっていた。
しかし、「最も近い、、、、」は残っている。気になるが、なんとか切り抜けた...

編集後記

整数に切り捨てる場合、VBAの関数に Int と Fix がある。これをExcel2003 VBA のヘルプで調べた。

Int、Fix 関数
 指定した数値の整数部分を返します。

構文
  • Int(number)
  • Fix(number)

 引数 number は必ず指定します。引数 number には、倍精度浮動小数点数型 (Double) の数値または任意の有効な数式を指定します。引数 number に Null 値が含まれている場合は、Null 値を返します。

解説

 Int 関数と Fix 関数は、どちらも引数 number の小数部分を取り除いた整数値を返します。
引数 number に負の値を指定した場合には、Int 関数が引数 number を超えない最大の負の整数を返すのに対して、Fix 関数は引数 number 以上の最小の負の整数を返します。たとえば、引数として -8.4 を指定すると、Int 関数は -9、Fix 関数は -8 をそれぞれ返します。

更に、ワークシート関数 RoudDown、Round と VBA の Fix、Int の違いを Excel2003 で調べた。

内容2行目のセルの値
A-2.0 から 2.0 まで、増分 0.1 で連続的に変化させた値。 
BA列の RoundDown 関数の値=ROUNDDOWN(A2,0)
CA列の Round 関数の値=ROUND(A2,0)
DB列とC列が等しい時に“○”=IF($B2=C2,"○","")
EVBA の Fix 関数(後述)の値=userfix(A2)
FB列とE列が等しい時に“○”=IF($B2=E2,"○","")
GVBA の Int 関数(後述)の値=userInt(A2)
HB列とG列が等しい時に“○”=IF($B2=G2,"○","")


※ 結果
  • RoundDown 関数は、VBA の Fix 関数と同じであった。
  • RoundDown 関数の説明(ヘルプ)は
    桁数 に 0 を指定すると、数値 は小数部を取り除いた値(整数)になります。
    の方が解り易いのではないか。
※ 上表で使った Excel ユーザー関数
Function userInt(argNum)
    userInt = Val(Int(argNum))
End Function

Function userFix(argNum)
    userFix = Val(Fix(argNum))
End Function
※ 上記で作成した Excel ブック

ここ からダウンロードできます。
但し、マクロが入っている関係から、zip形式で圧縮してあります。自己責任で利用してください。