2016-12-29 4 views
0

データをフィルタリングし、残りのクラッタを削除するたびに、top11行(先頭10行+ヘッダ)を保持します。誰でも私を助けることができますか?TOP 11行を保持するVBAコード

sub macro() 
....... 
....... 
........ 
     LastRow = Cells(Rows.Count, 1).End(xlUp).Row 
     Worksheets("Top10").Range("B1").AutoFilter field:=2, Criteria1:="fiter1", VisibleDropDown:=True 
     Range("A2:J" & LastRow).Sort Key1:=Range("J2"), Order1:=xlAscending 
     Range("A12:J" & LastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
     Worksheets("Top10_WO").Range("B1").AutoFilter field:=2, Criteria1:="fiter2", VisibleDropDown:=True 
     Range("A2:J" & LastRow).Sort Key1:=Range("J2"), Order1:=xlAscending 
     Range("A22:J" & LastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
     Worksheets("Top10_WO").Range("B1").AutoFilter field:=2, Criteria1:="fiter3", VisibleDropDown:=True 
     Range("A2:J" & LastRow).Sort Key1:=Range("J2"), Order1:=xlAscending 
     Range("A32:J" & LastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete 
..... 
.... 
....(upto filter28) 

現在のところ私はこのコードを持っていますが、これはフィルタリングされたデータ範囲が動的なので柔軟性がありません。だから私はトップ10の行とヘッダーを保持し、各フィルタ処理されたデータ(フィルタ1から28まで)のすべての行を削除するコードが必要です。事前

+0

この問題を解決するためにSQLを使用できるように、WindowsでExcelを使用していますか? – Parfait

答えて

0

それはあなたがするたびに、既存のデータを上書きしているようだと私は、このコードが動作概念化することは難しいで

感謝。あなたのデータがどのように見えるか想像するのは難しいかもしれません。

私はあなたのコードを額面に置き、想定どおりだと想定していますが、フィルタの各反復をハードコードしたくない場合、このコードはあなたのすべての28のフィルターについて、上記のようにしました。

Sub macro() 

    Dim ws, sorts As Worksheet 
    Dim LastRow, filter, nextRow As Long 
    Dim sortRange As Range 

    Set ws = Worksheets("Top10_WO") 
    Set sorts = New Worksheet 
    LastRow = Cells(Rows.Count, 1).End(xlUp).Row 
    nextRow = 12 

    For filter = 1 To 28 

    ws.Range("B1").AutoFilter field:=2, Criteria1:="fiter" & filter, VisibleDropDown:=True 
    sortRange.Sort Key1:=Range("J2"), Order1:=xlAscending 
    Range("A" & nextRow & ":J" & LastRow).SpecialCells(xlCellTypeVisible).EntireRow.Delete 

    nextRow = nextRow + 10 

    Next filter 

End Sub 
+0

ありがとうHAMBONE。あなたのコードのようなものです。私はちょうどそれをチェックします...しかし、私のコードfilter1では、それは人や都市の名前になるかもしれないことを意味.....その場合、何をするか???私はそれらのフィルタにすべての名前を割り当てることができると思いますか?.....つまり、filter1 = personA filter2 = personBなど....必要なurヘルプ...もう一度あなたにとても感謝します。 –

+0

私は最も簡単な方法は、それらをすべて別のワークシートにリストすることです。次に、ループ条件1〜28の代わりに、ワークシートのセルをループして、フィルタ条件を定義します。これは理にかなっていますか? – Hambone

関連する問題