Excel中的动态搜索与过滤
目前我正在试用Excel中的动态搜索栏和过滤。 我发现了一个很好的教程,它使用了表格和Active-X文本框。我已经重新创建了它,而且它确实有效。然而,我的问题是它只考虑一列。现在,我创建了另一个表和另一个搜索栏,我认为它也可以正常工作,但由于某些原因,它不能正常工作。 问题是: 数据集如下所示; 搜索“addr1”中包含“1”的单元格(正常工作): 搜索“addr2”中包含“1”的单元格(不起作用): 我尝试过将格式设置为文本、常规、数字等,但似乎没有任何效果。第二次搜索也应该列出包含“123”的单元格,但它没有 工作表中的VBA代码:Excel中的动态搜索与过滤,excel,vba,dynamic,filtering,search-box,Excel,Vba,Dynamic,Filtering,Search Box,目前我正在试用Excel中的动态搜索栏和过滤。 我发现了一个很好的教程,它使用了表格和Active-X文本框。我已经重新创建了它,而且它确实有效。然而,我的问题是它只考虑一列。现在,我创建了另一个表和另一个搜索栏,我认为它也可以正常工作,但由于某些原因,它不能正常工作。 问题是: 数据集如下所示; 搜索“addr1”中包含“1”的单元格(正常工作): 搜索“addr2”中包含“1”的单元格(不起作用): 我尝试过将格式设置为文本、常规、数字等,但似乎没有任何效果。第二次搜索也应该列出包含“12
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.”
。这将迫使Excel将其作为字符串,即使单元格的格式是'123
General
最后,我不明白为什么要为三个相邻列中的每一列定义不同的表。您应该只创建一个包含三列的表。试试这两个示例。请参阅下面的图片,了解它们是如何工作的
您应该发布分配给这些文本框的代码,而不是发送下载链接……谢谢,忘了这一点。编辑了条目。