33本目 マクロの記録のコードの改修

VBA100本ノック

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
新人君
新人君

凄く実践的な

問題ですね!

ブチョ
ブチョ

そうかな?
俺はそうは思わないよ?

新人君
新人君

こいつ…(怒)

コメント

タイトルとURLをコピーしました