Excelに関する質問です。複数セルに対して以下の「切り上げ&桁下げ」をまとめて適用できるでしょうか?


  =ROUNDUP(セルの元の値/1000,0)
  
千円表示にしつつ切り上げたいのです。具体例は以下のとおりです。元のセルには、数値が直接入っている場合と、他のセルの数値を引用している場合があります。いずれのセルに対しても、一括適用したいのです。

  元のセルの値 → 切り上げ適用後      → 得られる値
    139270    =ROUNDUP(139270/1000,0)    140
    =A1      =ROUNDUP(A1/1000,0)      140

ズバリのご回答をお教えいただけると助かります。ぜひともよろしくお願いします。

# 膨大なシートの元セルに数値が記入すみです。
# 元セルの値をいじる操作はNGとさせてください

回答の条件
  • 1人2回まで
  • 登録:2007/09/05 18:39:14
  • 終了:2007/09/12 18:40:03

回答(4件)

id:Sag_Chicken No.1

Sag_Chicken回答回数211ベストアンサー獲得回数42007/09/05 19:09:29

ポイント23pt

何を知りたいのかいまいちわからないのですが・・・・。

もう少し具体例か、例を出してくれるとわかりやすいです。

 

たとえば

A1からA1000にセルの元の値 が入っていて

B1からB1000に切り上げ&桁下げ結果を表示というのであれば、

B1に

=ROUNDUP(A1/1000,0) 

といれて

このセルをコピー、B2からB1000を選択して貼り付けを実行すればいいです。

 

id:Mugicha2004

すみません、簡単に補足しますね。上記の場合ですと、A1からA1000までに値(数値や他セルの引用値)が入力されていますが、上書き的に適用したいのです。つまり、A1からA1000のセル自体に適用して、適用後の値をA1からA1000で見たいわけです。

2007/09/05 22:08:37
id:risa2007 No.2

risa2007回答回数153ベストアンサー獲得回数32007/09/05 19:35:24

ポイント23pt

元の数字が入っているシートはそのままで、

=ROUNDUP(セルの元の値/1000,0)

という式を全てに入力したいんですよね?

入力したい部分を選択して、コピーでいいんじゃないでしょうか?

一括で全ての場所にその式が入力できます

id:Mugicha2004

すみませんが、ちょっと意味が分かりませんでした。質問文がまずいのかな? 139270と入力されている数値セルA1があるとすると、A1のセルの内容自体を=ROUNDUP(139270/1000,0)とさせたいのです。

2007/09/05 22:10:14
id:ardarim No.3

ardarim回答回数892ベストアンサー獲得回数1422007/09/05 23:10:24

ポイント22pt

VBAでないと無理そうなので。


(1)以下のVBAマクロを登録する(そのままコピペ)

Sub ApplyFormula()

    Dim c As Range
    
    If TypeName(Selection) <> "Range" Then
        Exit Sub
    End If
    
    For Each c In Selection
        If c.HasFormula Then
            c.Formula = "=ROUNDUP((" & Right$(c.Formula, Len(c.Formula) - 1) & ")/1000,0)"
        Else
            c.Formula = "=ROUNDUP(" & c.Formula & ",0)"
        End If
    Next c

End Sub

(2)変換したい範囲を選択する

(3)マクロを実行する

id:Mugicha2004

詳細なご回答、ありがとうございました。VBAを用いないとできない作業なのですね... 了解しました。

2007/09/06 09:37:46
id:rikuzai No.4

りくっち回答回数1366ベストアンサー獲得回数1412007/09/06 00:09:42

ポイント22pt

置換で実現します。


  • 元シートをコピーします。これを仮にSheet1とします。
  • 全体を選択して「=」を空白で置換します。これで数式が全て=が消された文字列になって表示されます。
  • もう一枚新規シートを作り、以下の数式を記入してから該当のセル範囲までコピーします。

A1=IF(Sheet1!A1="","","$"&Sheet1!A1&"|")

  • 数式を入れた新規シートの全体を選択してコピーし、そのまま形式を選択して貼り付けで値のみを貼り付けます。これで全て$123456|のような文字列に変換され、入力値のないセルは空白表示されます。
  • 「|」を「/1000,0)」で置換します。
  • 「$」を「=ROUNDUP(」で置換します。これで全てのセルに同じROUNDUPの数式が適用されます。

以上ご参考まで。

id:Mugicha2004

ご回答、ありがとうございました。やはり簡単な作業ではないようですね。後ほど試してみます。

「数値が入ったセルを、その数値を変数とした関数に置き換えたい」との希望だったのですが、そもそも簡単ではなかったのですね。少し残念でした....

2007/09/06 09:39:58
  • id:taknt
    VBAを使わないとできないんじゃないのかな?
  • id:kaiton
    http://www2.odn.ne.jp/excel/waza/format.html#SEC3
    書式 #,##0,;-#,##0, の結果は千未満四捨五入されますが、これを切り上げでということでしょうか?

    123,456,789 => 123,456
    123,456 => 124
    値を変えずに表示だけ変えたいということですね。
    上の書式では、
    123,456,789 => 123,456
    123,456 => 123

    別シートに同じレイアウトをコピーして、
    別シートのA1に
    IF(ISNUMBER(Sheet1!A1),ROUNDUP(Sheet1!A1/1000,0),IF(Sheet1!A1<>"",Sheet1!A1,""))
    として、この式をコピーして、形式を選択して貼り付け、数式にチェックで全体に貼り付け
  • id:rikuzai
    >kaitonさん
    その方法だと、別シートを削除したらエラー値になったり、循環になったりしませんか?

    とりあえず置換だけで例示ようになる方法を投稿しました。
    多分これであってると思うんだけどなぁ。
  • id:kaiton
    元のシート(Sheet1)はなにもせずに、新しいシート(別のシート>Sheet2などを想定)にコピーを作るようなイメージなのですが..
    よく、印刷用の別シートを作るようなことを回答しました。
    もとのシート:Sheet1
    別のシート:Sheet2など
    ただ、要件からは外れるので..コメントにしました。

    説明不足だったでしょうか。m(__)m
    文書だけで回答するのは、難しい...

    それと、上のコメントを訂正
    >上の書式では、
    >123,456,789 => 123,456
    >123,456 => 123

    >123,456,789 => 123,457 ←のように四捨五入されます。
    を訂正します。
  • id:Mugicha2004
    表示だけかえて切り上げ千円表示....は、当方の希望としてNGなのです。切り上げ値を積算していきます。その積算の際、切り上げ後の数値を積算する必要があるのです。実数値のままの積算とは異なってしまいます...
  • id:Sag_Chicken
    ああ、やっと意味がわかったような気がする
    # 元セルの値をいじる操作はNGとさせてください
    というので、A1セルの「139270」を「=ROUNDUP(139270/1000,0)」
    に書き換えるという意味じゃないと思ってしまいました。
     
    欲しい回答とは違うと思いますが、
    元のデータをSheet1として、Sheet2のA1に
    =ROUNDUP(Sheet1!A1/1000,0)
    として、別シートにした方がいいと思います。
  • id:airplant
    Sag_Chickenさんと同じ意見です。

    元データとは別に、千円単位に切り上げた集計や分析を行われたいのだと思いますので、、、

    集計であれば、元セルの数式に関係なく、千円単位シートへ下記の数式を範囲選択してペーストすればおしまいと思います。

    =ROUNDUP(Sheet1!A1/1000,0)

    ちなみに、変換した後にsheet1の値を変更するときには、数値ではなくroundupの中身をいじるという操作を想定されていますでしょうか?
    そうだとすると、操作性が落ちそうですので、やはりSag_Chickenさんの方法が良さそうです。
    まあ、1回限りの移行ならば、変換でもいいかもしれません。
  • id:Mugicha2004
    いろいろと追加コメント、ありがとうございます。今夜ばバタンキュウ状態ですので、明日にご返信コメントをお書きしたいと思います。意外と難しい話だったんですね....
  • id:kaiton
    質問で
    >元のセルには、数値が直接入っている場合と、他のセルの数値を引用している場合
    「数値が直接入っている」があるので、コメントで
    IF(ISNUMBER(Sheet1!A1),ROUNDUP(Sheet1!A1/1000,0),IF(Sheet1!A1<>"",Sheet1!A1,""))
    とコメントしたのですが

    ISNUMBER(Sheet1!A1)>数字又は計算結果なら>
    ROUNDUP(Sheet1!A1/1000,0)
    それ以外で空("")でないなら、Sheet1!A1の内容

    シート内には文字もあると思うので、これでいいのかな??
    質問の内容を、まだ理解できていないかも?

この質問への反応(ブックマークコメント)

「あの人に答えてほしい」「この質問はあの人が答えられそう」というときに、回答リクエストを送ってみてましょう。

これ以上回答リクエストを送信することはできません。制限について

絞り込み :
はてなココの「ともだち」を表示します。
回答リクエストを送信したユーザーはいません