我有一张需要清理的 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 包含True
或False
取决于我们是否有一组在字符串开头的数字。
因此,对于 E1,我们只需If
检查是否D1
为True
,如果是,则显示A1
从位置 21 开始的所有内容。如果D1
为False
,则 E1 仅显示全部内容A1
:
=IF(D1, MID(A1, 21, LEN(A1)), A1)