• ベストアンサー

エクセルのIF関数で同じ値なのに答えが違う

質問させていただきます。 エクセルのIF関数とAND関数を使って数式を作ったのですが どうしてもうまくいかないので質問します。 ±0.005以内であれば良、それ以外は不良としたいので =IF(AND(-0.005<=A,A<=0.005),"良","不良") Aにはべつのセルで計算した値が入り A=(1000.0-999.9)/2000*100 この場合だとA=0.005なのに不良となります。 A=0.1/2000*100 これだと良となります。 同じ0.005なのになにが違うのでしょうか? よろしくお願いします。

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

  • ベストアンサー
  • hallo-2007
  • ベストアンサー率41% (888/2115)
回答No.3

パソコンにおける演算誤差ですね ちなみに A1セルに A=(1000.0-999.9)/2000*100 A2セルに A=0.1/2000*100 といれて A3セルに =A1=A2 と入れると FALSE が帰ってきます。 =IF(AND(-0.005<=A,A<=0.005),"良","不良") の式を =IF(AND(-0.005<=ROUND(A,5),ROUND(A,5)<=0.005),"良","不良") と十分な小数点以下の桁数で四捨五入しましょう。

nov777x
質問者

お礼

回答ありがとうございます。 対処方法も教えていただきありがとうございました! 無事解決しました。

その他の回答 (3)

  • misawajp
  • ベストアンサー率24% (918/3743)
回答No.4

>同じ0.005なのにな・・・・・ これが勘違い ごく僅か異なり 同じにはなりません 

nov777x
質問者

お礼

回答ありがとうございました。 エクセルにも色々と欠点があったんですね^^;

  • aokii
  • ベストアンサー率23% (5210/22062)
回答No.2

パソコンの計算誤差です。 (1000.0-999.9)/2000*100 =0.005000000000000000000000 0.1/2000*100 =0.005000000000001140000000

nov777x
質問者

お礼

回答ありがとうございます。 いったいどこから114がでてくるのやら・・・

noname#154975
noname#154975
回答No.1

Excel、小数点の計算は苦手なんです。 エクセル奇譚 ~ 誤差アラカルト ~ http://hp.vector.co.jp/authors/VA016119/kitan011.html 日経PC21 / 小数計算で発生する「誤差」 - 単純な計算の答えが合わない理由 http://pc.nikkeibp.co.jp/pc21/special/gosa/eg1.shtml

nov777x
質問者

お礼

回答ありがとうございます。 小数点の計算は苦手だったんですか・・・ 参考資料ありがとうございます。

関連するQ&A

  • エクセルのIF関数とVLOOKUP関数について教えてください。

      A B C 1 A1 B1 C1 2 A2 B2 C2 ・ ・ ・ 上記のような表があり、セルX、Yに入力した値が2つの条件に合致した場合、セルZにC列の値を返すような数式を作っています。 たとえば、セルXの値がA1より小さく、かつ、セルYの値がB1より小さい場合にはセルZにC1の値を表示する、という数式を作りたいのです。 (ちなみにAn、Bn、Cnにはそれぞれ数字が入ります) =IF(AND(X<=A1,Y<=B1),C1,IF(AND(X<=A2,Y<=B2),C2,・・・ AND関数を利用してこのように数式を入れると、途中まではうまくいくのですが、引数が多いため途中からエラーが出てしまいます。 (引数の数は10個以上あります) IF関数とVLOOKUPを組み合わせればいいというところまではわかるのですが、どのように条件設定をすればいいのかがわかりません。 エクセル初心者で恐縮ですが、どなたか詳しい方いらっしゃいましたらご回答よろしくお願いいたします。

  • エクセルIF関数について

    エクセルIF関数について A2セルにA1セルが空白なら空白。8:00ならば、8:00。8:00>ならA3セルに(そのままの値を)表示せよ。 という関数を入れたいのですが、どの関数をどのように定義すれば良いのかわかりません。 IF関数かな?と思ったのですが、IF関数で偽のときは、「別のセルに入力せよ」などというような定義って出来るのでしょうか? どなたか教えてください。

  • エクセルのIF関数について

    エクセルの数式でIFを使って、下記のような複数の条件の時に、それぞれの計算結果を算出する式を作りましたが、単純に条件を並べただけで(IFとAND使用)、式が長くなってしまいます。これを短く出来る式の方法はありますでしょうか?(他の関数を使用する方法など)また、エクセルの関数の数式を応用編まで詳しく調べられるサイトをご存知でしたら教えてください。 (条件の例)R1への式入力 (1)A1がに"A"か"B"かを入力 (2)A1がAで、B2の値がC3以下の時、R1には8、C3より大きい場合は、B2-C3の値を表示 (3)A1がBで、B2の値がC3以下の時、R1には5、C3より大きい場合は、(B2-C3)/2の値を表示 といった条件を満たすものが作成したいです。 ちなみに私が作成した式は、 =IF(AND(A1=A,B2<=C3),8),IF(AND(A1=A,B2>C3),B2-C3,・・・・)って感じです。こんな方法しか無いでしょうか?

  • エクセル 関数で出た値を別の関数で使う場合

    エクセルでのセルである関数で出た値が出ています。 別のセルでそこに出ている値を使って関数を入れたいのですが、その方法がわかりません。 例えば  あるセルにAと入っています。しかし、それはある関数の結果として出ています。別のせるに =if(A4=A,3,if(A4=B,2,if(A4=C,1,"")))と入れています。 でも結果は空欄です。どうしたらいいのでしょうか?

  • Excel IF関数を短くする式を教えて下さい。

    ExcelのIF関数が長くなりすぎて困っています。 短くする方法あれば教えてください。 =IF(A1="",0,IF(A1<4.5,A1,4.5))+IF(B1="",0,IF(B1<4.5,B1,4.5)) のように"4.5より数が小さい場合はセルの値を返し、 4.5より大きい場合は4.5を返す"というのを繰り返し合計していきます。 60セル以上を合計したいのですが、それだと数式が長すぎて・・・ 何か短くする良い式があれば教えて下さい。 よろしくお願いします。

  • 一つのセルでIF関数を二つ使いたい

    二つのセルの値を割って、%を表示させるために、三つ目のセルには 「=1-(B1/A1)」を入れていたのですが、そこに、二つのセルが空白の時にはエラー表示にならないようにIF関数を使い、三つ目のセルは 「=IF(ISBLANK(A1),"",(1-(B1/A1)))」 という数式にしました。 その数式にさらに、もし二つのセルの値が「0」の時には、結果を「0%」として表示させたくて、三つ目の数式の中にもうひとつのIF関数を同時に使いたいのですが、 一つのセル内に、IF関数を使って結果をうまく表示させるには、どのような数式にすれば良いでしょうか??

  • エクセル(Excel2003)のIF関数について

    Excelの数式初心者です。 IF関数でつまづいたので質問させていただきます。 SHEET2のセルA1に、 SHEET1のセルA1が○だったら1、それ以外だったら0を表示させたいです。 SHEET2のセルA1に、 =IF(SHEET1!A1=○,"1","0") と入れましたが、#NAME! とエラーが出てしまいました。 ○や×は認識してくれないということなのでしょうか? 初歩的な質問かもしれませんが、どなたかご教示いただけますと助かります。 Excel2003を使用しております。 よろしくお願い致します。

  • excelのand関数、IF関数について

    エクセルのand関数、IF関数について質問です。 非常に簡単なことで申し訳ないのですが、仮にセルA2が5でかつセルB2が0の時にtrueとしたいときの関数は=and(A2=5,B2=0)であっているでしょうか。また、これをIFの関数で表す場合、=IF(A2=5,IF(B2=0,1,0),0)で同じ意味になるでしょうか?(IFの方は条件を満たす場合を1、満たしていない場合を0としたつもりです) ANDの方の関数は、多分合っていると思うのですが…。エクセルに入力しても、正しい結果が得られなかったので、質問させていただきました。初心者です。つまらない質問で申し訳ないのですが、よろしくお願いします。 

  • IF関数で出た値の計算

    エクセル2003を使っています。いろいろ過去ログをみたのですがわからなかったので質問させてください。 エクセルでIF関数を使って、70以上は”5”、45以上は”4”、30以上は”3”、それ以外は2と設定したのですが、この出た値、”5”、”4”、”3”の値をアベレージ関数なので計算したいのですが、なかなかできません。 どのようにしたらいいのでしょうか?

  • エクセルのif関数で

    エクセルのif関数でこれができるのかわかりませんが、 C1~C10の中の文字列の中にA1と同じ文字列があればB1に「1」を入れ、なければ「2」を入れるということをやりたくて B1のセルに IF(OR(C$1:C$10=A1),1,2) という計算式を入れました。 関数の引数の中の数式の結果では、正しい結果が表示されてるのですが、B1のセルには間違った結果が表示されます。 また、B2以下B20まで計算式をコピーするとB11以下は#VALUE!になってしまいます。 一つ一つを見てみると、どうやらセルに正しく表示されるのはAの行とCの行が=だった場合のみのようです。 #VALUE!が表示されているセルも含めて、数式の結果では正しい結果が出ているのにセルの表示が違っているのが納得できませんが、おそらく何かが間違っているのでしょう。 間違いを教えてください。 よろしくお願いします。

専門家に質問してみよう