• ベストアンサー

エクセルで計算式を作りたい

エクセルで[C列]に<A列/B列>の計算の結果、割り切れる場合はその数字を、割り切れない場合はNGやエラーといった表示が出て識別できるよう式を入れたいのですが、どのように計算式を組めばいいでしょうか? [C列]の計算結果は整数だけでなく少数でも割り切れれば数字が入るようにしたいです。 R/C [A]    [B]   [C]  [1] 金額   個入  単価  [2] 15,000  145   NG  [3] 15,000  150   100  [4] 15,000  144   NG

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

  • ベストアンサー
  • don9don9
  • ベストアンサー率47% (299/624)
回答No.2

小数でも割り切れれば、というのが難しいですね。 整数で割り切れるかどうかであればMOD関数を使って =IF(MOD(A2,B2)=0,A2/B2,"NG") とし、A2/B2の余りが0なら割り切れる、とできるのですが。 計算しているのが「単価」なので、小数点以下で必要なのはせいぜい2桁くらいだと思います。 そこで、仮に小数点以下の有効桁数を2桁として、A2/B2を小数点以下2桁に切り捨てた値と切り上げた値とを比較して一致すれば割り切れる、としてみてはいかがでしょうか。 =IF(ROUNDDOWN(A2/B2,2)=ROUNDUP(A2/B2,2),A2/B2,"NG")

monozukuri30
質問者

お礼

できました!! とても分かりやすくてありがとうございました!!

その他の回答 (2)

回答No.3

MOD関数は、計算誤差(*)の影響を受けることがあります。そこで、次式のように、計算誤差を発生させないくらいの適切な桁数の整数に変換した上で、適用します。 =if(mod(a2*10^5,b2*10^5),"NG",a2/b2) *Excelでは、15桁程度を超える大きな数と、小数点以下の桁数が15桁程度を超える小数で発生

monozukuri30
質問者

お礼

ありがとうございます。 関数、もっと勉強したいと思います。

  • tom04
  • ベストアンサー率49% (2537/5117)
回答No.1

こんにちは! 一例です。 >[C列]の計算結果は整数だけでなく少数でも割り切れれば数字が入るようにしたいです とありますので、とりあえず循環小数になった場合に「NG」としてみました。 C2セルに =IF(COUNTBLANK(A2:B2),"",IF(LEN(MOD(A2/B2,1))=17,"NG",A2/B2)) としてオートフィルで下へコピーではどうでしょうか? ※ 考え方としてExcelで表示できる最大桁数(15桁)の場合は循環小数としています。 ※ 上記数式内は17文字としていますが、小数点以下数値の頭部分「0.」の2文字があるので「17」としています。 他に良い方法があればごめんなさいね。m(_ _)m

monozukuri30
質問者

お礼

ありがとうございます。 関数、難しいです。でももっと勉強したいと思いました。 ありがとうございました。

関連するQ&A

専門家に質問してみよう