首页 > 解决方案 > 根据单元格是否包含另一个工作表中单元格的值来过滤表格

问题描述

我在 Sheet1 中有 Tabel1,其中包含生产存储桶的信息。存储桶编号的一个示例是“ APG-1710 -072621 - A3 ”,其中“072621”是日期,粗体部分会发生变化。

我在名为 StandardWork "=Today()" 的表格中的单元格 A2 中有格式为 mmddyy 的日期

当 Table1 是单元格中数据的一部分时,如何按日期过滤?

我的尝试:

Sub Filter_Bucket()

Private Sub Worksheet_Change(ByVal Target As Range)
   If Target.Address = StandardWork.Range("A2").Value Then
       Sheet1.Range("Table1").CurrentRegion.AdvancedFilter Action:=xlFilterInPlace, CriteriaRange:=StandardWork.Range("A2").Value
   End If

End Sub

请告知我是否走错了方向,并告诉我在这种情况下你会怎么做。

标签: excelvba

解决方案


当您使用高级过滤器时,您需要有一个标准。因为我不知道您在哪里创建了条件,所以我使用代码创建它并在过滤后将其清除。

这是虚拟的“桌子”

在此处输入图像描述

将此代码放在工作表模块“StandardWork”中

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("A2")) Is Nothing And IsDate(Range("A2")) Then
        ' Transform date to a string
        Dim vDate As String: vDate = CStr(Format(Target.Value, "mmddyy"))
        
        ' Create  the criteria
        Sheet1.Range("D1").Value = "myDate"
        Sheet1.Range("D2").Value = vDate
        
        ' Filter data on sheet1
        Sheet1.Range("A1").CurrentRegion.AdvancedFilter _
            Action:=xlFilterInPlace, _
            CriteriaRange:=Sheet1.Range("D1:D2")
            
        ' Clear the criteria
        Sheet1.Range("D1:D2").ClearContents
   End If
End Sub

推荐阅读