- ベストアンサー
vbaでセルとセルの積を求める方法
- みんなの回答 (4)
- 専門家の回答
質問者が選んだベストアンサー
「マクロの記録」を使って以下の繰作をコード化して下さい。 1)列Iの値全部をコピーする。(セルi2を選びctrl+Shift+↓キー押して、ctrl+Cキー押下) 2)列Kにペーストする。(セルk2を選び、ctrl+Vキー押下) 3)列Jの値全部をコピーする。(セルj2を選びctrl+Shift+↓キー押 4)列Kに、「形式を選択して貼り付け」する。(セルk2を選び、ctrl+Alt+Vキー押下) 5)値、演算(乗算)選んでOKクリック。 式を設定してもたいしたことは無いと思いますけどね。
その他の回答 (3)
- tom04
- ベストアンサー率49% (2537/5117)
No.3です。 >コピペの場合、何かいい方法がありますでしょうか? とありましたので・・・ 今回もVBAになってしまいますが、 前回同様 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面 → 前回のコードがすでに記載されていると思いますので、 そのコードの下に↓のコードをコピー&ペーストしマクロを実行してみてください。 (Alt+F8キー → マクロ → マクロ実行です) Sub 計算() 'この行から Dim endRow As Long endRow = Cells(Rows.Count, "I").End(xlUp).Row With Range(Cells(2, "K"), Cells(endRow, "K")) .Formula = "=I2*J2" .Value = .Value End With End Sub 'この行まで ※ 数式そのものはエラー処理していませんので、セル内に文字列・空白セル等があれば エラーになったり、「0」が表示されたりします。 ※ 関数でないのでコピー&ペーストした後にご自身でマクロを実行する必要があります。m(_ _)m
お礼
トライしてみます。 どうもありがとうございました。!
- tom04
- ベストアンサー率49% (2537/5117)
こんばんは! I・J列はそれぞれ手入力するとしての一例です。 画面左下の操作したいSheet見出し上で右クリック → コードの表示 → VBE画面に ↓のコードをコピー&ペーストしてI・J列にデータを入力してみてください。 Private Sub Worksheet_Change(ByVal Target As Range) 'この行から Dim k As Long If Intersect(Target, Range("I:J")) Is Nothing Or Target.Count <> 1 Then Exit Sub k = Target.Row If WorksheetFunction.Count(Range(Cells(k, "I"), Cells(k, "J"))) = 2 Then Cells(k, "K") = Cells(k, "I") * Cells(k, "J") End If End Sub 'この行まで ※ 上記コードは1セルずつ入力する!という前提ですので、 I・J列データをどこからかまとめてコピー&ペーストする場合は全く反応しません。m(_ _)m
お礼
お礼が遅くなりまして申し訳ございません。 御教授ありがとうございます。 今回の場合、手入力の部分とコピペの部分がありまして、手入力の部分は上記でうまく良くと思いますが、コピペの場合、何かいい方法がありますでしょうか? 何か良い案がありましたら御教授よろしくお願いします。
- tamiemon96
- ベストアンサー率49% (658/1341)
「マクロの記録」 で対応できそうですね。 【手順】 (1) ステータスバーの設定で「マクロの記録」を有効にします。 http://www4.synapse.ne.jp/yone/excel2010/excel2010_macro_kiroku.html (2) 表の右欄外に、 =i * j の式を入力する 1欄だけ式を入力し、列全体にコピーすれば全行にコピーできますね (3) 数式が入った列を、K列に値のみコピーする。 (4) 余計な式を入れた列を削除する (5) マクロの記録を閉じる (6) ボタンを配置し、ボタンにマクロを登録しておく 要は、一度別の列で計算して、答えだけ張り付けるということです。 いかがしょうか。
お礼
なるほど他の場所に式を入れて消すという手もいいですね。 早速試してみます。 ご回答ありがとうございました。
お礼
貼り付けの際の演算とはこんな便利な機能だったのですね。恥ずかしながら知りませんでした。 この方法であれば面倒な記述はいらず便利ですね。 どうもありがとうございました。