Excel 上的正则表达式或类似的解决方案?

Excel 上的正则表达式或类似的解决方案?

我有一张需要清理的 Excel 表。我有 1000 多个地址,出于某种随机原因,供应商发送的数据在街道地址的开头有随机的 16 位数字

但并非全部都是。

我可以编写某种公式来删除格式中存在的前 16 位数字吗?

xxxxxxxxxxxxxxxxxx

数据是这样的

0123 4567 8910 1234 1 Lovely Road (1 Lovely Road)
2 Lovely Road
0123 4567 8910 1234 11 Another Road (11 Another Road)

答案1

假设 A1 包含地址,那么一个简单的解决方案是:

=IF(ISNUMBER(SUBSTITUTE(LEFT(A1, 20), " ", "")*1), MID(A1, 21, LEN(A1)), A1)

它并不完美(例如空格的位置无关紧要)但希望可以适用于大多数数据。

怎么运行的

为了说明其工作原理,我们将分解公式并将每个组件放在以 A1 开头的包含字符串的单元格中。

在 B1 中你想要获取最左边的 20 个字符:

=LEFT(A1, 20)

您想要在 C1 中替换空格:

=SUBSTITUTE(B1, " ", "")

在 D1 中,您需要使用 - 检查它是否为数字,但如果它是包含数字的字符串,ISNUMBER它将返回。因此,我们可以通过乘以 1 (False来源):

=ISNUMBER(C1*1)

所以现在 D1 包含TrueFalse取决于我们是否有一组在字符串开头的数字。

因此,对于 E1,我们只需If检查是否D1True,如果是,则显示A1从位置 21 开始的所有内容。如果D1False,则 E1 仅显示全部内容A1

=IF(D1, MID(A1, 21, LEN(A1)), A1)

相关内容