- ベストアンサー
エクセルのセルを整数化する方法
宜しくお願いします。 エクセルで20列100行20シートほどのブック形式の表があります。 表内の数値を小数点1桁目で四捨五入をして整数化したいと思います。(表示形式で見た目上の整数化でなく、実際の数値として整数化したい。) 表内は複雑に計算式が入っていて、一部は他のブックからリンクが張ってあります。 また、1部のセルはパーセント(%)表示になっていて、そのセルに関しては何も変更をしないというのが条件です。 セルをひとつずつROUND関数などを使っての変換では気が遠くなります。 何か簡単に変換できる方法はないでしょうか。 期限が本日中で本当に困っています。
- rimokongeta
- お礼率76% (157/206)
- オフィス系ソフト
- 回答数8
- ありがとう数7
- みんなの回答 (8)
- 専門家の回答
質問者が選んだベストアンサー
No1,6,7です。 > 実行時エラー”13”: > 型が一致しません。 多分、どこかのセルがエラー(VALUE!とかDIV/0!など)になっているのだと思います。 では、こう変えてください。エラーのセルはスキップさせます。 Sub test01() For Each sh In Worksheets For Each c In sh.UsedRange If Not (IsError(c)) Then If c <> "" And IsNumeric(c) Then If InStr(c.NumberFormatLocal, "%") = 0 Then If Left(c.Formula, 1) = "=" Then c.Value = "=ROUND(" & Right(c.Formula, Len(c.Formula) - 1) & ",0)" Else c.Value = Round(c.Value, 0) End If End If End If End If Next c Next sh End Sub
その他の回答 (7)
- merlionXX
- ベストアンサー率48% (1930/4007)
No1&6です。 VBAのコードが最後 End Su になっていましたがEnd Subとしてください。 一応、念のため使用方法も書いていきます。 Alt+F11キーでVisualBasicEditorを呼び出し、メニューの挿入で標準モジュールを表示させたら、No6で書いたコード(Sub~End Sub)をコピペしてみてください。 Alt+F11キーで再度ワークシートに戻ったら、メニューのツール、マクロ、マクロで出てきたtest01を実行します。
お礼
ご回答有難う御座います。 お教え頂きました通り実行してしばらくすると 実行時エラー”13”: 型が一致しません。 と表示され デバッグをクリックすると If c <> "" And IsNumeric(c) Then の行の背景が黄色くなっている状態です。 どこか操作を間違ったのでしょうか。 また、エクセルの内容を見てみると1ページ目は大丈夫のようですが、2ページ目の途中まで実行されているようです。 もしお時間があるようでしたら、大変申し訳御座いませんが、宜しくお願いします。
- merlionXX
- ベストアンサー率48% (1930/4007)
No1です。 おまたせしました。 数式でも数値でもこれでいけると思います。 ブック内の全シートに作動します。 かならず控えをとってからやってみてください。 Sub test01() For Each sh In Worksheets For Each c In sh.UsedRange If c <> "" And IsNumeric(c) Then If InStr(c.NumberFormatLocal, "%") = 0 Then If Left(c.Formula, 1) = "=" Then c.Value = "=ROUND(" & Right(c.Formula, Len(c.Formula) - 1) & ",0)" Else c.Value = Round(c.Value, 0) End If End If End If Next c Next sh End Su
具体的な表が提示されているなら、最も効率的な手法も提案されるかも知れません。 提示もしないで「期限が本日中で本当に困っています」は虫が良過ぎます。 それから「小数点1桁目で四捨五入」でなく「小数点1桁以下で四捨五入」あるいは「1未満を四捨五入」と表現するのが一般的です。
お礼
ご回答有難う御座います。 >> ~虫が良過ぎます。 確かにその通りですね。 ご迷惑をおかけして申し訳御座いません。
VBAなら・・・ とりあえず1シートに対する処理です。 %の表示形式「0%」の部分はなにもしません。 他の部分はROUND関数の式に修正します。 範囲は数値の入っている必要なものに修正して下さい。 数値以外のセルを含むとおそらくエラーとなります。 Sub test() Dim MyRng1 As Range, MyRng2 As Range Set MyRng2 = Range("A1:T28") For Each MyRng1 In MyRng2 If MyRng1.NumberFormatLocal <> "0%" Then If Left(MyRng1.Formula, 1) <> "=" Then MyRng1.Value = "=ROUND(" & MyRng1.Formula & ",0)" Else MyRng1.Value = "=ROUND(" & Right(MyRng1.Formula, Len(MyRng1.Formula) - 1) & ",0)" End If End If Next End Sub
お礼
ご回答有難う御座います。 以前にもお世話になり、大変有難う御座います。 お教え頂きました方法で解決しそうです。 範囲と%の表示形式部分の変更で、とりあえず1シートを実行したところ問題がないようです。 本当に助かります。 大変有難う御座います。
- mshr1962
- ベストアンサー率39% (7418/18948)
数式の結果の場合はROUND関数を使うしかありません。 入力した数値なら「ツール」「オプション」「計算方法」で 「表示した桁数で計算する」にチェックすれば整数化できます。 ※表示形式が標準の場合や、小数点以下の桁数がある場合は整数化されません。 ※すべてのブックに影響するので、「設定変更→上書き保存→設定を戻す」を忘れずに行ってください。
お礼
ご回答有難う御座います。 セルの半数以上が数式の結果です。 やはり無理ですかね。 有難う御座います。
- process9
- ベストアンサー率29% (81/272)
>セルをひとつずつROUND関数などを使っての変換では気が遠くなります。 なぜ? 1セルROUND関数で整数化して、そのセルをコピー後 その数式を反映させたい範囲を選択後 形式を選択して貼り付けで数式を選ぶ。 これをシート20枚分繰り返すだけだと思いますが・・・・ 30分もかからないと思います。
お礼
ご回答有難う御座います。 セルの半分以上に計算式(セルごとに違う複雑な計算式)がはいっていて、コピー出来ません。 また、条件として%で表示されているセルは変更したくありません。 表示形式のセルの並びもほぼランダムです。 他に何か方法はないでしょうか? 有難う御座いました。
- merlionXX
- ベストアンサー率48% (1930/4007)
整数化する元のデータは、数値そのものですか?それとも計算式での計算結果表示されている答えですか? もし、数値そのものだとすればマクロでいっぺんに変換できそうですが、計算の答えだったら地道に式を直すしかないと思います。
お礼
ご回答有難う御座います。 セルの内容は、数値そのもののあれば計算結果もあります。(どちらかと言うと計算結果のほうが多いのです。) やはり、地道にやっていくしか、ないでしょうか 有難う御座います。
関連するQ&A
- エクセルの表示形式で、10の桁で四捨五入した値を表示させるには?
エクセルの表で、数字を四捨五入する方法にはROUND関数がありますが、関数で変換すると値そのものが変わってしまいます。 値はそのままで四捨五入した数字で表す方法を教えてください。 小数や一桁の整数までの四捨五入であれば、セルの書式設定・表示形式を「数値」にして小数点以下の桁数を指定してやれば簡単ですが、10の桁以上で丸めて表示させる方法を探しています。 例えば、9876→9880と表示させる書式設定の方法です。 値は計算に使うので、ROUND関数で実際に丸めたくないのです。 ユーザ定義を組み合わせるなどで、うまくできませんか?
- ベストアンサー
- オフィス系ソフト
- エクセルで平均の答えが1つのセルだけできません
エクセル2007で表を作成して平均を求めようとしてます。 7人の国語の試験の平均を四捨五入して整数で求めたいと思っています。 ラウンド関数をだして=AVERAGE(7人の点数をドラッグ)して桁数を0とすると 数学・英語・理科・社会はできるのですが、国語だけができません。 セルの書式設定で表示形式で分類の数値は小数点以下の桁数は0にしてあります。 どこが悪くてこのようになるのかわかりません。よろしくお願いいたします。
- ベストアンサー
- その他([技術者向] コンピューター)
- エクセルで数値の桁数を一定の法則で統一したい
E列にA~D列のデータから計算された数値が並んでいます。 たとえば E1:9.9 E2:86.08695652 E3:212.8571429 E4:1158.13953488372 これらを E1:9.90 (整数1桁の場合は四捨五入して小数2桁まで) 1未満の数値も小数2桁で(例、0.96) E2:86.1 (整数2桁の場合は四捨五入して小数1桁まで) E3:213 (整数3桁の場合は四捨五入して小数カット) E4:1158 (整数4桁の場合は四捨五入して小数カット) 上記の法則で見やすく整理したいのです。 整数4桁が最大です。大量のデータをまとめて整理出来る方法は ないでしょうか?よろしくお願いします。
- ベストアンサー
- その他(データベース)
- EXCELLでセル内の数値の丸める
現在EXCELでセル内の数値を丸めたいと思っています。 関数の“ROUND”を使用すると四捨五入になり例えば“12.49”と入力すると整数に丸める場合に“12”、また“12.50”と入力すると“13”、すなわち“12.50”以上の数値は切り上げられます。 よって“12.51”も“13”になります。 私はセルに入力した数値の小数点以下の数字が“##.50”は切捨て、“##.51”は切り上げとしたいのですが... つまり“12.50”と入力すると“12”と表示され、“12.51”と入力すると“13”と表示するように設定したい。 これが可能かどうか御存じ無いでしょうか? もし、可能であればそのやり方をお教え願いたいです。 よろしくお願いいたします。
- ベストアンサー
- オフィス系ソフト
- 小学算数・・整数の問題・・教えてください
何度考えてもしっくりいきません。分かりやすい解答をおしえてください。ww ある2桁の整数を8と9で割ります。その時の商の小数第一位をそれぞれ四捨五入すると同じ値になりました。 (1)この時の2桁の整数の中で最大の物を求めなさい。 (2)このような2桁の整数は全部で何個ありますか。 (2)の場合、解答では商の小数第一位を四捨五入して、整数部分の「一の位」が9になるとき、8になるとき、という風に、大きい順に試し、その個数を足し合わせています。理解できません。(^^;; 無論(1)の場合も商の小数第一位を四捨五入して、9になる数、8になる数、7になる数という風にそれぞれ試しているのですが、何故そのようにするのかわかりません(;;) なぜでしょうか? また、 もっと分かりやすい方法があれば大感激です。 ヨロシクお願いします。
- 締切済み
- 数学・算数
- エクセル、小数点桁下げの意味
エクセルの小数点桁下げのボタンを押すのと、 ROUNDで桁数0にするのは同じことなのでしょうか?(四捨五入で整数で表すばあい)
- ベストアンサー
- その他(インターネット・Webサービス)
- エクセルのROUND関数について
小数点以下を四捨五入して整数にするには,例えば ROUND(1.52,1) なら,2になると思うのですが, ROUND(1.52,01) としても2となります. 1としても0.1としても結果は必ず等しくなるのでしょうか? よろしくお願いします.
- 締切済み
- オフィス系ソフト
- 1セルに6桁以上入力できない。小数点以下の表示が00になってしまう。
エクセルの1つのセルに1,000,000と入力するも1,000となってしまいます。 数式と値をクリアにしても、表示形式を標準や数値や文字列に設定しても下3桁が入りません。 それと小数点第2位まで計算したいのに、小数点第2位は.00なってしまいます。 それと小数点以下を切り捨てで表示させたいのに、四捨五入になってしまいます。
- ベストアンサー
- Windows XP
- 範囲指定した箇所の数値を一括で四捨五入したい
EXCELのマクロで 範囲指定をしたセルの数値(数式ではなく、数字です)を一括で四捨五入(小数点第3位を四捨五入(小数点第2まで表示))した数値を置き換えるマクロを知りたいのですが、調べられずに困っています。 (roundで四捨五入して、それを値だけ貼り付ければ・・と言うことではなく、あくまでもマクロでの方法を教えてください) よろしくお願いいたします。 バージョンEXCEL2000
- ベストアンサー
- オフィス系ソフト
お礼
何度も申し訳御座いません。 今回の方法で、大丈夫なようで、求めることが出来ました。 これで、土日出勤と徹夜しなくて済みそうです。 本当に本当に有難う御座います。