VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。
Q&A
解決済
4回答
15466閲覧
総合スコア66
0グッド
0クリップ
投稿2018/02/20 09:04
0
G5からI23に数値が入っています。 ここの範囲に一気に(-2)をかけたいのですが、
Workbooks(fileA).Worksheets(sheet1).Range("G5:I23")*(-2)
としてもダメでした。 セル1つ1つにかけるならforなどの方法は重いつきますが、範囲に一気に かけるにはどうすればよいでしょうか?
よろしくお願い致します。
気になる質問をクリップする
クリップした質問は、後からいつでもMYページで確認できます。
またクリップした質問に回答があった際、通知やメールを受け取ることができます。
バッドをするには、ログインかつ
こちらの条件を満たす必要があります。
質問へのコメント
2018/02/20 09:42
回答4件
ベストアンサー
Evaluateを使えばどうでしょうか。
vba1With Workbooks(fileA).Worksheets(sheet1) 2 .Range("G5:I23").Value = .Evaluate("G5:I23*-2") 3End With
vba
1With Workbooks(fileA).Worksheets(sheet1) 2 .Range("G5:I23").Value = .Evaluate("G5:I23*-2") 3End With
Worksheet.Evaluate メソッド (Excel)
下記のように簡略に記述することもできます。
vba1With Workbooks(fileA).Worksheets(sheet1) 2 .Range("G5:I23").Value = .[G5:I23*-2] 3End With
1With Workbooks(fileA).Worksheets(sheet1) 2 .Range("G5:I23").Value = .[G5:I23*-2] 3End With
また、Forループを使った場合は、
vba1Dim r As Range 2For Each r In Workbooks(fileA).Worksheets(sheet1).Range("G5:I23") 3 v.Value = v.Value * -2 4Next
1Dim r As Range 2For Each r In Workbooks(fileA).Worksheets(sheet1).Range("G5:I23") 3 v.Value = v.Value * -2 4Next
投稿2018/02/20 11:32
総合スコア34367
まず G5:I23 と同じ大きさの範囲を空いたところ(例えば G25:I43)で選択します。 そこに次のように書きます。 =G5:I23*-2 Ctrl+Shift+Enter を押します。
=G5:I23*-2
投稿2018/02/20 09:22
総合スコア28675
貼り付けるときに乗算指定ができるので、それを利用するのはいかがでしょうか。 ただし-2のデータがセル上に必要なので、一時的にワークシートを作成するなどの処理が必要です。
VBA1Range("L5:N123").Copy ' この領域は-2で埋めてある 2Range("G5:I123").PasteSpecial Operation:=xlMultiply ' 乗算で貼り付け
VBA
1Range("L5:N123").Copy ' この領域は-2で埋めてある 2Range("G5:I123").PasteSpecial Operation:=xlMultiply ' 乗算で貼り付け
もしくはクリップボードを操作すればワークシートは不要かもしれません。
投稿2018/02/20 10:08
総合スコア17002
計算結果を入力したい複数のRangeオブジェクトのFormulaArrayプロパティに波括弧を使わず数式を代入することで配列数式を使用することが可能です
投稿2018/02/20 09:58
総合スコア59
あなたの回答
tips
太字
斜体
打ち消し線
見出し
引用テキストの挿入
コードの挿入
リンクの挿入
リストの挿入
番号リストの挿入
表の挿入
水平線の挿入
プレビュー
15分調べてもわからないことはteratailで質問しよう!
ただいまの回答率85.29%
質問をまとめることで思考を整理して素早く解決
テンプレート機能で簡単に質問をまとめる
指定範囲に一気に掛け算する