プロが教える店舗&オフィスのセキュリティ対策術

単価帳を作成しています。
計算式で得られた一つのセルの「解」に対し、
計算結果が3ケタだったら5円単位の二捨三入七捨八入、
計算結果が4ケタだったら10円単位の四捨五入
計算結果が5ケタだったら50円単位の二〇捨三〇入七〇捨八〇入(表現おかしいかも)
となる計算式を検討して(探して)いますが・・・
お手上げです。わかりません。
どなたか、関数を含めて計算式が分かる方がいれば教えてください。

A 回答 (5件)

負数に対応するのと偶数桁と奇数桁で反応を加えてみました。


(あえて、LOG関数を使う理由というものはないのですが)
100より以下は0にすることにしました。

=IF(ABS(A1)<100,0,SIGN(A1)*CHOOSE(MOD(INT(LOG(ABS(A1))),2)+1,CEILING(ABS(A1)-2*10^INT(ABS(LOG(A1))/2-1),5*10^INT(ABS(LOG(A1))/2-1)),ROUND(ABS(A1),-LEN(ABS(A1))+3)))
    • good
    • 0
この回答へのお礼

ありがとうございます。長いけど素晴らしい式だと思います。

お礼日時:2017/05/31 15:45

No.2の回答者です。



No.2で回答した式は5桁以上は同じにしていますので、5桁と6桁以上を
分けるようにするだけですね。
3桁以内 A1<1000,MROUND(A1,5)
4桁の場合 A1<10000,ROUND(A1,-1)
5桁の場合 A1<100000,MROUND(A1,50)
6桁以上 ROUND(A1,-3)

これを組み合わせると
 =IF(A1<1000,MROUND(A1,5),IF(A1<10000,ROUND(A1,-1),IF(A1<100000,MROUND(A1,50),ROUND(A1,-3))))
になります。
    • good
    • 0
この回答へのお礼

再びの投稿ありがとうございます。6ケタ123,456で計算させたら、100円単位にはならなかったので、少しいじりましたが、ようやく希望する単価帳ができました。

お礼日時:2017/05/31 15:45

桁数による条件分岐


=CHOOSE(INT(LOG(ABS(A1)))+1,"1桁","2桁",ROUND(A1*2,-1)/2,ROUND(A1,-1),ROUND(A1*2,-2)/2,"6桁")
    • good
    • 0
この回答へのお礼

ありがとうございます。

お礼日時:2017/05/30 16:05

理解していないかもしれませんが。


こちら↓の計算式のようなものでしょうか?
 =IF(A1<1000,MROUND(A1,5),IF(A1<10000,ROUND(A1,-1),MROUND(A1,50)))
3桁未満と4桁、5桁以上で計算式を指定する方法です。
http://www.eurus.dti.ne.jp/~yoneyama/Excel/kansu …
    • good
    • 0
この回答へのお礼

ありがとうございます。意を得た回答です。
一番中身が理解できた計算式でした。
おかげさまで単価帳が完成しました。
あと、6ケタなら100円単位にする計算式にしなくちゃ・・・
ほとんど10万円単位の商品は弊社にはないのですが、念のため計算式を作りたいです。
IF(A1<10000,ROUND(A1,-1),の次にIF(A1<100000,ROUND(A1,-2)を挿入しても、
よろしいでしょうか?

お礼日時:2017/05/30 16:04

説明が意味不明なので 具体例をとにかくたくさん書いて「こう


なるようにしたい」と書いた方がいいかと思います。
    • good
    • 0

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!