【问题标题】:Delete all but header and first visible row删除除标题和第一个可见行之外的所有内容
【发布时间】: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

【问题讨论】:

标签: vba excel excel-2007


【解决方案1】:

您希望将 Dive 中的范围设置为仅可见行。

谷歌

的语法
.SpecialCells(xlCellTypeVisible)

【讨论】:

    【解决方案2】:

    我想我已经破解了它。找到了一些用于选择第一个可见单元格的漂亮代码。然后我可以隐藏该行并删除所有可见的。

    Range("A2", Cells(Rows.Count, "A").End(xlUp)).SpecialCells(xlCellTypeVisible).Cells(1, 1).Select
    ActiveCell.EntireRow.Hidden = True
    ActiveSheet.UsedRange.SpecialCells(xlCellTypeVisible).Delete
    

    【讨论】:

      猜你喜欢
      • 2012-12-03
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2014-09-14
      • 2011-06-05
      • 2010-09-27
      • 2012-12-18
      • 1970-01-01
      相关资源
      最近更新 更多