首页 > 解决方案 > VBA查找命名列和过滤器 - 几乎可以工作的宏

问题描述

我正在努力在一个宏中涵盖我需要做的所有事情 - 几个小时前我在这里问了一个类似的问题并得到了回答,但不幸的是我需要在我的宏中添加一些函数所以我不得不稍微修改它,现在我需要一个我无法工作的小调整

Sub BoBTEST()
Dim c As Range

    For Each c In Range("A1:BR1").Cells
        If c.Value = "Plate Name (barcode)" Or c.Value = "Measurement Date" Or c.Value = "Measurement profile" Or c.Value = "pH" Or c.Value = "Count" Or c.Value <= 30 Then
            c.EntireColumn.Hidden = False
        Else: c.EntireColumn.Hidden = True
        End If
        Next c
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range( _
        "AF2:AF1761"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range( _
        "AN2:AN1761"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range( _
        "J2:J1761"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
        xlSortNormal
    With ActiveWorkbook.Worksheets("Sheet1").Sort
        .SetRange Range("A1:BR1761")
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

    Range("A1:BR1761").Select
    Range("AT9").Activate
    Selection.AutoFilter
    Selection.AutoFilter
    ActiveSheet.Range("$A$1:$BR$1761").AutoFilter Field:=32, Criteria1:= _
        "=Shear Rated(gamma)/dt = 4 1/s", Operator:=xlOr, Criteria2:="="
    ActiveSheet.Range("$A$1:$BR$1761").AutoFilter Field:=40, Criteria1:= _
        "=Viscosity", Operator:=xlOr, Criteria2:="="
End Sub

到目前为止,基本上它所做的是获取从机器人导出的数据,隐藏我不想要的列并过滤我不想要的值

问题是这些列是动态的并且偶尔会四处移动 - 宏能够隐藏我不想要的所有列但是我正在努力让它搜索这些列然后过滤,现在它正在使用记录我这样做了,它选择例如列 J 然后过滤

ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add2 Key:=Range( _
    "J2:J1761"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
    xlSortNormal

但是它可能不在 J 列上,它可能在 K 列,因为在导出数据时偶尔会输入更多列

有什么方法可以调整宏以使其自动过滤器部分实际搜索列标题,而不是在例如“J2:J2000”等上执行这些功能。

非常抱歉,我想涵盖所有内容

标签: excelvba

解决方案


推荐阅读