用于条件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

代码本身运行良好,我只是无法锻炼如何将标准设置为任何字母

有没有办法做到这一点?

谢谢您的建议。

解决方法

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

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

enter image description here

在此处选择“包含”,然后输入?作为搜索值。

enter image description here

如果满足您的需要,这是VBA中的代码:

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

如果由于过滤器更加复杂而无法满足您的需要,那么我唯一的想法就是创建一个帮助器列,编写一个返回TrueFalse的UDF,具体取决于值是否显示,并在该帮助器列上进行过滤(您可以在该UDF中使用正则表达式)。
或手动循环遍历您的数据并在代码中确定适合的行-但删除数据时要格外小心,要么向后循环,要么一次建立并集并删除-有关SO的大量示例。

相关问答

错误1:Request method ‘DELETE‘ not supported 错误还原:...
错误1:启动docker镜像时报错:Error response from daemon:...
错误1:private field ‘xxx‘ is never assigned 按Alt...
报错如下,通过源不能下载,最后警告pip需升级版本 Requirem...