2017-09-13 10 views
0

私はサマリーシートとデータシートを持っているこのプロジェクトで作業しています。毎週別々のレポートから生データをデータシートにドロップし、必要なものとフィルタを使ってフィルタしますサマリーシートに。異なるワークシートのセルとしての基準を持つVBAオートフィルタ。

コードの開始は、毎回新しい実行のためにセルをクリアするだけです。私が抱えている問題は、要約シートのセル値である1つのオートフィルタ基準です。ドロップダウンボックスで、変更されたときに別のデータをサマリーシートにコピーします。ここに私のコードです。事前にアドバイスをありがとう!

Sub Macro3() 
    Sheets("Summary").Select 
    Range("C5").Select 
    Selection.ClearContents 
    Range("C6").Select 
    Selection.ClearContents 
    Range("C10").Select 
    Selection.ClearContents 
    Range("C11").Select 
    Selection.ClearContents 
    Range("C16").Select 
    Selection.ClearContents 
    Range("C17").Select 
    Selection.ClearContents 
    Range("C21").Select 
    Selection.ClearContents 
    Range("C22").Select 
    Selection.ClearContents 
    Range("F11").Select 
    Selection.ClearContents 
    Range("F10").Select 
    Selection.ClearContents 
    Range("F6").Select 
    Selection.ClearContents 
    Range("F5").Select 
    Selection.ClearContents 

    Sheets("Data").Select 

    Range("K200000").Select 
    Selection.ClearContents 
    Range("J200000").Select 
    Selection.ClearContents 

    i = Sheets("Summary").Range("i2") 

    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=13, Criteria1:=i 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=7, Criteria1:="<>" 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=11, Criteria1:="<>0" 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15, Criteria1:=i 
    Range("K200000").Select 
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(9,R[-199996]C:R[-1]C)" 
    Range("J200000").Select 
    ActiveCell.FormulaR1C1 = "=SUBTOTAL(2,R[-199996]C:R[-1]C)" 
    Selection.NumberFormat = "#,##0.0" 
    Selection.NumberFormat = "#,##0" 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("C5").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    Range("k200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("C10").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15, Criteria1:="<>" & i 
    Range("j200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("C6").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    Range("k200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("C11").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=7 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=11 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=12, Criteria1:= _ 
     "<>" 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15, Criteria1:=i 
    Range("j200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("C16").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    Range("k200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("C21").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15, Criteria1:="<>" & i 
    Range("j200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("C17").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    Range("k200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("C22").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=12 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=4, Criteria1:="<>0" 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15, Criteria1:=i 
    Range("j200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("F5").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    Range("k200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("F10").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15, Criteria1:="<>" & i 

    Range("j200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("F6").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    Range("k200000").Select 
    Application.CutCopyMode = False 
    Selection.Copy 
    Sheets("Summary").Select 
    Range("F11").Select 
    Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _ 
     :=False, Transpose:=False 
    Sheets("Data").Select 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=13 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=4 
    ActiveSheet.ListObjects("Table1").Range.AutoFilter Field:=15 
    Sheets("Summary").Select 
End Sub 
+0

あなたのコードがあるに

i = Sheets("Summary").Range("i2") 

を変更してみてください(申し訳ありませんが、私はあなたのことを伝えるために持っていること)、ほとんど読めないと私は非常にあなたが '' .Select'を避けるためにお勧めします。 Activate'、 'ActiveSheet'、' .Selection'です。あなたがそれらを避ける方法をGoogleの場合は、多くのチュートリアルを見つけるでしょう。 **これらを避けることは、メンテナンス可能なコードを手に入れるための最初の作業でなければならないので、問題を避けることができ、コード内でエラーを見つけるのがはるかに簡単です。**これにより、コードが半分以下に減少します。 –

答えて

0

Pehは言うとおり、これはほとんど読めません。あなたの質問から、あなたの問題は、基準をiに設定することに関連していると思いますか?もしそうなら、

i = Sheets("Summary").Range("i2").Value 
関連する問題