• ベストアンサー

EXCELLでセル内の数値の丸める

現在EXCELでセル内の数値を丸めたいと思っています。 関数の“ROUND”を使用すると四捨五入になり例えば“12.49”と入力すると整数に丸める場合に“12”、また“12.50”と入力すると“13”、すなわち“12.50”以上の数値は切り上げられます。 よって“12.51”も“13”になります。 私はセルに入力した数値の小数点以下の数字が“##.50”は切捨て、“##.51”は切り上げとしたいのですが... つまり“12.50”と入力すると“12”と表示され、“12.51”と入力すると“13”と表示するように設定したい。 これが可能かどうか御存じ無いでしょうか? もし、可能であればそのやり方をお教え願いたいです。 よろしくお願いいたします。

質問者が選んだベストアンサー

  • ベストアンサー
回答No.2

A1にデータを入れるとして… =round($a1-0.01,0)でどうでしょう? A1に ##.50とあれば、##.49になり繰下げ A1に ##.51とあれば、##.50になり繰上げ ただし、##.501などは、繰下げになりますが…

YujiYosuke
質問者

補足

ありがとうございます。 試してみましたが、良さそうです。 返答いただいて申し訳ないのですが、 入力したセル内のデータ自身を上記の条件で丸める事って出来ます?

すると、全ての回答が全文表示されます。

その他の回答 (7)

  • mshr1962
  • ベストアンサー率39% (7417/18945)
回答No.8

関数で行うなら =ROUNDDOWN(ROUNDUP(A1*2,0)/2,0) 2倍にした数値を切り上げて2で割ることで 0.49→0.50 0.50→0.50 0.51→1.00 となり、これを切り捨てれば0.5は0になります。 >入力したセル内のデータ自身を上記の条件で丸める事って出来ます? 数式や表示形式では直接は無理です。 #7のかたの言われるようにシートのチェンジイベントで行うしかありません

YujiYosuke
質問者

お礼

返答ありがとうございます。 これは判りました。

すると、全ての回答が全文表示されます。
  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.7

マクロで考えて見ました。ワークシートのチェンジイベントで行っています Alt + F11 を押して、VBE のウィンドウを出します メニューから表示 → プロジェクトエクスプローラ をクリックします。 ウィンドウが開きますので、 処理したいシート名をダブルクリックします。 新たなウィンドウが開きますので こんな風になると思います(二番目の画面や5番目の画面)。 http://www5b.biglobe.ne.jp/~mebaru/ExcelVBA/ExcelVBA022.htm そこに下記をコピペ Private Sub Worksheet_Change(ByVal Target As Range) If Target.Column <> 1 Then Exit Sub  '※1 If IsNumeric(Target.Value) = False Then Exit Sub  '※2 If Target.Value <> Empty Then  '変換前が空でなかったら処理 Target.Value = Int(Target.Value) - ((Target.Value - Int(Target.Value)) > 0.5) '※3 End If End Sub 以下は説明です ※1は、Column が 1(A列)でなければ何もしない。適宜変えて下さい。 ※2は、数値以外のものを入力した場合に何もしない。 ※3は、((Target.Value - Int(Target.Value)) > 0.5)の部分で 入力値の小数部分が0.5よりも大きかったら、-1が、でなければ0が成り立ちます。 これを整数部分 Int(Target.Value)に足しています -(-1)→ +1 これで入力中に変換されます。

YujiYosuke
質問者

お礼

返答ありがとうございます。 こればちょっと私には難しかったです。

すると、全ての回答が全文表示されます。
  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.6

#4&5の やっつけ仕事で・・・・ お詫びに 小数点以下の値を抽出 0.5 で条件判断させたのが =IF(A1-INT(A1)<=0.5,ROUNDDOWN(A1,0),ROUNDUP(A1,0))

YujiYosuke
質問者

お礼

返答ありがとうございます。 なるほど!これだと0.5は切り捨てとなり、0.5より大きい数値は切り上げとなるのですね。 参考になりました。

すると、全ての回答が全文表示されます。
  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.5

#4です。勘違いでした。先の回答は、無視してください。 四捨五入と同じことをやっちゃいました(汗&ポリポリ)

すると、全ての回答が全文表示されます。
  • redowl
  • ベストアンサー率43% (2140/4926)
回答No.4

これなら・・・・・どうでしょう。 A1に数値データのとき =ROUNDUP(FLOOR(A1,0.5),0) 空白セル も考慮するなら =IF(A1="","",ROUNDUP(FLOOR(A1,0.5),0))

すると、全ての回答が全文表示されます。
回答No.3

それは無理です。 関数を書いたセル上に、数値をいれてしまうと 関数が消えてしまいます。

YujiYosuke
質問者

お礼

ありがとうございました。 非常に判りやすくて簡単なやり方です。 確かに5.509999などは5になってしまいますね。

すると、全ての回答が全文表示されます。
  • kspring
  • ベストアンサー率28% (2/7)
回答No.1

たとえばですが(下記セルをA1などと略します) 「*」からコメント 「:」から右が計算式 A1:    *入力セル A2:ROUNDDOWN(A1,0) A3:=IF((A1-A2)=0.5,0.01,0) A4:==ROUND(A1+A3,0)   *出力セル 見たいな感じでどうでしょう? 短縮すると =ROUND(A4+(IF((A4-(ROUNDDOWN(A4,0)))=0.5,0.01,0)),0) こんな感じです。 解説すると 入力セルの数値をA2で切り捨てし、 A3ではA1からA2を引くことで小数点のみ取得 小数点以下が0.5の場合だけA4のROUND関数内に0.01足される。

YujiYosuke
質問者

お礼

そう言う考え方があるのですね。ありがとうございました。

YujiYosuke
質問者

補足

返答ありがとうございました。 出来ればセルが使用セルが少ない方が助かります。

すると、全ての回答が全文表示されます。

関連するQ&A

専門家に質問してみよう