【问题标题】:Excel - Filter a column by other column's valueExcel - 按其他列的值过滤列
【发布时间】:2016-11-01 01:57:09
【问题描述】:

找不到这个简单的过滤选项:/ 我需要的是按列 C 值过滤列 A,例如:

标题 |标题

戴尔|暴民
戴尔 |网络
戴尔 |德斯
细胞 |网络
细胞 |德斯
凝胶 |暴徒

如果我要按 B 列的值“Mob”过滤 A 列,我想得到: (所有 A 列值,包括 B 列中的 Mob)

标题 |标题

戴尔|暴民
戴尔 |网络
戴尔 |德斯
凝胶 |暴徒

非常感谢您的帮助!

【问题讨论】:

  • 可以在工作表中使用 VBA 吗?使用 VBA,这很容易。
  • 如果 VBA 没问题,您是希望隐藏过滤后的行还是在其他地方复制过滤后的表格?

标签: excel filtering


【解决方案1】:

使用 VBA:

  • 将过滤器单元格的名称定义为 filterBy(包含您希望在 B 列中搜索的文本的单元格)
  • 将 A 列标题单元格的名称定义为 colA
  • 将此粘贴​​到工作表的 VBA 代码中

    Private Sub Worksheet_Change(ByVal Target As Range)
      'this checks if FilterBy was changed
      If (Not Intersect(Target, [FilterBy]) Is Nothing) Then Call DoTheFilterThing
    End Sub
    
    Sub DoTheFilterThing()
      Dim row_Offset As Integer
      Dim filters() As String
      ReDim filters(0 To 0)
    
        row_Offset = 1
    
        'Scan the B column and create a list of allowed A values
        'Note: this will populate the list until an empty value in A column is found
        Do While [colA].Offset(row_Offset, 0) <> ""
            If [colA].Offset(row_Offset, 1) = [FilterBy] Then
                filters(UBound(filters)) = [colA].Offset(row_Offset, 0)
                ReDim Preserve filters(0 To UBound(filters) + 1)
            End If
            row_Offset = row_Offset + 1
        Loop
    
        'Now apply the filter
        Range([colA], [colA].Offset(row_Offset - 1, 1)).AutoFilter 1, filters, xlFilterValues, , True
    End Sub
    

【讨论】:

    猜你喜欢
    • 2017-01-14
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-13
    • 1970-01-01
    • 2017-09-05
    • 2022-12-21
    • 1970-01-01
    相关资源
    最近更新 更多