- ベストアンサー
エクセルの計算式で割り切れるか判定したい
こんにちわ。 エクセルにて割り算の計算式がA1/B1とC列に入力されています。 2行目以降はA2/B2といった感じで10行まで入力されています。 D列にC列が割り切れているか割り切れていないか判定をしたいのですが、どのように計算式を組めばいいでしょうか?
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
=IF(MOD(A1,B1)=0,"割り切れる","割り切れない") という感じで。
その他の回答 (3)
- Wendy02
- ベストアンサー率57% (3570/6232)
こんばんは。 >小数点でも最終的に割り切れれば割り切れるにしたいのですが。。。 他にやり方はあるようですが、大掛かりになりそうな気がします。簡単に出す方法は、こんな方法です。 '標準モジュール Function divremain(a As Currency, b As Currency, k As Integer) As Currency 'k は桁 divremain = (a * 10 ^ (k - 1)) / b - Int((a * 10 ^ (k - 1)) / b) End Function 手動になってしまいますが、k に整数を入れていき、ずっと数字が出てきたり、同じ数字の組み合わせが出てきたら、無限小数になります。桁は、18桁までで、それ以上ははっきり出来ません。 例 A1:=divremain(B1,C1,D1) B1: 1 C1: 7 D1: =ROW() これで、フィルをドラッグして、18行目までコピーします。 そうすると、1,7,13行目に、0.1429 と同じ数字(循環節)が出てきますから、無限小数と分かります。今の所、手動でしか判定できません。ただし、桁が、18までで、0にならなければ、おそらくは、無限小数ではないかと思います。
お礼
大変参考になりました。 ありがとうございました。
- grumpy_the_dwarf
- ベストアンサー率48% (1628/3337)
要するに無限小数になることの判定ですね。 Excelはたかだか15桁程度の精度しかないので、20桁目で割り切れる ようなものの判定が出来ません。どの桁までで諦めるかの指定が必 要です。たとえば14桁だとすると、 =(round(AC1,14)*B1)=A1 みたいな感じですね。1/16834は正しく割り切れると判定できます が、1/32768は桁数が不足して失敗します。
=MOD(A1,B1)=0 =NOT(MOD(A1,B1))
補足
早速、ご回答ありがとうございます。 申し訳ありません。説明不足でした。 この関数だと整数で割り切れるか割り切れないかと判定になりますが、小数点でも最終的に割り切れれば割り切れるにしたいのですが。。。 割り切れないと表示される場合は、少数点以下でも完全に割り切れない場合になります。