質問: エクセル vba 初心者で困っております! いつもありがとうございます。vba初心者です。 データベース(sheet2)のデータをセルa1(sheet1)の値をオートフィルタ-に反映させて抽出し、 その後、セルb1(sheet1)に入力した値と貼り付けた別のシート(sheet3)で数値1×数値2(b1で入力した値)を掛け算し、数値3に出すのが目的です。 sheet1 セルa1【製品名を入力】例、【製品a】を入力 セルb1【数値を入力】例、5を入力 コマンドボタン1を押すと実行 sheet2(データベース) 製品名 数値1 数値2 数値3 1 製品c 2 2 製品a 2 3 製品a 1 4 製品b 4 5 製品d 3 6 製品d 5 sheet3(貼付先) 実行結果 製品名 数値1 数値2 数値3 1 製品a 2 5 10 2 製品a 1 5 5 当初、リストボックスを選択出来るようにし、その値を別のシートに貼り付け、演算処理を行うの方法を模索しておりましたが、 shee2のデータベース、a1・b1(検索値・値)も毎回変わるため、1回ずつの作業を行うように考えなおしたところ、 いきずまってしましました。 時間がないためによろしくお願い致します。
回答: 下記を下敷きにして,改めてご自分の使いやすいように作成し直してみてください。 sub macro1() dim lastrow_at3 as long worksheets("sheet3").range("a:d").clearcontents ’オートフィルタで絞り込みコピーする(記録マクロと同じ) worksheets("sheet2").range("a:d").autofilter field:=1, criteria1:=worksheets("sheet1").range("a1") worksheets("sheet2").autofilter.range.copy destination:=worksheets("sheet3").range("a1") ’シート3のc列d列に必要な記入を行う(記録マクロと同じ) lastrow_at3 = worksheets("sheet3").range("a65536").end(xlup).row worksheets("sheet3").range("c2:c" & lastrow_at3).value = worksheets("sheet1").range("b1") worksheets("sheet3").range("d2:d" & lastrow_at3).formula = "=b2*c2" end sub