【发布时间】:2022-01-26 15:07:55
【问题描述】:
我正在尝试使用 VBA 中的 AutoFilter 函数在 excel 中使用宏时使用自动过滤器。 在我的数据集中,我有一列需要过滤,该列中的单元格填充了以我要过滤的值开头的值,例如“致病”、“多态性”、“VUS”……但是以我不想在过滤器中使用的更多文本结尾。 例如。 |变体|类| |-------|-----| |V600E |致病变异 - BRAF| |V590A |VUS-D1234567| |G12D |致病变异 - KRAS| |G15A |多态| |A56D |多态性 - KFP| |E4654M|可能是致病变异| 在这种情况下,我想过滤类以“致病性变异”、“VUS”和“可能致病性变异”开头的所有行,例如第 1-3 行和第 6 行。 我找到了一种将自动过滤器用于 2 个值的方法:
ActiveSheet.Range("$A$2:$BB$550").AutoFilter _
Field:=17, _
Criteria1:=("=patho*"), _
Operator:=xlOr, _
Criteria2:=("=VUS*"), _
Operator:=xlFilterValues
这适用于过滤器中的 2 个参数,但我不能使用超过 2 个条件。当我使用以下代码时,过滤不起作用
ActiveSheet.Range("$A$2:$BB$550").AutoFilter _
Field:=17, _
Criteria1:=Array("=patho*", "=VUS*", "=presumably patho*"), _
Operator:=xlFilterValues
谁能告诉我我做错了什么或如何解决这个问题?
非常感谢!
【问题讨论】:
-
您没有做错任何事情,只是一次不能有两个以上带有通配符的过滤器值。一种解决方法是将列写入数组,将其循环并用虚拟值替换每个匹配项,将数组写回额外的列,用虚拟值过滤额外列中的范围,做你想做的事情(删除或复制),最后删除多余的列。
标签: excel vba autofilter