• ベストアンサー

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% (7418/18948)
回答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

  • 範囲指定した箇所の数値を一括で四捨五入したい

    EXCELのマクロで 範囲指定をしたセルの数値(数式ではなく、数字です)を一括で四捨五入(小数点第3位を四捨五入(小数点第2まで表示))した数値を置き換えるマクロを知りたいのですが、調べられずに困っています。 (roundで四捨五入して、それを値だけ貼り付ければ・・と言うことではなく、あくまでもマクロでの方法を教えてください) よろしくお願いいたします。 バージョンEXCEL2000

  • エクセルの表示形式で、10の桁で四捨五入した値を表示させるには?

    エクセルの表で、数字を四捨五入する方法にはROUND関数がありますが、関数で変換すると値そのものが変わってしまいます。 値はそのままで四捨五入した数字で表す方法を教えてください。 小数や一桁の整数までの四捨五入であれば、セルの書式設定・表示形式を「数値」にして小数点以下の桁数を指定してやれば簡単ですが、10の桁以上で丸めて表示させる方法を探しています。 例えば、9876→9880と表示させる書式設定の方法です。 値は計算に使うので、ROUND関数で実際に丸めたくないのです。 ユーザ定義を組み合わせるなどで、うまくできませんか?

  • 小数点以下の数字の桁数表示について

    VB6.0で小数点以下の数値が0の場合でも指定した桁数で0も表示するにはどのようにしたらよいですか? 例えば、四捨五入のROUND(0.195000,4)のとき返ってくる数値が「0.195」となり最後の0が表示されません。(以下は4桁表示したいのに) (小数点以下第5位が5なら切り上げで最後に1が表示されますが) エクセルだとセルの書式設定で表示桁数を設定するだけだったのですが。 FIXED関数、TEXT関数はVB6.0では使えないのですよね? VB6.0に詳しい方よろしくお願いします。お手数です。

  • エクセルで関数を使用せず、書式設定のみで小数点以下の切り上げをするには

    ROUND関数等を利用した別セルに計算式に入れて切り上げを行うではなく、そのセルに 11.1 と入力された場合は小数点以下をすべて切り上げとなり、12 と表示させる事は可能なのでしょうか? 通常は小数点以下の桁切り上げだと四捨五入になってしまいます。書式設定のユーザ定義で行うとしたのすが、うまくいきませんでした。ご存知の方是非よろしくお願い致します。

  • exelの件

    ekelのセルに例えば98.345という数字(その他セルにも少数点のはいった数字が羅列しているとします)があったとします。この数字を小数点以下を切り上げにし、整数にするとき、どのような操作をすればよいでしょうか?(四捨五入はできましたが切り上げができません…)

  • excel関数で四捨五入以外の切り捨て、切り上げ

    excelの関数で四捨五入以外の切り捨て切り上げはどうすればいいでしょうか。 小数点以下を切り上げ・切り捨てしたいのですが、 .5までは切り捨てにしたいのです。.51だと切り上げ。 ROUNDだと.5から切り上げになりますよね。 よろしくお願いいたします。

  • エクセル関数を教えて下さい。

    ROUND関数で除算して、小数点以下を四捨五入させたセル(ROUND(A1/1.05、1))を合計する際、ROUND関数で求めた画面上の整数の合計をさせる関数を教えて下さい。SUM関数を使用すると、除算した小数点以下の数字にて集計されます。

  • エクセルの数値小数点以下の扱い

    エクセルで割り切れない小数点以下の数字はどのように扱われるのでしょうか?ツールバーの桁上げ下げでは表示されていない部分は四捨五入されるが、表示のみで実際は数値データとしては存在していると聞きました。セルの書式設定で表示を変えても同じ状態なのでしょうか?又、ROUND関数を使う以外では表示のみの問題でコンピュータ上存在しうる端数は存在すると考えてよろしいのでしょうか?

  • エクセルで平均の答えが1つのセルだけできません

    エクセル2007で表を作成して平均を求めようとしてます。 7人の国語の試験の平均を四捨五入して整数で求めたいと思っています。 ラウンド関数をだして=AVERAGE(7人の点数をドラッグ)して桁数を0とすると 数学・英語・理科・社会はできるのですが、国語だけができません。 セルの書式設定で表示形式で分類の数値は小数点以下の桁数は0にしてあります。 どこが悪くてこのようになるのかわかりません。よろしくお願いいたします。

  • エクセルのセルを整数化する方法

    宜しくお願いします。 エクセルで20列100行20シートほどのブック形式の表があります。 表内の数値を小数点1桁目で四捨五入をして整数化したいと思います。(表示形式で見た目上の整数化でなく、実際の数値として整数化したい。) 表内は複雑に計算式が入っていて、一部は他のブックからリンクが張ってあります。 また、1部のセルはパーセント(%)表示になっていて、そのセルに関しては何も変更をしないというのが条件です。 セルをひとつずつROUND関数などを使っての変換では気が遠くなります。 何か簡単に変換できる方法はないでしょうか。 期限が本日中で本当に困っています。

専門家に質問してみよう