在Excel中进行dynamicsearch和过滤
目前我正在使用Excel进行dynamicsearch和过滤。 我find了一个很好的教程,使用了一个表格和Active-X文本框。 我重新创build了它,当然它的工作原理。 然而,我的问题是它只考虑一列。 现在,我已经创build了另一个表格和另一个search栏,认为它会工作得很好,但是,由于某种原因,它没有。 这是问题:数据集看起来像这样; 在“addr1”中search包含“1”的单元格(正常工作): 在“addr2”中search包含“1”的单元格(不起作用):
我曾尝试设置格式为文本,一般,数字等,但似乎没有任何影响。 第二个search应该列出包含“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
任何人有任何解决办法?
我的示例文件可以在这里find: https : //www.dropbox.com/s/b4hpsczrhjbe2is/searchbar.xlsm?dl=0
感谢您的任何反馈!
在第二个代码中:
Private Sub TextBox2_Change() ActiveSheet.ListObjects("address2").Range.AutoFilter Field:=1, Criteria1:="*" & [B1] & "*", Operator:=xlFilterValues End Sub
您应该将Field:=1
更改为Field:=2
,否则您将在addr1
列的TextBox2_Change
上search内容。
你现在面临的问题是,filter"*1*"
只会匹配string,而不是数字。 即使您将单元格设置为Text
格式, 已经input的数字仍然会被parsing为数字; 他们不会被转换成string。 你有两种方式input一个数字作为string:
-
将其格式化为
Text
后 ,将其input到单元格中 -
input它前面有一些
'
(单引号)。 即'123
。 这将强制Excel将其作为string,即使单元格的格式为General
。
暂时你可以写一个简单的macros来将所有表格的数据转换成string,然后从这里开始。
最后我不明白你为什么要为三个相邻列中的每一个定义一个不同的表格。 你应该只有一个三列的表。