- 締切済み
5以下を5に6以上を10に表示したい
小数点以下2桁までの数字を整数にし末尾を5か0に表示したい。 例: 235.12 → 235 456.00 → 460 360.02 → 365 820.00 → 820 779.51 → 780 と 表示したいのですが 一応 =CEILING(A1,5) とすれば大体出来るのですが、微妙に違う表示するときがあるので うまくいかなくて、考え込んでいます。 出来ないのは、755.10の時 760 となり 755 にならないので色々考えましたが わかりません どなたか 良い方法を教えてください。 宜しくお願いします。
- みんなの回答 (8)
- 専門家の回答
みんなの回答
- bunjii
- ベストアンサー率43% (3589/8249)
>小数点以下2桁までの数字を整数にし末尾を5か0に表示したい。 質問の文言に矛盾があるようです。 「CEILING関数は基準値の値より小さい値を繰り上げて基準値の倍数にする」と言う処理なので下記のようになります。 235.12 → 240 456.00 → 460 360.02 → 365 820.00 → 820 779.51 → 780 従って、755.10は、0.10が5未満なので755に5を加算して760となれば正しい処理になります。 「小数点2桁までの数値を」と言う論理は意味を成しません。 元の値を前処理する必要がある場合は小数点以下3桁目を四捨五入/切り上げ/切り捨て等を行えば良いでしょう。 セルに表示されない0.01未満の値が含まれるか否かにより異なった結果になると思いますので、755.00と表示されている値が760.00か755.00になるかの違いであって、755.10は明らかに760になります。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19841)
>そうなんですけど、つまり 0.01~5.99mまでは 5 6.01 ~ 0.00までは 0に表示したいんです では、0.00と6.00は何になるの? 0.00~10.00までのすべてについて漏れなく思考しましょう。思考に抜けがあったら式は書けません。 もしかして、こういう事かな? 0.00→0? 0.01→5 4.99→5 5.00→5 5.01→5 5.99→5 6.00→10? 6.01→10 9.99→10 10.00→10 上記で間違いなければ =CEILING(A1,5)-(AND(MOD(A1,10)>5,MOD(A1,10)<6)*5) で出来ます。
お礼
ありがとうございます。 これで良いのです、色々ご迷惑を皆さんにかけました。 出来ました。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19841)
>235.12 → 235 >360.02 → 365 >755.10の時 760 となり 755 にならない この3つは矛盾していませんか? 235.12が235に「小さくなる」のであれば、360.02も360に「小さくなる」べきです。 755.10が755に「小さくなる」のであれば、360.02も360に「小さくなる」べきです。 360.02が365に「大きくなる」のであれば、235.12も240に「大きくなる」べきです。 360.02が365に「大きくなる」のであれば、755.10も760に「大きくなる」べきです。 貴方が望んでいる変換を、もっと明確にしないといけません。 考えうるパターンは、以下のどれかです。 ・パターン1 5未満は切り捨て 0.00→0 0.01→0 2.49→0 2.50→0 2.51→0 4.99→0 5.00→5 5.01→5 7.49→5 7.50→5 7.51→5 9.99→5 10.00→10 ・パターン2 5未満は切り上げ 0.00→0 0.01→5 2.49→5 2.50→5 2.51→5 4.99→5 5.00→5 5.01→10 7.49→10 7.50→10 7.51→10 9.99→10 10.00→10 ・パターン3 近い方へ切り捨てか切り上げ。中点(2.5、7.5)は切り捨て 0.00→0 0.01→0 2.49→0 2.50→0 2.51→5 4.99→5 5.00→5 5.01→5 7.49→5 7.50→5 7.51→10 9.99→10 10.00→10 ・パターン4 近い方へ切り捨てか切り上げ。中点(2.5、7.5)は切り上げ 0.00→0 0.01→0 2.49→0 2.50→5 2.51→5 4.99→5 5.00→5 5.01→5 7.49→5 7.50→10 7.51→10 9.99→10 10.00→10 ・パターン5 近い方へ切り捨てか切り上げ。中点(2.5、7.5)は近い方の0に切り捨てか切り上げ 0.00→0 0.01→0 2.49→0 2.50→0 2.51→5 4.99→5 5.00→5 5.01→5 7.49→5 7.50→10 7.51→10 9.99→10 10.00→10 以上を踏まえて、 >235.12 → 235 >456.00 → 460 >360.02 → 365 >820.00 → 820 >779.51 → 780 >755.10の時 これらを 235.12 → 5.12 456.00 → 6.00 360.02 → 0.02 820.00 → 0.00 779.51 → 9.51 755.10 → 5.10 に置き換えて、上記の幾つかのパターンに当て嵌めてみましょう。 パターン1 5未満は切り捨て 235.12 → 235 456.00 → 455 360.02 → 360 820.00 → 820 779.51 → 775 755.10 → 755 このパターンは、一部が貴方の希望通りではありません。 パターン2 5未満は切り上げ 235.12 → 240 456.00 → 460 360.02 → 365 820.00 → 820 779.51 → 780 755.10 → 760 このパターンも、一部が貴方の希望通りではありません。 ・パターン3、4、5 近い方へ切り捨てか切り上げ。中点(2.5、7.5)は切り捨て 近い方へ切り捨てか切り上げ。中点(2.5、7.5)は切り上げ 近い方へ切り捨てか切り上げ。中点(2.5、7.5)は近い方の0に切り捨てか切り上げ 235.12 → 235 456.00 → 455 360.02 → 360 820.00 → 820 779.51 → 780 755.10 → 755 このパターンも、一部が貴方の希望通りではありません。 結論は「貴方が希望する変換法則は、数学的な法則が無いので、変換は不可能」です。 まず、百の位、十の位は、思考の邪魔になるので、削って考えて下さい。 一の位と小数点だけに単純化して 0.00→? 0.01→? 2.49→? 2.50→? 2.51→? 4.99→? 5.00→?(0.00→?と同じ) 5.01→?(0.01→?と同じ) 7.49→?(2.49→?と同じ) 7.50→?(2.50→?と同じ) 7.51→?(2.51→?と同じ) 9.99→?(4.99→?と同じ) 10.00→?(0.00→?と同じ) のそれぞれについて、0、5、10のどれになるか、良く考えて下さい。 基本的に、5.01は0.01と同じ、切り捨て、切り上げの動きをしないといけません。 「0.01は切り上げ、5.01は切り捨て」のように、統一性のない動きは「間違い」です。 同様に、2.49は7.49と同じ、切り捨て、切り上げの動きをしないといけません。 同様に、2.51は7.51と同じ、切り捨て、切り上げの動きをしないといけません。 同様に、4.99は9.99と同じ、切り捨て、切り上げの動きをしないといけません。 また、0.01が切り上げなら、2.49も2.51も4.99も切り上げにしないといけません。 同様に、0.01が切り捨てなら、2.49も2.51も4.99も切り捨てにしないといけません。 一部だけ切り上げで、一部だけ切り捨て、のように、統一性のない動きは「間違い」です。 貴方がやろうとしている変換は「間違いだらけ」なので、実現不可能です。
お礼
説明不足で申し訳ありませんでした。 いろんな人の考えを混ぜ合わせて考えたらできました。 ご迷惑をおかけして申し訳ありませんでした ありがとうございました
- okg00
- ベストアンサー率39% (1322/3338)
=int(A1+0.4)
お礼
これでも微妙に違っているのです。 変な質問してすみません 皆さんからも 考え方がおかしいとも言われました。 ありがとうございました
- miasansan
- ベストアンサー率29% (29/99)
Ceiling関数と微妙に違う結果を表示させたいというご質問ですね 書かれている例では、表示させたいルールが曖昧なように見えます。 Ceilingは切り上げなので、235.12→240となるはずです。また、360.02→365 はOKで、それより近い 755.10 →760はダメ というところも よくわかりません。 どう表示させたいのか、確認されてみてはいかがでしょうか?
お礼
解りました ありがとうございます
- mshr1962
- ベストアンサー率39% (7417/18945)
要は5.01~5.99の時を考慮すればいいので =CEILING(A1-(MOD(A1,10)>5)*0.99,5)
お礼
考え方はそれで良かったです。 色々考えていたら解決しました ありがとうございます。
- okg00
- ベストアンサー率39% (1322/3338)
=ceiling(int(A1),5) でも矛盾してませんか? >360.02 → 365 と >755.10→755 はルールが一定していませんが。
お礼
色々試してみたんですけど 確実な答えが出る方法がないのかも知れませんね。 ありがとうございます
補足
そうなんですけど、つまり 0.01~5.99mまでは 5 6.01 ~ 0.00までは 0 に表示したいんです
- t_ohta
- ベストアンサー率38% (5242/13714)
=CEILING(INT(A1),5)
お礼
ありがとうございます
補足
これでは 微妙に 答えが違う時があるのです。 すみません
お礼
おっしゃる通りです 不可能に近い事でしたが何とかできました。 ありがとうございます