一种电话格式的VBA代码

时间:2017-10-08 16:19:51

标签: excel-vba vba excel

我有一个包含32种不同手机格式的专栏,我需要将其整合为一种格式:(###)### - ####。目标是将此格式化数据上载到现有数据库中。我确实找到了一些有帮助的公式,但这些公式需要辅助细胞。

我认为一些包含少于10位数字或超过10位数的单元格将被手动修复,但尚未作出任何决定。那么,就目前而言,我的某些小区的电话号码少于或多于普通电话号码(10个字符)

以下是一些原始数据和我需要查看的结果的表格。

Original Data       Result
*6.5033E+14     (650)329-670061133
*5.07127E+12        (507)127-2004904
*4.0809E+11     (408)089-787487
*9258254882     (925)825-4882
*6547621             (654)762-1
*310921278      (310)921-278
*415 6995743        (415)699-5743
*209-986-334        (209)986-334
*661-331-2792       (661)331-2792
*(831)383-8650 (1103)       (313)838-6501103
*(415)488-9437 (517)        (415)488-9437517
*(831)383-9452 (32)     (831)383-945232
*(408)927-9482      (408)927-9482
*(000)408-7089      (000)408-7089
*b      
*Oakland        

是否有可能创建一个宏,所以我不必使用具有各种公式的辅助单元格?此外,我确实有没有数字的单元格,所以我需要一个条件来忽略这些单元格。

谢谢

迈克尔

1 个答案:

答案 0 :(得分:1)

使用此UDF。

Function TelFormat(s As String)
    Dim sRp As String, n As Integer
    s = Replace(s, "(", "")
    s = Replace(s, ")", "")
    s = Replace(s, "-", "")
    s = Replace(s, " ", "")
    n = Len(s) - 6
    sRp = WorksheetFunction.Rept("#", n)
    TelFormat = Format(s, "(000)-###-" & sRp)
End Function

enter image description here