【问题标题】:Excel VBA AutofilteringExcel VBA 自动筛选
【发布时间】:2015-08-22 12:30:29
【问题描述】:

我很难使用 VBA 进行自动过滤。我的代码运行一次,之后我得到一个运行时错误代码 91。这是我的代码。我知道这很简单,但我错过了什么?提前致谢。

Dim MyWorksheet As Worksheet
Set MyWorksheet = Sheets("entity details - cost summary")
Sheets("entity details - cost summary").Select
Range("H6").Select
MyWorksheet.AutoFilter.sort.SortFields.Clear
MyWorksheet.AutoFilter.sort. _
    SortFields.Add Key:=Range("H6"), SortOn:=xlSortOnValues, Order:= _
    xlAscending, DataOption:=xlSortTextAsNumbers
With MyWorksheet.AutoFilter. _
    sort
    .Header = xlYes
    .MatchCase = False
    .Orientation = xlTopToBottom
    .SortMethod = xlPinYin
    .Apply
End With

更新: 错误发生在第 5 行

MyWorksheet.AutoFilter.sort.SortFields.Clear

第 5 行是列标题,从 B 列到 P 列。每行代表不同的制造设备,每列代表不同的属性或成本。 H 列有可能的条目。所以我尝试使用自动过滤器对每个条目进行分组。

【问题讨论】:

标签: vba excel


【解决方案1】:

以下内容适用于 B:P 列中的数据范围,从第 5 行的标题行开始,一直到 B 列中的最后一个值。

Sub equip_sort()
    With Worksheets("entity details - cost summary")
        With .Range(.Cells(5, 2), .Cells(Rows.Count, 2).End(xlUp))
            With .Resize(.Rows.Count, 15)
                .Cells.Sort Key1:=.Columns(7), Order1:=xlAscending, _
                            Orientation:=xlTopToBottom, Header:=xlYes
                .Columns(7).AutoFilter field:=1
            End With
        End With
    End With
End Sub

对数据进行排序并选择过滤列(H 列)。没有应用过滤器,因为没有指定该区域的任何内容,也没有提供示例数据或预期结果。

【讨论】:

  • 感谢 Jeeped 的出色工作。我很欣赏这种方法,我会去学习和复制。不需要额外的过滤。很抱歉我的更新有一个不幸的遗漏 - H 列有 三个 可能的条目。因此,一旦我将这三个按顺序排列好,我就可以更轻松地处理数据。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多