【发布时间】:2015-04-11 07:35:49
【问题描述】:
我的任务是从数据集中删除重复项,但以特定方式;我需要应用具有两个条件的过滤器,然后删除除第一个之外的所有可见行,我将对其进行即时编辑。
我确信解决方案在于循环过滤每个条件并删除相关行。但是,我不知道该怎么做。使用偏移量不好;设置和偏移已使用和可见单元格的范围似乎不起作用;它总是从第 1 行偏移,而不是可见行。
范围 Dive 来自工作表 WS,而不是发生自动过滤和重复删除的“编译表”。
Sub Dupe_killer()
Dim List As Worksheet
Dim Dive As Range
Dim Hit As Range
Set List = Sheets.Add
Dim aRow As Range
Dim fRow As Range
Dim lRow As Range
Dim r As Range
Dim Rng As Range
Dim FilterRange As Range
With Application
.ScreenUpdating = False
.EnableEvents = False
.Calculation = xlCalculationManual
.DisplayAlerts = False
End With
Worksheets("Compilation Sheet").Activate
If ActiveSheet.FilterMode = False Then
ActiveSheet.Range("A1:bc1").AutoFilter
End If
ActiveWorkbook.Worksheets("Compilation Sheet").AutoFilter.Sort.SortFields.Clear
ActiveSheet.Range("$A$1:$BC$11188").AutoFilter Field:=2, Criteria1:=RGB(255 _
, 0, 255), Operator:=xlFilterCellColor
List.Range("A:A").Value = Worksheets("Compilation Sheet").Range("B:B").Value
List.Range("A:A").RemoveDuplicates Columns:=Array(1)
Set r = List.Range("A2")
Set Dive = Range(r, r.End(xlDown))
For Each Hit In Dive
With Worksheets("Compilation Sheet")
.Range("A1:BC1").AutoFilter Field:=2, Criteria1:=Hit
.Range("A1:BC1").AutoFilter Field:=10, Criteria1:="*", Criteria2:="*,*", Operator:=xlAnd
End With
Set FilterRange = ActiveSheet.UsedRange.Offset(2, 0) _
.SpecialCells(xlCellTypeVisible)
FilterRange.Select
Next Hit
With Application
.ScreenUpdating = True
.EnableEvents = True
.Calculation = xlCalculationAutomatic
.DisplayAlerts = True
End With
End Sub
【问题讨论】:
-
查看[获取独特物品](xlorate.com/excel-questions.html#Get独特物品)
-
这可能是stackoverflow.com/questions/20663491 的副本(至少从标题上看),其中有一个非常好的可访问解决方案。
标签: vba excel excel-2007