ExcelのMOD関数についての質問

このQ&Aのポイント
  • ExcelのMOD関数についての課題の回答で出てくる異なる数値について解説をお願いします。
  • 冬休みの課題でExcelのMOD関数を使用する際に、通常の計算とは異なる数値が出てくる理由を教えてください。
  • MOD関数を使って計算すると、予想とは異なる数値が得られるので、なぜそうなるのか解説をお願いします。
回答を見る
  • ベストアンサー

Excel_MOD関数に関する質問

某Yahooでも同じ質問をしたのですが、別の回答を得られるかもしれないと思ったのでこちらにも質問させて頂きます 学校の冬休みの課題でExcelのMOD関数についての課題が出ました その中で (1) =MOD(10,7)→3 (2) =MOD(10,-7)→-4 (3) =MOD(-10,7)→4 (4) =MOD(-10,-7)→-3 と、こんな感じで課題が出されました 通常、(2)は計算すると 3 (3)は -3 となるはずなんですが、 MOD関数を使うと -4と 4が出てきます。 なぜ異なる数値が出てくるのか解説をお願いいたします 回答を参考に自分なりにまとめて冬休みの課題として提出するので、説明お願いいたします。 PS。通常の計算で出てくる余りの部分自体が間違っていたらすみません。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.1

Excel の MOD 関数は、以下のように定義されています。 MOD(n, d) = n - d * INT(n / d) また、INT 関数は、引数を超えない最大の整数を返します。 従って、 MOD(10,-7) = 10 - (-7) * INT(10 / -7) = 10 + 7 * INT(-1.4...) = 10 + 7 * -2 = -4 MOD(-10,7) = -10 - 7 * INT(-10 / 7) = -10 - 7 * INT(-1.4...) = -10 + -7 * -2 = 4 となります。 もし必要があれば、関数の定義は Excel のヘルプで確認して下さい。

その他の回答 (1)

回答No.2

「別の回答を得られるかもしれない」というのが再質問の動機なのであれば、前の質問ページのアドレスを示すなりして、前回どのような回答が出たのかが分かるようにすべきでしたね。そうでないと、ムダに同じような回答を何度も投稿することになってしまうかもしれません。 分からないことがあったら、まずは質問よりも、ヘルプを見るのが先です。その次に、インターネットで検索。それでも分からない場合は、理解していることを示しながら質問するようにしてください、今後。 MOD 関数のヘルプに「剰余を返します」と書いてあり、なおかつ「戻り値は除数と同じ符号になります」と書いてあります。 同符号の剰余(余り)だということは、MOD の第 2 引数が例えば -7 であれば、MOD が返す値は、-6 以上 0 以下である 7 種類の整数であるということです。第 2 引数が 7 なら、0 以上 6 以下の整数です。      除数      剰余   10 =  7  x  1 +  3   10 = (-7) x (-2) + (-4)  -10 =  7  x (-2) +  4  -10 = (-7) x  1 + (-3) ※剰余の取り得る値の範囲が問題。符号も一致させる。 と書けるから、質問文の各式の戻り値は、3、-4、4、-3 とならなければなりません。 MOD は、「周期的な現象」を扱うための関数です。ですから添付図のように、数直線を使うと少しはイメージしやすいかもしれません。ベクトルの方向は、符号を反映しているのでしたね。 関数などの仕様を忘れたら、何度でもヘルプを見てください。

関連するQ&A

  • Mod関数?に関して

    会社のASPのソースの中に以下のようなものがあります。 <% for iRowAnswer = 0 to ubound(ArrAnswer, 2)   if iRowAnswer Mod 4 = 0 And iRowAnswer > 0 then ・・・・・ とあるのですが、2行目のif文のModはどのように解釈すればよろしいのでしょうか? Modというと N = MOD(30,4) という感じで割り算の余りを計算する関数という認識しかないのですが、まったく違う使い方なのでしょうか? これだけでは分からないかも知れないのですが、どうぞよろしくお願い致します。

  • =MOD(ROW(),2)=0が一行置きになる意味

    初歩的な質問ですみません。 =MOD(ROW(),2)=0 について教えてください。 MODはあまりを返す関数、ROWが行を示す関数ということはわかるのですが、どうしてこの「=MOD(ROW(),2)=0」という数式が「一行置きに」を表すようになるのでしょうか? 「ROWの()で指定した範囲の行番号を2で割ったときの余りが0」ということだと思うのですが、これは「余りが0=偶数」だから「偶数行を指定する=一行置き」という理解であっていますか? また、( )の中を「,」で区切るのはどういう意味を持ちますか? 関数によって違うとも思いますが、「,」の前と後で、「前の数値に(を)後の数値を(で)」というかんじでしょうか?「IF」関数の場合「,」がいくつも続く時はどういう意味になりますか?

  • AccessでExcelでのMOD関数と同じ計算をさせるには

    いつもお世話になっております。 Accessで割り算の余りを計算させたいのですが、 ExcelのMOD関数って、使えませんよね・・・? 何かよい方法がありましたら、教えてください。 クエリでもVBAでも結構です。 よろしくお願いします!!

  • なぜハッシュ関数はモジュロを使うのはふつう?

    ハッシュ関数の定義はWikipedidaによると「データが与えられた場合にそのデータを代表する数値を得る操作、または、その様な数値を得るための関数のこと」となっていますが、 色んな記事見ているとキー値(x)をデータの個数(n)で割った時の余り、 つまりx mod nみたいな計算が一般的みたいな書かれ方しているような気がします。 ハッシュ関数と言ったら上記のようなx mod nという理解でいいのでしょうか? また、なぜ冒頭で定義されたはずの関数が簡単なモジュロ計算で表されるようになってしまったのでしょうか?

  • mod255の計算

    こんにちは。 今日はmod255の計算について困ったことがあり、質問しました。 私は今、mod255の計算をする回路を作っています。 mod255とはある値を255で割ったときの余りを求めることですよね。 しかし、回路ではあまり除算(回路の性質上、逆数を取って乗算する)を使いません。 理由は、計算に時間がかかることと、回路規模がが大きくなるため。 ある値が255以上か判定してから順次255を引くことも考えましたが、動作が不規則なため使っていません。 そこで、私はmod255を除算を使わず、減算で実現しようと次のような計算法を考えました。 例、239+157をmod255する場合。 239+157=396を2進数に変換すると 11101111 +10011101 ------------ 110001100 ここで、計算結果の右から9番目の1を一番右に移動して加算すると 10001101になります。 これを10進に変換すると141になります。 よって、396-255=141となり396をmod255ができていますよね。 これで、問題解決だと思ったのですが、 ある値が511でこの計算をすると結果が10000000となり 256になってしまいます。 このことから考えて、この計算法は万能ではないみたいです。 この計算法のどこを改善するとmod255を計算できるようになるのでしょうか? また、皆さんなら、どんな方法でmod255を実現しますか? よろしく、お願いします。

  • Excel関数についての質問です。

    Excel関数についての質問です。 エクセルのバージョンは2007を使用しております。 A1 A2 A3 A4 A5 という並びの表で、A5にはA3-A4の答えを表示させたく、 つまり関数 =A3-A4と入力しているのですが、 A3のセルに空白のセルがあった場合には、 A2のセルを使って =A2-A4 更にA2のセルが空白の場合には、 A1のセルを使って =A1-A4 という風に関数を設定したいと考えています。 「参照先のセルが空白の場合に、ほかのセルの数値を使って計算する」 ということだと思うのですが、どのような関数を入力すれば良いか、 ご教授いただけるとありがたいです。 IFERRORを使って設定すれば良いのかと考えたのですが、 =IFERROR(A3-A4,A4-A2) となり、一応答えが出るようなのですが、 その場合、更にA2が空白だった場合にA1を使って計算するようにするにはどうすればよいか?という点がわからず、質問させていただきました。 ご回答、お待ちしております。よろしくお願いいたします。

  • Excel関数に関する質問です。

    Excel関数に関する質問です。 横のセル「対象*」セルに対する項目と値があるとします。横のセル1列分が1セットです。 添付画像にある、「対象*」セル、「項*」セル、「値*」セル(「*」は数字)がそれです。 「項*」セルには項目の名称、文字列が入ります。 「値*」セルには通常の数値とは異なり、コードのようなものが入ります。例えば「00-1234」。 「結果」セルに「項目1,値1,項目2,値2,項目3,値3~」のように計算結果を出します。 重要な点は、 ■1. それぞれのセル(「項*」、「値*」)の間に必ず「,」(コンマ)をつけて表示する。 「結果」セルの例:項目1,値1,項目2,値2,~ ■2. 「値*」セルの内容が、「None」の場合、その部分は表示しない。表示させないキーワードは空白や他の文字でもいいのですがとりあえず「None」で設定。 「結果」セルの例(1番目、3番目のセルが「None」の場合): 項目2,値2,項目4,値4 ■3. 計算結果を出すセルは「対象*」ごとに必ず同じセルでなければならない。 例えば、「対象1」は「J1」セル、「対象2」は「J4」セルに最終的な計算結果を出す。 ■4. 「対象*」セルによって項目があるもの(「値*」が「None」以外)と、ないもの(「値*」が「None」)の場所は決まっていない。 マクロや簡単なプログラムは知っているので作れると思いますが、関数のみでできるようにしたのですがどのようにするのか具体的に教えていただけないでしょうか? 回答で分からなかった点は、改めて補足で質問すると思いますがそのときはよろしくお願いします。 回答よろしくお願いします。

  • Excel関数CEILINGとFLOORの使い方

    EXCEL関数の質問です。 80226 18351 11583 447 等の数値があり、一桁目が6など5より大きい場合は80226が80230になり 18351など5より小さい場合は18350となるようにしたいです。 同じように11583は11580、447は450となるように。 数値が混在していなければCEILINGとFLOORで計算できるのですが この二つを混在させた場合の計算式がわかりません。 この二つの式を使用しないでも出来ればなんでも結構です。 よろしくお願いします!

  • 書式とかラウンド関数で表示された数字で計算したい

    セルの表示形式で、マイナスは0で表示される設定がされていたり、rounddown関数で小数点切り捨てられた数字が表示されています。 そこに表示されている数字をそのまま使って合計したりしたいのですが、小数点やマイナスが反映されてしまいねらった計算ができません。 あくまで表示されている数字で計算したいのですが、どうすればうまくいくでしょうか? あと、あまりを求めるmod関数についてですが、小数点以下も表示されるのはなんででしょうか?mod関数は余りを求める関数と理解しているので、正数にしかならないと思うのですが・・・ お答え宜しくお願いします。

  • Excel関数:「0」を除いた標準偏差の計算方法2

    前に質問したのですが条件を書いていなかったので改めて質問します。回答してくれた方、申し訳ありませんでした。 例えば、下のようにセル「A1」が「1」、「A2」が「0」というようにデータがあったとします。これらのデータの中から「0」を除いた標準偏差(母集団、データ総数の)を求める計算方法があったら教えてください。 条件は、 1.一つのセルで計算する 2.「0」を変えない 3.データ範囲「A1:A5」を変えない 4.純粋に関数のみで計算する です。 あまり、関数を知らないので解説もよろしくお願いします。   A 1 1 2 0 3 2 4 5 5 4 回答よろしくお願いします。

専門家に質問してみよう