- 締切済み
エクセルでの数値の書き換えについて
- みんなの回答 (5)
- 専門家の回答
みんなの回答
- kagakusuki
- ベストアンサー率51% (2610/5101)
関数では元のセルの値を書き換える事は出来ませんので、別のセルに出力する事になります。 例えば、質問者様の添付画像に写っている表が存在するシートがSheet1である場合で、書き換えた結果をSheet2に出力するものとした場合には、以下の様な方法となります。 ●500以上の数値はすべて500に書き換える場合 まず、Sheet2のA2セルに次の関数を入力して下さい。 =IF(OFFSET(Sheet1!$A$1,ROWS($A$1:$A2),COLUMNS($A$1:$A2))="","",OFFSET(Sheet1!$A$1,ROWS($A$1:$A2),COLUMNS($A$1:$A2))) 或いは =IF(Sheet1!A2="","",Sheet1!A2) 次に、Sheet2のA2セルをコピーして、Sheet2のB1~I1のセル範囲とSheet2のA3~A13のセル範囲にそれぞれ貼り付けて下さい。 次に、Sheet2のB2セルに次の関数を入力して下さい。 =IF(ISNUMBER(OFFSET(Sheet1!$A$1,ROWS($A$1:$A2),COLUMNS($A$1:$A2))),MIN(OFFSET(Sheet1!$A$1,ROWS($A$1:$A2),COLUMNS($A$1:$A2)),500),"") 或いは =IF(ISNUMBER(Sheet1!B2),MIN(Sheet1!B2,500),"") 次に、Sheet2のB2セルをコピーして、Sheet2のB2~I13のセル範囲に貼り付けて下さい。 ●500~600までの数値はすべて550に書き換える場合 前述の「500以上の数値はすべて500に書き換える場合」と同様なやり方で、Sheet2のB2セルに入力する関数のみを次の様な関数に差し替えて下さい。 =IF(ISNUMBER(OFFSET(Sheet1!$A$1,ROWS($A$1:$A2),COLUMNS($A$1:$A2))),IF(OFFSET(Sheet1!$A$1,ROWS($A$1:$A2),COLUMNS($A$1:$A2))<500,OFFSET(Sheet1!$A$1,ROWS($A$1:$A2),COLUMNS($A$1:$A2)),550),"") 或いは =IF(ISNUMBER(Sheet1!B2),IF(Sheet1!B2<500,Sheet1!B2,550),"")
- kichikuma
- ベストアンサー率18% (202/1080)
数字を見て一つ一つ判断して数字を入力し直すと出来ます。 関数とかのとかってなんでしょうか? 関数とかもわからないし、VBAも初心者だからわからない。 つまり、現状では何もわからないけどExel使ってそう言う処理はしたいわけですか。 知っている関数が少ないとかそう言う話ではないですよね。 引数を取って結果を返すのが関数の根本なんで、参照するセルと結果を出力セルが同じだと循環参照となってエラーになります。 色々やり方書いてもわからないでしょうし、簡単そうなのを1パターンだけ書いておきます。 1.シートを複製(コピー元をAコピー先をB) 2.Bの数値を消します。 3.Bの数値を消したところに式を入れる。 資料の例ならB2にだけ式を入れてマウスでドラッグして他のセルを埋めれば良いです。 掛け算九九の表を作るのと大体一緒ですので初心者でも楽勝だと思います。 >500以上の数値はすべて500に書き換える。 同じく500~600までの数値は550に書き換える まず、条件の認識がおかしいです。 条件は正確に認識しなければ何も出来ません。 →は数学の命題的にならばって意味です。 条件1.500以上→500 条件2.500~600→550 条件2の書き方を条件1に合わせると 500以上600以下 範囲おかしくないですかね? 被ってますし。 結果も条件の順序によって、500以上のものが全て500になるか550になるかだけです。 やり方以前の問題だと思います。
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19843)
追記。 >という式を書いて、それを、B2~I13までコピー&ペーストする。 ここで言う「それを」とは「B2セルを」です。「数式を」ではありませんので、間違えないように(数式のコピー&ペーストでは失敗します)
- chie65536(@chie65535)
- ベストアンサー率44% (8742/19843)
・500以上を500にする場合 何処か使ってないシート(例えばSheet2に)のB2セルに =IF(Sheet1!B2>=500,500,Sheet1!B2) という式を書いて、それを、B2~I13までコピー&ペーストする。 そして、B2~I13をCtrl+Cなどでコピー(点滅)状態にする。 次に、Sheet1に戻って、B2セルを選択して「編集」-「形式を選択して貼り付け」ー「値」で貼り付けする。 ・500以上600以下を550にする場合 書く式を =IF(And(Sheet1!B2>=500,Sheet1!B2<=600),550,Sheet1!B2) に変えて、上記と同じ処理をすれば良い。
- lupin-33333
- ベストアンサー率48% (17/35)
http://okwave.jp/qa/q9066383.html と考え方は同じ。500~600についてはAnd演算子を使う。 Sub bbbb() Dim rg As Range For Each rg In ActiveSheet.UsedRange If IsNumeric(rg.Value) = True Then If rg.Value >= 500 Then rg.Value = 500 End If End If Next rg End Sub Sub bbbb() Dim rg As Range For Each rg In ActiveSheet.UsedRange If IsNumeric(rg.Value) = True Then If rg.Value >= 500 And rg.value <=600 Then rg.Value = 550 End If End If Next rg End Sub