繁体   English   中英

用一个值Excel过滤多列的单元格

[英]Filter cells of multiple columns by one value Excel

我搜索了所有内容,但找不到解决以下问题的解决方案:我有多个列,并且这些列的单元格可以具有以下值:空,“ W”,“ A”,“ S”

现在,我想按一个单元格过滤行-因此,如果我在“搜索单元格”中放入“ W”,则应该只有可见的行,而在列的一个单元格中有“ W”的值

所以在过滤器之前:

过滤前

然后过滤器:

过滤后

没有vba,这可能吗?

这段代码仅适用于斯科特:P

Private Sub Worksheet_Change(ByVal Target As Range)
  If Not Intersect(Target, Me.Range("F1")) Is Nothing Then
    Application.ScreenUpdating = False
    Dim lastRow As Long, varArr As Variant, val As String, rowArr(1) As Range, i As Long
    val = LCase(Me.Range("F1").Value2)
    Me.UsedRange.EntireRow.Hidden = False
    If Len(val) Then
      lastRow = Application.Max(Me.Cells(Me.Rows.Count, 1).End(xlUp).Row, _
                                Me.Cells(Me.Rows.Count, 2).End(xlUp).Row, _
                                Me.Cells(Me.Rows.Count, 3).End(xlUp).Row, _
                                Me.Cells(Me.Rows.Count, 4).End(xlUp).Row)
      varArr = Me.Range("A1:D" & lastRow).Value2
      For i = 3 To lastRow
        If val = LCase(varArr(i, 1)) Or val = LCase(varArr(i, 2)) Or val = LCase(varArr(i, 3)) Or val = LCase(varArr(i, 4)) Then
          If rowArr(0) Is Nothing Then
            Set rowArr(0) = Me.Rows(i)
          Else
            Set rowArr(0) = Union(rowArr(0), Me.Rows(i))
          End If
        Else
          If rowArr(1) Is Nothing Then
            Set rowArr(1) = Me.Rows(i)
          Else
            Set rowArr(1) = Union(rowArr(1), Me.Rows(i))
          End If
        End If
      Next
      rowArr(0).EntireRow.Hidden = False
      rowArr(1).EntireRow.Hidden = True
    End If
    Application.ScreenUpdating = True
  End If
End Sub

(搜索字段为F1,大小写无关紧要)

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM