- ベストアンサー
エクセル 細かい条件での切り上げ切り捨て
計算した結果(=A1*0.9)の1の位が 0~2=切り捨て 3~7=5 8~9=切り上げ という風に表示したいのですが、どうすればいいでしょう。
- みんなの回答 (7)
- 専門家の回答
質問者が選んだベストアンサー
No.2です。 =IF(MOD(INT(A1*0.9),5)<3,INT(A1*0.18)*5,INT(A1*0.18)*5+5) もう少しシンプルになったら再投稿します。
その他の回答 (6)
- jindon
- ベストアンサー率43% (50/116)
ツール→アドイン→分析ツールにチェックで OK =MROUND(A1*9,"5")
お礼
ありがとうございます。 現在アドインがインストールされておらず、 残念ながらすぐに結果を確認できないのですが、 インストール出来次第、この関数使ってみます。 まずはお礼まで。ありがとうございました。
- imogasi
- ベストアンサー率27% (4737/17069)
ユーザー関数を作ってみました。 ツール-マクロ-VBEで出てくる画面の、メニューで 挿入-標準モジュールをクリックして出てくる画面において、下記をコピーし貼りつける。 Function marume(a) n = Int(Int(a) Mod 10) Select Case n Case Is <= 2 m = 0 Case 3 To 7 m = 5 Case Is >= 8 m = 10 End Select marume = 10 * Int(a / 10) + m End Function ワークシートに戻って、A列にデータがあるとして B1に=marume(A1)と入れて下方向に複写する。 (例データ) (A) (B列) 23.9 25 134.5 135 0.5 0 1238.4 1240 129.44 130 121.35 120 1222.97 1220 2333.67 2335
お礼
やってみました。できました! 構文を読んでも私には意味ができませんが(昔勉強したのに。。。)、わざわざ作ってくださり、ありがとうございました。
- SAKURAMYLOVE
- ベストアンサー率30% (162/533)
#4です。 説明が足りませんでした。 セルB7に=A1*0.9が入っています(汗!!)
- SAKURAMYLOVE
- ベストアンサー率30% (162/533)
=FLOOR(B7+2,5) では、どうですか。
お礼
すごい!できました。 関数って、やっぱり数学的頭脳がないと使いこなせないなーと思いました。(どうして+2なんだろうと考え込みました)ありがとうございました。
- arukamun
- ベストアンサー率35% (842/2394)
=IF(MOD(INT(A1*0.9),5)<3,INT(A1*0.9)-MOD(INT(A1*0.9),5),INT(A1*0.9)-MOD(INT(A1*0.9),5)+5) もう少しシンプルになるか考えて、見つかれば再投稿しますね。
- s_yoshi_6
- ベストアンサー率73% (1113/1519)
=A1*0.9 の代わりに =IF(INT(MOD(A1*0.9,10))<=2,ROUNDDOWN(A1*0.9,-1),IF(INT(MOD(A1*0.9,10))<=7,ROUNDDOWN(A1*0.9,-1)+5,ROUNDUP(A1*0.9,-1))) とされてはいかがでしょうか。 A1*0.9を10で割った余りの整数部分(つまり1の位)について場合分けをしています。
お礼
早速の回答ありがとうございます。 お礼が遅くなり申し訳ございません。 こういう関数が思いつくなんて、すごいですね。 とても参考になりました。 ありがとうございました。
お礼
お返事おそくなりました。 2度の回答ありがとうございます。 私もIF文で、、、と考えたのですが、この式にはまったくたどり着きませんでした。 これだと計算結果を表示させるセルが不要でいいですね。 ありがとうございました。