我知道 Microsoft Excel 无法使用正则表达式。此外,筛选函数只能接受 2 个自定义筛选条件,例如包含“a”或包含“b”。
在单元格包含英文和非英文字符的 Excel 文件中,如果行 A 包含任何英文字符(az,不区分大小写),我该如何筛选行?
ps 我不想写宏脚本(VB 或 .NET 代码)
答案1
尝试以下公式。它假定范围是单列。
=LET(data,
BYROW(B2:B7,
LAMBDA(row,
IF(SUM(IFERROR(
FIND({"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"},
LOWER(row)),0)),row,""))),FILTER(data,data<>""))
解释:该公式首先将字符转换为小写。然后,尝试查找行中是否存在从 a 到 z 的字符。如果是,则将位置(字符在文本中的位置)相加。我们将得到一个大于 0 的数字。这适用于 B2 到 B7 范围内的每一行。最后,过滤数据以删除没有这些字符的行。
更改 B2:B7 以匹配您的范围。
编辑(根据 OP 的评论):如果您必须根据某一列(B2 到 B5)过滤表格(B2 到 F5),请采用以下公式:
=FILTER(B2:F5,B2:B5=
BYROW(B2:B5,
LAMBDA(row,
IF(SUM(IFERROR(
FIND({"a","b","c","d","e","f","g","h","i","j","k","l","m","n","o","p","q","r","s","t","u","v","w","x","y","z"},
LOWER(row)),0)),row,""))))
答案2
首先,我不是 Excel 专家。VBA 和所有这些公式可能太复杂,无法过滤给定列内的数据以及左右填充的列。
我的建议是尽快试用一下(至少 90 天免费)。我经常使用它,而且它提供很好的支持。不,我不为他们工作。
ASAP 确实支持正则表达式。
在附件中,您的帖子和一些回复与日期混合在一列中。然后 ASAP > 选择 > 正则表达式 - [az]
只是一个建议。