Excel中的动态搜索与过滤

Excel中的动态搜索与过滤,excel,vba,dynamic,filtering,search-box,Excel,Vba,Dynamic,Filtering,Search Box,目前我正在试用Excel中的动态搜索栏和过滤。 我发现了一个很好的教程,它使用了表格和Active-X文本框。我已经重新创建了它,而且它确实有效。然而,我的问题是它只考虑一列。现在,我创建了另一个表和另一个搜索栏,我认为它也可以正常工作,但由于某些原因,它不能正常工作。 问题是: 数据集如下所示; 搜索“addr1”中包含“1”的单元格(正常工作): 搜索“addr2”中包含“1”的单元格(不起作用): 我尝试过将格式设置为文本、常规、数字等,但似乎没有任何效果。第二次搜索也应该列出包含“12

目前我正在试用Excel中的动态搜索栏和过滤。 我发现了一个很好的教程,它使用了表格和Active-X文本框。我已经重新创建了它,而且它确实有效。然而,我的问题是它只考虑一列。现在,我创建了另一个表和另一个搜索栏,我认为它也可以正常工作,但由于某些原因,它不能正常工作。 问题是: 数据集如下所示; 搜索“addr1”中包含“1”的单元格(正常工作): 搜索“addr2”中包含“1”的单元格(不起作用):

我尝试过将格式设置为文本、常规、数字等,但似乎没有任何效果。第二次搜索也应该列出包含“123”的单元格,但它没有

工作表中的VBA代码:

Private Sub TextBox1_Change()
ActiveSheet.ListObjects("address1").Range.AutoFilter Field:=1, Criteria1:="*"  & [A1] & "*", Operator:=xlFilterValues

End Sub

Private Sub TextBox2_Change()
ActiveSheet.ListObjects("address2").Range.AutoFilter Field:=1, Criteria1:="*" & [B1] & "*", Operator:=xlFilterValues
End Sub
有人有办法吗

我的示例文件可以在这里找到:

感谢您的反馈

在第二个代码中:

Private Sub TextBox2_Change()
ActiveSheet.ListObjects("address2").Range.AutoFilter Field:=1, Criteria1:="*" & [B1] & "*", Operator:=xlFilterValues
End Sub

您应该将
字段:=1
更改为
字段:=2
,否则您将在
TextBox2\u change
addr1
列中搜索内容。

您目前面临的问题是,筛选器
“*1*”
将只匹配字符串,而不是数字。即使将单元格格式化为
文本
,已输入的数字仍将解析为数字;它们不会被转换成字符串。有两种方法可以将数字输入为字符串:

  • 将其格式化为
    Text

  • 输入它,前面加上一些
    (单引号)。i、 e.
    '123
    。这将迫使Excel将其作为字符串,即使单元格的格式是
    General

目前,您可以编写一个简单的宏,将表中的所有数据转换为字符串,然后从中继续


最后,我不明白为什么要为三个相邻列中的每一列定义不同的表。您应该只创建一个包含三列的表。

试试这两个示例。请参阅下面的图片,了解它们是如何工作的


您应该发布分配给这些文本框的代码,而不是发送下载链接……谢谢,忘了这一点。编辑了条目。