清理 Excel 中的电话号码数据

清理 Excel 中的电话号码数据

我想清理我的电话号码数据。公式

=SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(E2,"(",""),")",""),"-","")," ",""),".","")+0

完成部分工作。但我还想加入一条IF()语句,如果长度小于 11 且开头没有 0,则添加前导 0。号码可以是固定电话或手机,但我认为主要问题是缺少 0 和空格。请参阅下面的数据示例:

7523698745
7896541236
1235552207
07841 256321
01235552204
7845 213698
07845632158
01235552204

谢谢。

答案1

从您的问题来看,您似乎试图遍历一个包含不同特殊字符的电话号码,并提取电话号码的整数。例如,该号码(123) 456-7890应返回01234567890

尝试以下用户定义函数(UDF 的解释

Function PARSEPHONENO(number As String) 'Number is the selected cell

Application.Volatile 'The formula will recalculate itself
Dim answer As String 'The value returned from the function
Dim i As Integer 'Used to loop through each character of the selected 'number' String

     For i = 1 To Len(number) 'For each character of the cell from 1 to the lenght of the string
           If IsNumeric(Mid(number, i, 1)) Then answer = answer & Mid(number, i, 1) 'If the value if numberic then add it to the answer
     Next i 'Next Character

     If Len(answer) < 11 And Left(answer, 1) <> "0" Then answer = "0" & answer 'If the answer is less than 11 digits, add a zero to the beginning of the cell

PARSEPHONENO = answer 'Return the answer
End Function

注意:该公式将返回一个字符串值,其中的数字以前导 0 为单位显示在单元格中。

希望这可以帮助!

答案2

使用列中的当前输出A, 在B1进入:

=IF(AND(LEN(A1)<11,LEFT(A1,1)<>"0"),"0" & A1,A1)

并向下复制:

在此处输入图片描述

答案3

您当前的公式通过添加 强制将结果变为数字0。因为结果一个数字,Excel 会删除所有前导零,因此检查零是没有意义的。下表的 B:E 列显示了这一点。

A 列是样本数据,B 列是公式的结果,D 列是公式末尾不带 的结果+0。C、E、G 和 I 列使用 来显示其左侧单元格的第一个字符=LEFT(cell,1)

在此处输入图片描述

您可以使用一些技巧让 Excel 显示前导零。F 列与 B 列相同,只是自定义格式为"0"#。这显示器前导零,即使它们实际上并不存在,如 G 列所示。

H 列使用此公式

=IF(LEN(B2)=10,0&B2,B2)

它给出了文本结果,但有真正的前导零。

因此,如何处理此问题取决于您是否需要将数据存储为数字还是文本。

相关内容