首页 > 解决方案 > 标准IsLetter /任何文本的VBA自动过滤器

问题描述

我有一列需要作为自由文本子例程的一部分进行过滤。我需要过滤掉所有包含任何类型文本的单元格。我正在使用 vba 代码

    With rng
    .AutoFilter Field:=1, Criteria:= "cannot find solution - need [A-Za-z]"
    .Offset(1, 0).Resize(.Rows.Count - 1).SpecialCells (xlCellTypeVisible).Rows.Delete

代码本身工作正常,我只是无法锻炼如何将标准设置为字母表中的任何字母

有没有办法做到这一点??

感谢您的任何建议。

标签: vbacriteriaautofilter

解决方案


您可以通过 VBA 设置您可以在 Excel 中设置的相同过滤器,因此您应该首先尝试在 Excel 中找到适合您需要的过滤器设置。
找到后,删除过滤器并在再次设置过滤器时录制宏 - 这将向您展示如何使用 VBA 进行设置。

在您的情况下,我设置了一个自定义过滤器:单击该列上的过滤器按钮,选择“数字过滤器”或“文本过滤器”(显示取决于 Excel 猜测该列的主要数据类型),然后选择“自定义过滤器”。

在此处输入图像描述

在那里,选择“包含”并输入 a?作为搜索值。

在此处输入图像描述

如果这符合您的需要,这是 VBA 中的代码:

    .AutoFilter Field:=1, Criteria1:="=*?*", Operator:=xlAnd

如果这不符合您的需要,因为您的过滤器更加复杂,我唯一的想法是创建一个帮助列,编写一个返回或返回的 UDF,True或者False取决于是否要显示该值并过滤该帮助列相反(您可以在该 UDF 中使用正则表达式)。
或者手动循环遍历您的数据并在您的代码中决定哪一行适合 - 但在删除数据时要小心,要么向后循环,要么建立一个联合并一次性删除 - SO上有很多例子。


推荐阅读