2016-08-12 9 views
2

Excelスプレッドシートの行の総数を数え、その値を動的に渡す方法を教えてください。行とフィルタをカウントし、VBAでフィルタされた行を削除します

最後の行の値2691の代わりに、フィルタを設定するときにlastRowという変数を渡します。次に、合計の行をもう一度数え、その行をスプレッドシートから削除したいとします。

質問について
With ActiveSheet 
    lastRow = .Cells(.Rows.count, "A").End(xlUp).Row 
End With 

Range("A2").Select 
Selection.AutoFilter 
ActiveSheet.Range("$A$1:$P$2691").AutoFilter Field:=3, Criteria1:= _ 
    "=ABC", Operator:=xlOr, Criteria2:="=XYZ" 
Rows("285:285").Select 
Range(Selection, Selection.End(xlDown)).Select 
Selection.Delete Shift:=xlUp 

答えて

1

代わりに、最後の行の2691年の値のを、私はLASTROW変数を渡したい...

具体的な答えがRangeを設定することです範囲内の行を数えたときに設定したlastRow変数を使用してフィルタを適用します。例:

lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 

下記のコードを試してください。各ステップは明確にコメントされています。

Option Explicit 

Sub Test() 

    Dim ws As Worksheet 
    Dim lastRow As Long 
    Dim rng As Range 

    'set sheet reference 
    Set ws = ActiveSheet 

    'turn off autofilter 
    ws.AutoFilterMode = False 

    'get last row 
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row 

    'set range to filter 
    Set rng = ws.Range("A1:C" & lastRow) 

    'set filter 
    rng.AutoFilter Field:=3, Criteria1:="=ABC", Operator:=xlOr, Criteria2:="=XYZ" 

    'delete visible rows 
    rng.Offset(1, 0).SpecialCells(xlCellTypeVisible).EntireRow.Delete 

    'show remaining rows by removing autofilter 
    ws.AutoFilterMode = False 

End Sub 
+0

私はマクロを記録しましたが、エラーが発生したときにピボットグラフを適用する方法を教えてください。 'Sheets.Add ActiveWorkbook.Worksheets( "Sheet1")。ピボットテーブル( "ピボットテーブル3")。ピボットキャッシュ。 _ CreatePivotTable TableDestination:= "!Sheet2のR1C1"、テーブル名:= "PivotTable4" _ 、DefaultVersion:= xlPivotTableVersion14 シート( "シート2")、ピボットチャートが発生したら」 を選択して、私は1つの以上の広がりを作成したいです総計を使用してシート。 – Tim

+0

@SivaReddy - それは新しい質問のように聞こえる - なぜあなたは新しいものを始めませんか? –

+0

ありがとう、私は.. – Tim

関連する問題