- 締切済み
Excel 関数について、教えて下さい
J70セルの値が小数点以下(例えば7427.1)の場合に、切り下げてK70セルに表示させるため=ROUNDDOWN(J70,0)と設定し7427と表示されうまくいったのですが、J70セルの値が2606.0の場合K70セルに、なぜか2605と表示されてしまいます。 要はJ70セルの値が小数点第1位が「0」の場合(例えば2606.0)、K70セルの表示は2606、小数点第1位が「1~9」の場合(例えば2606.1)、K70セルの表示は2606としたいのですが、設定が解りません。 お知恵を拝借させて下さい。
- みんなの回答 (5)
- 専門家の回答
みんなの回答
=ROUNDDOWN(J70,0) を例えば次式に書き替えてみてください。 =ROUNDDOWN(ROUND(J70,8),0) 小数点を含む計算の際に行なう私の常套手段です。 貴方の場合は「8」は 7 以下の数値でもOKかも。取り扱う数値の有効桁数以上の数値であればよろしい。
- tsubuyuki
- ベストアンサー率45% (699/1545)
元の数字が 「2606.0」と表示されているけど、実は「2605.9・・・・・」で、 セルの幅(あるいは表示形式による小数点以下表示桁数操作)などによって 小数第2位で四捨五入されて「2606.0」と“見えているだけ”状態のような気がします。 <検証内容> ・任意セルに「=ROUNDDOWN(2606.0,0)」 =>「2606.0」が返る=>正常 ・A1セルに「2606.0」(直接入力)、B1セルに「=ROUNDDOWN(A1,0)」 =>B1セルに「2606.0」が返る=>正常 ・A1セルに「2605.999」(直接入力し、表示形式で小数1位まで表示) 画面での表示値「2606.0」(数式バー上は「2605.999」) B1セルに「=ROUNDDOWN(A1,0)」 =>B1セルに「2605.0」が返る=>関数としては正常 つまり今回、エクセルのROUNDDOWN関数は正常な挙動を見せている・・という事。 まずはデータの見直しをしてみましょうね。
- K Kazz(@JazzCorp)
- ベストアンサー率31% (549/1751)
=CEILING(J70,1) コレに近いと思うが、 例えば、J70の書式が数値で少数1桁になっている場合、実数が1.05でも1.1に見えているわけだね。 そのアタリの細かいところは調整が必要かも?
- kagakusuki
- ベストアンサー率51% (2610/5101)
尚、もしも、「小数点以下を切り捨てる」のではなく、「小数点以下が○○.95以上の場合は小数点以下第1位を切り上げ、○○.95未満の場合は小数点以下第1位を切り捨て」の様にされたいのでしたら、次の様な関数となります。 =ROUNDDOWN(ROUND(J70,1),0) =ROUNDDOWN(J70+0.05,0) =int(ROUND(J70,1)) =int(J70+0.05)
- kagakusuki
- ベストアンサー率51% (2610/5101)
>J70セルの値が2606.0の場合K70セルに、なぜか2605と表示されてしまいます。 それは、J70セルの本当の値が2605.95~2605.99999999・・・・の範囲内の数値であったものが、J70セルの表示可能桁数が小数点以下第1位までであったため、小数点以下第2位の処で四捨五入した値である2606.0が表示されていただけで、実際の値は2606.0未満なので、K70セルには小数点以下を切り捨てた2605が表示されたものと思われます。 ですから、それはその設定のままで、 >J70セルの値が小数点第1位が「0」の場合(例えば2606.0)、K70セルの表示は2606、小数点第1位が「1~9」の場合(例えば2606.1)、K70セルの表示は2606としたい というという条件を満たしている事になります。 試しに、J70セルの関数や値をどこか適当なセルに、バックアップとしてコピーして取っておいた上で、J70セルに2605.95などと入力してみて下さい。 おそらく、2605.9ではなく、2606.0と表示される筈です。
お礼
mike g 様 有難うございました。 早速試したところうまくゆきました。 このような解決方法は私も頭に入れ、使用するように致します。