重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

IF関数とMODで、例えば入れた数値の倍数の時に◯が表示される……という数式を作りましたが、1.1の時に本当だったら1.1、2.2、3.3、4.4、5.5、6.6、7.7……で◯になるはずなのですが、10以下の数値を入れてみると、3.3、5.5、6.6、7.7、9.9は◯の表示がでてきません。
1.1、2.2、4.4、8.8しか◯が出ません。
どうしてでしょうか?

質問者からの補足コメント

  • ちなみに入れた数式はIF=(MOD($A2,B$1)=0,"◯","")
    です。

      補足日時:2019/04/18 00:53

A 回答 (10件)

幼稚な言い方だけど、Excel(に限らないので、PC全般的なことと理解してネ)は“小数点の計算には弱い”と理解しておきませう。


理屈っぽい人はフドーショースーテン(浮動小数点)問題などど言い始めますが・・・
それはさておき、対策を教えます。カンタンなことで、小数点抜きの整数に換算して、Excel に計算させることです。
貴方が提示した式(実はナッチョランでしたが)、を
=IF(MOD($A2*10,B$1*10)=0,"◯","")
に変更するだけで解決します。ゴチャゴチャ考えずに先ずは実行してみること!
どうなりましたか?
    • good
    • 0
この回答へのお礼

お礼遅くなりましたm(__)m
言われてみるとそうですね……
やってみました!
バッチリでした!
ありがとうございましたm(__)m

お礼日時:2019/04/22 20:56

こうかな。


=IF(FLOOR(A2,B$1)=A2,"〇","")
    • good
    • 1
この回答へのお礼

お礼遅くなりすみませんm(__)m
なんとか解決に至りました!
回答いただき、ありがとうございましたm(__)m!

お礼日時:2019/04/22 21:03

良くある十進数二進数間の小数変換誤差でしょう。

それぞれ10倍して整数で計算させれば大丈夫。
「IF関数とMODで、例えば入れた数値の倍」の回答画像8
    • good
    • 0
この回答へのお礼

お礼遅くなりすみませんm(__)m
出来ました!
ありがとうございましたm(__)m

お礼日時:2019/04/22 20:57

おぉーー 澄みません、


添付映像を 間違えました。


差し替えさせてください。
「IF関数とMODで、例えば入れた数値の倍」の回答画像7
    • good
    • 0
この回答へのお礼

お礼遅くなりすみませんm(__)m
丁寧に教えてくださりありがとうございましたm(__)m
初歩的なこと、うっかりしてました(>_<)

お礼日時:2019/04/22 20:59

MOD構文と 対のものに、


QUOTIENT構文が ありますが、

此は
余りを 取り払った、
商を 求めるものです。


で ですね、
此を 持ちいると、
問題が 回避可能の、
ようですよ。


=IF(QUOTIENT($A2,B$1)=$A2/B$1,"○","")


先程の ファイルに、
変更を 施して、
おきましたので、

お手数ですが、
ご確認 頂けますか?


尚、
ファイルですが、

一度 ローカルに、
別名保存して くださいね、

別名保存で ないと、
意味が 無いですよ。


さすれば、
其の保存ファイルを、
扱って 頂く、
限りは、

閲覧も、編集も、
叶うものと 思いますよ。


さて、
構造ですが、

QUOTIENT構文は、
先出通り、

余りを 除いた、
商を 得るもので、

此が 小細工無く、
ただただ 割ったものと
一致 するならば、

即ち、
余りが 無かったものと、
知れ、

結果、
お求めの MOD構文を、
使ったものと、

同義と なるように、
思います。


如何ですか?
「IF関数とMODで、例えば入れた数値の倍」の回答画像6
    • good
    • 0

コンピュータの中では数値を2進数で扱うので、これが原因によるやむを得ない仕様でしょう。


小数は表示されている数値に小さい誤差が生じる場合があるのです。

EXCELの単純な計算に誤差があるようです。12.3-12=0.3000000000000010000となり0.3にな - マイクロソフト コミュニティ
https://answers.microsoft.com/ja-jp/msoffice/for …

ちなみに、
質問では10以下の数値と書かれていますが、10以上の1.1の倍数はほとんど◯が出ません。

=IF(MOD(INT($A3*10),INT(C$1*10))=0,"◯","")

このように、それぞれのセルを10倍した整数にしてからから計算すれば望む結果が得られます。

なお、
[A2]=1.1
[A3]=A2+1.1
(以降下へ式のコピー)
これだけでも、61.6あたりに
61.6000000000001
62.7000000000001
63.8000000000001
このように目に見える範囲での誤差が生じます。
この数値に至るまでにも見えていない誤差も生じていると思ってください。
    • good
    • 0
この回答へのお礼

お礼遅くなりすみませんm(__)m
初歩的なこと、うっかりしてました(>_<)
とても丁寧に教えてくださり、ありがとうございましたm(__)m

お礼日時:2019/04/22 21:00

疑問なのですが、MODって小数を引数に与えて正常に動作するのでしょうか?


そういった使用方法はあまり見たことがないのですが……

とりあえず整数化すれば良いと思います。
=IF(MOD($A2*10,B$1*10)=0,"◯","")
    • good
    • 0
この回答へのお礼

お礼遅くなりすみませんm(__)m
出来ました!
ありがとうございましたm(__)m

お礼日時:2019/04/22 21:01

お求めは こういった、


物かな?
https://1drv.ms/x/s!AjviygfJDgV_3E3JgaevHTClSPMN

と 思うのですが。


思うに、
バグでは ないでしょうかね?


是非 此方に、
https://social.microsoft.com/Forums/ja-JP/home

報告されては 如何でしょうか?
    • good
    • 0
この回答へのお礼

お礼遅くなりすみませんm(__)m
回答いただき、ありがとうございましたm(__)m
なんとか、解決に至りました!(^-^)

お礼日時:2019/04/22 21:02

式が 変ですよ?

    • good
    • 0
この回答へのお礼

A列に1~1000まで小数ありの数値が入り、B1に数値を入れてその数値に対してB列に◯がつく……というような表を作りたいのです……。

お礼日時:2019/04/18 01:01

取り敢えず、


仰る通りの 再現性を、
確認できました。


何故なのでしょうね?
「IF関数とMODで、例えば入れた数値の倍」の回答画像1
    • good
    • 0
この回答へのお礼

何か解決策はありますでしょうか……?

お礼日時:2019/04/18 01:10

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