2009/06/18

Excel MOD関数で#NUMエラー

「ExcelのMod関数(割り算の余りを求める関数)を使うとエラーがでるんだよ」という相談を受け、問題のBookをもらって眺めてみたところ。

割られる数の桁が妙に多い。

「なんかそれって怪しいなー」と思って、試しに割られる数の桁を少なくすると、ちゃんとMod関数は機能する。どうやらMod関数では、割る数が1桁の場合、おおよそ9桁前後で#NUMエラーが出てくる模様。ウーム、と思ってMod関数の割られる数の上限を求めてググってみると、MSのサイトにちゃんと原因・解決法が書いてありました。

原因は、これ

#NUM! エラーが返されるのは、以下の条件に該当する場合です。 (除数 ' * 134217728) が、数値' 以下です。

ここでいう数値'というのは、割られる数のコトですね。

たとえば1234567890 ÷ 7のケースを考えてみると、

7 × 134217728 = 939524096

割られる数1,234,567,890よりも939,524,096の方が小さいからアウト、というわけですな。

それじゃぁ桁数が大きいときに、MOD関数を使わずに余りを求めたいときはどうすりゃいいの?というのは簡単(上記のリンク先のヘルプにも書いてありますけど)。

1234567890 ÷ 7のケースで考えるならば、

1234567890 -(INT(1234567890/7)*7)

でOK。INT(1234567890/7)で商を求めて(INT関数で小数点以下を無視している)、除数で掛け算して、割る数から引けば、そりゃ余り。