• 締切済み

excel 数値の桁数によって切捨てと切上を変更

少し前にExcelで、 『123→120  1234→1230 12345→12300  123456→123000 の様に、3桁と4桁は下1桁を0に、 5桁は下2桁を00に、6桁は下3桁を000に するにはどうすれば良いでしょうか。因みに、数値には1桁、2桁と7桁以上はありません。』 と質問させて頂きましたところ、 『(1) =IF(A1="","",ROUNDDOWN(A1,3-LEN(TEXT(A1,"0000")))) (2) =ROUNDDOWN(A1,IF(LEN(A1)>4,3-LEN(A1),-1))』 と2つの名回答を頂きました。 これに加えて、123→130 と3桁のみ切り上げ、または3桁のみ上記の関数で切り下げた結果に10足すにはどうすれば良いでしょうか。 業務軽減の為、何卒宜しくお願い致します。

みんなの回答

  • kagakusuki
  • ベストアンサー率51% (2610/5101)
回答No.3

 元の値が、小数点以下が存在する場合や、マイナスの場合にも対応し、 2桁以下の場合や文字列の場合でも、エラーや誤った値を表示しない方法です。 =IF(ISERROR(1/(ABS(A1)>=100)),"",IF(ABS(A1)<1000,ROUNDUP(A1,-1),ROUNDDOWN(A1,2-INT(LOG10(ABS(A1))))))  処で、 >3桁のみ上記の関数で切り下げた結果に10足す という方法では、100の場合には110になってしまいますから、上記の関数や、前の回答者様達の御回答の様に、ROUNDUP関数を使用した方が良いと思います。

回答No.2

桁数限定なので桁ごとに条件を考えてはいかが? =CHOOSE(INT(LOG(ABS(A1)))-1,ROUNDUP(A1,-1),ROUNDDOWN(A1,-1), ROUNDDOWN(A1,-2),ROUNDDOWN(A1,-3),ROUNDDOWN(A1,-4)) 負の場合も考慮してあります

  • keithin
  • ベストアンサー率66% (5278/7941)
回答No.1

切り上げと切り捨ての違う関数(または計算)なので,最初から素直にIFで仕分けた方が簡単です。 =IF(A1="","",IF(A1<1000,RONDUP(A1,-1),RONDDOWN(A1,3-LEN(A1))) なお,「10足す」と例えば 120 → 120 → 130 などのように,多分間違った結果になります。 それともこっちがホントにヤリタかった事ですか?

hiroataru
質問者

お礼

早速のご回答ありがとうございます。 「10足す」と言う質問は余分でした。 申しわけございません。 3桁だけ切り上げにする理由ですが、 私が扱っている商品の性格上、 同一商品であれば、10個入でも100個入りでも、 1個当たりの定価が同じになります。 例えば、一個が20円定価の商品の場合、 10個入り210円、100個入り2100円になります。 この定価に対して全ての商品に一律31%の値引きをして販売する場合、 10個入り販売価136円、100個入り1360円になり これを1桁目切り下げにすると各130円、1360円で 小包装である10個入りの方が一個当りの単価が安くなるのを避ける為です。 長々と書いてしまいましたが、ご回答頂いた方法は既に実践に役立てております。 ありがとうございました。