如何在滤镜上应用动态范围

如何解决如何在滤镜上应用动态范围

我正在尝试将动态范围编码到过滤器中。但是,我不确定如何。我希望过滤器检查是否有不适用项,如果存在,则要显示它们。如果没有NA,则需要“全选”过滤器。

Sub SDOIP5()

' SDOIP5 Macro
' It filters the NA in Subcluster
'

Dim LastRow2 As Long
LastRow2 = Range("A" & Rows.Count).End(xlUp).Row

ActiveSheet.Range("$A$2:$BI$196").AutoFilter Field:=1,Criteria1:="#N/A"

End Sub

解决方法

过滤器动态范围

Option Explicit

Sub SDOIP5()
' SDOIP5 Macro
' It filters the NA in Subcluster '
'
    Const CriteriaValue As String = "#N/A"
    
    With ActiveSheet
        Dim rng As Range
        ' If for any reason 'CurrentRegion' doesn't work for you,' then just define the complete range including the headers.
        Set rng = .Range("A1").CurrentRegion
        ' To test that you have the right range,uncomment the following line
        ' to write the defined range address to the Immediate window (CTRL+G).
        'Debug.Print rng.Address(0,0)
        Application.ScreenUpdating = False
        rng.AutoFilter Field:=1,_
                       Criteria1:=CriteriaValue
        With rng.SpecialCells(xlCellTypeVisible)
            If .Rows.Count = 1 And .Areas.Count = 1 Then
                .Parent.ShowAllData
            End If
        End With
    End With

End Sub

编辑:

  • 这将使用defineEndRange函数来定义您的范围。

  • 使用第一个单元格A2设置解决方案。

  • 同样,如果这样不起作用,您将必须手动提供范围,例如

    Set rng = .Range("A2:BI196")
    

代码

Option Explicit

Sub SDOIP5()
' SDOIP5 Macro
' It filters the NA in Subcluster '
'
    Const CriteriaValue As String = "#N/A"
    
    With ActiveSheet
        Dim rng As Range
        Set rng = defineEndRange(.Range("A2"))
        ' To test that you have the right range,uncomment the following line,' to write the defined range address to the Immediate window (CTRL+G).
        Debug.Print rng.Address(0,_
                       Criteria1:=CriteriaValue
        With rng.SpecialCells(xlCellTypeVisible)
            If .Rows.Count = 1 And .Areas.Count = 1 Then
                .Parent.ShowAllData
            End If
        End With
    End With

End Sub

''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
' Purpose:      Defines the range from a specified first cell to the last cell
'               of its Current Region. It is the Current Region minus the cells
'               to the left and above of the specified first cell.
' Remarks:      If the specified first cell is "A1",then its Current Region
'               and its End Range are the same.
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Function defineEndRange(FirstCellRange As Range) _
         As Range
    ' Initialize error handling.
    Const ProcName As String = "defineEndRange"
    On Error GoTo clearError
    ' Validate First Cell Range.
    If FirstCellRange Is Nothing Then
        GoTo NoFirstCellRange
    End If
    ' Define Current Region ('rng').
    Dim rng As Range
    Set rng = FirstCellRange.CurrentRegion
    ' Define End Range.
    Set defineEndRange = FirstCellRange _
      .Resize(rng.Rows.Count + rng.Row - FirstCellRange.Row,_
              rng.Columns.Count + rng.Column - FirstCellRange.Column)
    ' Exit.
    GoTo ProcExit
' Labels
NoFirstCellRange:
    Debug.Print "'" & ProcName & "': No First Cell Range."
    GoTo ProcExit
clearError:
    Debug.Print "'" & ProcName & "': " & vbLf _
              & "    " & "Run-time error '" & Err.Number & "':" & vbLf _
              & "        " & Err.Description
    On Error GoTo 0
    GoTo ProcExit
ProcExit:
End Function

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。

相关推荐


Selenium Web驱动程序和Java。元素在(x,y)点处不可单击。其他元素将获得点击?
Python-如何使用点“。” 访问字典成员?
Java 字符串是不可变的。到底是什么意思?
Java中的“ final”关键字如何工作?(我仍然可以修改对象。)
“loop:”在Java代码中。这是什么,为什么要编译?
java.lang.ClassNotFoundException:sun.jdbc.odbc.JdbcOdbcDriver发生异常。为什么?
这是用Java进行XML解析的最佳库。
Java的PriorityQueue的内置迭代器不会以任何特定顺序遍历数据结构。为什么?
如何在Java中聆听按键时移动图像。
Java“Program to an interface”。这是什么意思?
Java在半透明框架/面板/组件上重新绘画。
Java“ Class.forName()”和“ Class.forName()。newInstance()”之间有什么区别?
在此环境中不提供编译器。也许是在JRE而不是JDK上运行?
Java用相同的方法在一个类中实现两个接口。哪种接口方法被覆盖?
Java 什么是Runtime.getRuntime()。totalMemory()和freeMemory()?
java.library.path中的java.lang.UnsatisfiedLinkError否*****。dll
JavaFX“位置是必需的。” 即使在同一包装中
Java 导入两个具有相同名称的类。怎么处理?
Java 是否应该在HttpServletResponse.getOutputStream()/。getWriter()上调用.close()?
Java RegEx元字符(。)和普通点?