- ベストアンサー
エクセルで数値を切り上げたい
エクセルでAの列の数値を切り上げにしたいのですがやり方が分かりません。 関数のROUNDUPを使ってAの列の数値の切り上げたものをBの列に表示させることはできるのですが 初めからAの列だけ切り上げに設定するにはどうしたらいいのでしょうか。
- みんなの回答 (6)
- 専門家の回答
質問者が選んだベストアンサー
下記は間違っているでしょうか。現在の表計算の根本問題に関係していると思う件です。時々下記(2)のケースで不思議な質問を見うけます。 原則1**自己セル参照は不可。 原則2**値を入力すると、既設定の演算式は壊れその効果はない。 質問の状況とか内容が理解できませんので、逆に質問します。 (1)既にA列に値が入力済みなのか (2)今からA列に値を入力するのか。 まず(1)のケースなら、「=F(A1)」(ここではF()はエクセルで使える関数のどれかを示す。)は自己参照になり、エラーになり不可能。しかし使っていない列(X列と仮定)を一時的に使うことを気分的に許すなら、X列に「=F(A1)」と式を入れ、結果の数値だけ をA列に複写すれば良い。X列の値は抹消しておく。 (2)のケースなら、A列に前もって関数式「=F(A1)」を入れておいて、「A列に直接値を入力する」ことはしても、「=F(A1)」の効果が出ない。式が壊れてしまうはずだから。この点マイクロソフトが改良してくれれば、便利なケースもあると思うが。 但し、使用者の気分が許せば、使ってない列X列に、値を入力しA列に式「=F(X1)」を入れておけば、A列は思うどうりの値になる。そしてA列を自己列複写するか演算式を抹消しておけば良い。X列も「その後」抹消しておく。 (表示形式の利用) (3)但し(1)、(2)の場合上記とは言ったものの、「表示形式」を適当に選んで設定すると、見かけ上は所期の結果を得られると言うケースがあり得る。 (VBAの利用) (4)もう一つ、VBAでプログラムを組んで、A列の入力というイベント(プログラムが走り出すきっかけ)が起こったとき、イベントプロシージュアー内で、F(A1)に当たるプログラムステップを入れると、例えば Cells(1,1).Value=F(Cells(1,1).Value)+Yなどが記述できる。 一般の変数ならどんな(?)言語でも「A1=3*A1+1」とかできるのが当たり前なのだが。
その他の回答 (5)
- nishi6
- ベストアンサー率67% (869/1280)
入力したセルの値を直接書き換えるのは (1)見た目でよければ、セルの書式設定を使う。ただし、『切り上げ』は見たことがありませんね。 (2)以下はマクロを使う方法です。 Sheet1で行う例です。 ツール→マクロ→Visual Basic Editor でVBE画面に移り、 表示→プロジェクトエクスプローラでプロジェクトエクスプローラを表示します。 プロジェクトエクスプローラのSheet1をダブルクリック。出てきたコードウインドウに下記マクロをコピーして貼り付けます。 『'*****』をつけた部分の"A:A"が入力値を切り上げする範囲です。"A2:B10"とかに変更すれば、このセル範囲だけの機能になります。 ここから ↓ Private Sub Worksheet_Change(ByVal Target As Range) Dim rgCalc As Range '計算する範囲 Dim rg As Range '計算するセル On Error GoTo ErrorHandler '計算する範囲=変更範囲とA列の共通セル Set rgCalc = Intersect(Target, Range("A:A")) '***** Application.EnableEvents = False If Not rgCalc Is Nothing Then For Each rg In rgCalc If rg <> "" Then 'Targetを削除した時はなにもしない rg = Application.RoundUp(rg, 0) End If Next End If Application.EnableEvents = True Exit Sub ErrorHandler: Application.EnableEvents = True End Sub
お礼
回答ありがとうございます! あぁー、やっぱりとても難しいことなんですかねー。 素人の私には全然分からないですー ごめんなさい_(._.)_
- misatoanna
- ベストアンサー率58% (528/896)
#3です。 ごめんなさい、単なる 0 の設定で四捨五入できますね。
- misatoanna
- ベストアンサー率58% (528/896)
ご質問は、例えば A1 に 単に 3.4 と入力すれば 3 に、3.7 なら 4 として表示させたい、ということでしょうか。 もしそうなら、A1 の表示形式を、ユーザー定義で 0"" としてみてください。 72 を 70 にするのはわかりかねますが‥‥。
お礼
回答ありがとうございます! それだと四捨五入はできましたが切り上げにならないんです~。3.4でも4にしたいんです。
- gomagoma
- ベストアンサー率20% (4/20)
どのような数値計算をなさっているのかが分からないのですが、ROUNDUPで同じセル内の切り上げは可能だと思います。 (例)10÷3=3.333→切り上げ4を表示するには =ROUNDUP(10/3,0) を入力してもらえればいいので、計算式部分(10/3)を必要な計算式に変えればおそらく切り上げができるはずです。 式の後ろにある数字は小数点以下の桁数なので、必要なときに数字を入力すればいいと思います。 0→4 1→3.4 2→3.34 となります。
お礼
回答ありがとうございます。 説明不足で申し訳ないです_(._.)_ その方法ですと一つづつ式を入れていかないといけないことになるのでしょうか・・?!
- 76rt
- ベストアンサー率30% (33/107)
A列には数式が入っているのでしょうか? でしたら ROUNDUP(Aの数式,桁数) をA列に入れればできます。
お礼
回答ありがとうございます。 説明不足で申し訳ないです_(._.)_ A列にはなにも入っていないんです。 やりたかったのはA列にある数字を入れてそれを3倍した数の切上げをA列に表示させたかったんです。 例えばA1に1.2といれたら4と表示が出来ないかな、と。
お礼
回答ありがとうございます! えっと、私の場合(2)のケースでこれから入力したいと思っていたのですが そうするのはとても難しいことのようですね・・。 やはりB列に式の結果を一回出して それを貼り付けたほうがいいみたいです(-_-;) ありがとうございました。