【问题标题】:Standardise telephone number format规范电话号码格式
【发布时间】:2017-10-08 16:19:50
【问题描述】:

我有一列包含 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        

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

【问题讨论】:

  • 请说明您是如何从 6.5033E+14 获得 (650)329-670061133 的??
  • 我使用连接函数以这种方式格式化单元格。我正在尝试找到一种创建宏的方法,这样我就可以避免使用辅助列。我目前有一个嵌套的替代函数,可以去掉括号和连字符。如您所见,在某些情况下,电话号码上会附加一个分机号码(这当然是一个错误)。

标签: excel vba phone-number


【解决方案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

【讨论】:

    猜你喜欢
    • 2018-12-01
    • 1970-01-01
    • 2014-04-01
    • 2012-08-11
    • 2012-07-16
    • 2016-05-04
    • 1970-01-01
    • 1970-01-01
    • 2018-12-16
    相关资源
    最近更新 更多