VBA100本ノック 33本目を動画で解説しています。Excelの神髄さんの模範解答はコチラ
問題
#VBA100本ノック 33本目
「このVBAはマクロの記録から作ったのですが、件数の数値を変更してから実行しなければならず、データ件数も多くて何分も時間がかかりとても困っています。なんとかしてもらえないでしょうか?」
こう頼まれました。VBAを書いて対応してあげましょう。
※VBAソースはリプにて


解答
Sub Macro1()
Sheets("データ").Select 'データシートを選択
Dim データシートのA列の最終行 As Long
データシートのA列の最終行 = Sheets("データ").Cells(Rows.Count, 1).End(xlUp).Row
'フィルターを書けないこと!
Range("D2:D" & データシートのA列の最終行).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-2],マスタ!C[-3]:C[-1],2,FALSE),"""")"
Range("E2:E" & データシートのA列の最終行).FormulaR1C1 = "=IFERROR(VLOOKUP(RC[-3],マスタ!C[-4]:C[-2],3,FALSE),"""")"
Range("F2:F" & データシートのA列の最終行).FormulaR1C1 = "=RC[-1]*RC[-3]"
' これ以下が値貼り!
'もし数式を残したければ消して!
Range("D2:F" & データシートのA列の最終行).Select
Selection.Copy
Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Range("A1").Select
End Sub

新人君
凄く実践的な
問題ですね!

ブチョ
そうかな?
俺はそうは思わないよ?

新人君
こいつ…(怒)
コメント