【发布时间】:2016-04-22 08:39:45
【问题描述】:
所以,这是我的问题...
我有一列字符串如下所示:
“2,3” “1,2” “2” “3,22,1” "32,5"
现在,我想做的是找到一种方法(无需为此编写我自己的函数)来过滤不包含“2”的所有内容(带有“32”或“22”的行需要过滤掉)。
因此,例如,通过仅保留上面列表中的“2”,我想得到: “2,3” “1,2” “2”
我现在使用以下过滤器进行过滤: 1. 包含“2”或包含“,2”或等于“2”
不幸的是,前两个过滤器会保留“3,22,1”,而第二个过滤器会保留“32,5”。
关于如何使用过滤器功能做到这一点的任何想法? 就像我说的,我可以为它编写一个函数,但我会尽量减少代码并学习如何更好地使用 VBA。
提前感谢您! 里卡多
【问题讨论】:
-
我只是想到了一个解决方案..需要测试,现在没有时间.. ActiveSheet.Range("A:A").AutoFilter Field:=1, Criteria1:=Array("2, ", ",2","2",",2,")
-
酷,如果这不起作用,我很确定有一种方法可以遍历单元格并使用 InStr 根据标准进行检查!如果需要,我可以提供帮助,但同时祝你好运:)
-
对每个 ",2" "2,", "2", ",2," 分别使用自动过滤器可以正常工作。当我尝试使用这样的数组组合它们时:Selection.AutoFilter field:=1, Criteria1:=Array(",2", "2,", "2", " ,2,") 它只给我数组最后一个元素的过滤器。我需要找到一种方法来应用由 OR 链接的 4 个条件。我知道原则上只能使用 2,但必须有一种解决方法。我认为使用 Array() 是其中之一,但它对我不起作用。有什么想法吗?
-
@Riccardo 我不认为你可以用
AutoFilter做到这一点。您可以通过编写用于测试2的Excel 公式或UDF 轻松地使用AdvancedFilter来完成此操作。当然,自己动手可能会更快。 -
@Riccardo 实际上,您可以使用 AutoFilter 和一个包含返回 true 或 false 的公式的帮助列来做到这一点。然后过滤帮助列。数组输入公式
=OR(EXACT("2",TRIM(MID(SUBSTITUTE(A6,",",REPT(" ",99)),(ROW(INDIRECT("1:10"))-1)*99+1,99))))可以做到这一点。
标签: string excel vba autofilter