基于过滤器删除时请求动态范围解决方案

时间:2014-03-18 15:42:30

标签: excel vba excel-vba

我目前正在制作一个宏来自动完成我每天必须在Excel中完成的工作。但是,由于这是我第一次在Excel中使用Visual Basic和Macros,我很难根据过滤结果实现动态范围选择。

基本上,我的想法是在标题上应用过滤器后删除一系列行。由于此行范围更改,我需要代码根据筛选结果动态选择范围。举一个实际的例子,这是我正在应用的一个过滤器:

Columns("J:J").EntireColumn.AutoFit
ActiveSheet.Range("$A$4:$AQ" & LastRow).AutoFilter Field:=10, Criteria1:="="
Rows("34:34").Select
Range(Selection, Selection.End(xlDown)).Select
Selection.Delete Shift:=xlUp
ActiveSheet.Range("$A$4:$AQ" & LastRow).AutoFilter Field:=10
Columns("J:J").Select
Selection.EntireColumn.Hidden = True

问题在于“行(”34:34“)。选择”,因为这些行每天都会发生变化。

我已经在网站上做了一些阅读,我已经尝试了一些涉及SpecialCell功能的建议,但是,这些目前不适用于我(我可能做错了)。

我想有一个简单的解决方案,所以我希望你们中的一个能指出我正确的方向?这会对我有所帮助。

我希望自己能够有所作为。

提前谢谢!

1 个答案:

答案 0 :(得分:0)

试试这个:

With ActiveSheet.Range("A4:AQ" & lastrow)
    .AutoFilter Field:=10, Criteria1:="="
    'get all rows except header. Only visible rows would be deleted
    .Offset(1).Resize(.Rows.Count - 1).EntireRow.Delete Shift:=xlUp
    .AutoFilter Field:=10
End With