我在Excel中使用高级过滤器时遇到问题。
我将使您理解并重现同样的问题变得很简单。
有一个表T1 和数据
还有一个辅助表T2 ,它是T1的克隆但为空
我将使用T2 进行高级过滤 T1
我将通过我创建的宏来完成此操作,但是您只需单击高级过滤器,然后在对角线中填入“搜索到的值”后选择第二张表即可, SEARCH FIELD栏和一个宏用于此目的,并应用类似这样的过滤器:
O(1)
如果我在搜索字段中写572,会发生什么情况
这是我的宏执行的中间步骤:
结果:
有问题:
在 T1表中,我有一些列,其中一列具有邮政编码(CAP),其单元格的格式为文本,但仅用数字写。
如果我使用“高级过滤器”搜索“文字”,它将起作用:示例
但是,如果我尝试搜索数字值,则只有在搜索到的值匹配整个单元格内容并且“部分工作”的情况下,它才会起作用(他只会在其中显示数字结果单元格的格式为TEXT,黄色背景的单元格的格式为NUMBER ),如果我在搜索字段中放置了Jolly字符:
不起作用:
不显示黄色单元格
显示全部:
如果单元格是文本并以数字开头,则只有在我将整个起始数字和至少1个字符放在其后的情况下,他才能工作:
搜索622SVCB,不起作用:
工作:
除具有黄色背景的单元格外,每个列均已设置为“ TEXT”。为什么会这样?
答案 0 :(得分:3)
在Excel中使用高级过滤器时,请记住以下几点:
Criteria range
的表达式的计算结果应为TRUE
或FALSE
Criteria range
中输入数字时,无论数字在电子表格中的格式如何,Excel都会查找该精确数字(不高,不低)Criteria range
之前是=
除非 ,过滤器以不同的运算符开头(例如>
,{ {1}},<
,>=
,<=
)<>
。例如,如果Criteria range
是 all 个数字(例如Criteria range
),则Excel将查找数字匹配项。如果123
都是字母或字母和数字的组合(例如Criteria range
或abc
),则Excel将基于文本字符进行比较。 / li>
据我所知,您的筛选器不适用于部分数字,因为您实际上是在要求Excel查找该确切数字,而该数字在您的“数据库”中不存在。如果您在 TableT2 中的条件前面加上一个运算符,则应该得到想要的结果。
答案 1 :(得分:3)
我将尝试回答您的问题:
要解决您的问题:
代码
T2.SetDiagonalValue val & "*"
'sample code to force the column to TEXT
Range("Table1[[#All],[TEXT WITH NUMBER]]").TextToColumns
Destination:=Range("Table1[[#Headers],[TEXT WITH NUMBER]]"), DataType:=xlFixedWidth,
FieldInfo:=Array(0, 2)
'end of sample code
T1.Range.AdvancedFilter xlFilterInPlace, T2.Range
这是我得到的结果:
希望这会有所帮助