重要なお知らせ

「教えて! goo」は2025年9月17日(水)をもちまして、サービスを終了いたします。詳細はこちら>

【GOLF me!】初月無料お試し

添付ファイルにある様なI列:原価xJ列:販売数量の積をK列:原価計表示させる場合ですが
K列に関数(ixJ)を入れれば求められるのはわかりますが、行数がどんどん増えて行く為、K列に関数を入れておくと重くなるので出来ればvbaでいっきにI列とJ列の積をK列に出力したいのですがvbaでのワークシート関数の書き方がよくわからず困っております。 どなたか御教授願います。 
ちなみに原価列、販売数量列の列数は毎日増え続けていきます。(同じペースで)

「vbaでセルとセルの積を求める方法」の質問画像

A 回答 (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クリック。

式を設定してもたいしたことは無いと思いますけどね。
    • good
    • 0
この回答へのお礼

貼り付けの際の演算とはこんな便利な機能だったのですね。恥ずかしながら知りませんでした。 この方法であれば面倒な記述はいらず便利ですね。 どうもありがとうございました。

お礼日時:2013/09/30 18:43

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
    • good
    • 0
この回答へのお礼

トライしてみます。 どうもありがとうございました。!

お礼日時:2013/10/06 18:32

こんばんは!


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
    • good
    • 0
この回答へのお礼

お礼が遅くなりまして申し訳ございません。

御教授ありがとうございます。

今回の場合、手入力の部分とコピペの部分がありまして、手入力の部分は上記でうまく良くと思いますが、コピペの場合、何かいい方法がありますでしょうか? 何か良い案がありましたら御教授よろしくお願いします。

お礼日時:2013/10/05 17:15

「マクロの記録」 で対応できそうですね。



【手順】

(1) ステータスバーの設定で「マクロの記録」を有効にします。

  http://www4.synapse.ne.jp/yone/excel2010/excel20 …

(2) 表の右欄外に、 =i * j の式を入力する

   1欄だけ式を入力し、列全体にコピーすれば全行にコピーできますね

(3) 数式が入った列を、K列に値のみコピーする。

(4) 余計な式を入れた列を削除する

(5) マクロの記録を閉じる

(6) ボタンを配置し、ボタンにマクロを登録しておく


要は、一度別の列で計算して、答えだけ張り付けるということです。
いかがしょうか。
    • good
    • 0
この回答へのお礼

なるほど他の場所に式を入れて消すという手もいいですね。
早速試してみます。 ご回答ありがとうございました。

お礼日時:2013/09/30 18:45

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!