excel - 如何通过单元格vba中的值类型过滤表格
问题描述
我想根据第一个表中的单个单元格值过滤另一张表上的表
嗨,在准备新报告期间,我遇到了这样的问题:我尝试根据第一个表中的单个单元格值在另一张表上过滤表。我编写的代码似乎有效,但并没有显示所需的结果,它只突出显示空行。如果我不使用字符串,请将日期直接放在代码中,一切看起来都很好,但可惜这不是我想要的。有什么建议吗?
Sub Makro3()
Dim ws As Worksheet
Dim tbl As ListObject
Dim mySearch As Variant
Dim sht As Worksheet
Set ws = Arkusz6
Set sht = Arkusz1
Set tbl = ws.ListObjects("ineffective")
'Set tbl = ws.Range("A4:E31")
mySearch = sht.Range("B2").Value
'tbl.Range.AutoFilter Field:=4, Criteria1:="28.06.2019", Operator:=xlAnd
'tbl.Range.AutoFilter Field:=4, Criteria1:="=" & TextBox1.Text & "*", Operator:=xlAnd
'tbl.Range.AutoFilter Field:=4, Criteria1:="*" & TextBox1.Text & "*", Operator:=xlFilterValue
'tbl.Range.AutoFilter Field:=4, Criteria1:="=*" & mySearch & "*", Operator:=xlAnd
End Sub
解决方案
这是一个示例,说明如何根据另一个工作表上的单元格的值自动过滤表中的日期值。在下面的示例中,日期在表格的第 2 列中。
Sub FilterTable()
Dim ws1 As Worksheet 'sheet with the table
Dim ws2 As Worksheet 'sheet with the search parameter
Dim tbl As ListObject 'table object
Dim mySearch As Variant 'or Dim as Date; cell with the search parameter
Set ws1 = Worksheets("Data")
Set ws2 = Worksheets("Filter Table by Type")
Set tbl = ws1.ListObjects("t_Data")
mySearch = ws2.Range("A1").Value
Debug.Print "mySearch = " & mySearch
With tbl.Range
'~~> Show all records
.AutoFilter Field:=2
If IsDate(mySearch) Then
.AutoFilter Field:=2, _
Operator:=xlFilterValues, _
Criteria1:=mySearch
Else
.AutoFilter Field:=2, _
Operator:=xlFilterValues, _
Criteria1:=DateSerial(Year(mySearch), Month(mySearch), Day(mySearch))
End If
End With
'~~> Release the variables from memory
Set ws1 = Nothing
Set ws2 = Nothing
Set tbl = Nothing
mySearch = vbNull
End Sub
推荐阅读
- elasticsearch - 为搜索查询中的术语分配权重的弹性如何?
- python - 使用DataFrame矩阵的相关散点图?
- swift - 在 Xcode 中添加 AdMob
- android - 麻烦交叉编译Python
- amazon-web-services - AWS Amplify - 配置的安全性
- android - 修复底部导航栏在其片段包含协调器布局时不断扩展
- unity3d - 似乎没有为 VisualStudio 设置 RoslynTargetsPath
- javascript - 有没有办法使用防止默认并仍然接收发布请求?
- linux - 如何传递命令行参数
- c# - 不使用 Mailkit 或 .net smtp 客户端发送的电子邮件