我们都已经在电视上看到了广告:“致电1-800,为您的这把超锋利刀具设置此功能。”您可能需要将电话号码从文本版本(如广告所示)转换为该文本代表的号码。以下宏DoPhone将为您执行转换魔术:

Sub DoPhone()

Dim rngSrc As Range     Dim lMax As Long, lCtr As Long     Dim J As Integer     Dim Phone As String, Digit As String

Set rngSrc = ActiveSheet.Range(ActiveWindow.Selection.Address)

lMax = rngSrc.Cells.Count

For lCtr = 1 To lMax         If Not rngSrc.Cells(lCtr).HasFormula Then             Phone = rngSrc.Cells(lCtr).Value             For J = 1 To Len(Phone)

Digit = Ucase(Mid(Phone, J, 1))

Select Case Digit                     Case "A" To "P"

Digit = Chr((Asc(Digit) + 1) \ 3 + 28)

Case "Q"

Digit = "7"     'May want to change                     Case "R" To "Y"

Digit = Chr(Asc(Digit) \ 3 + 28)

Case "Z"

Digit = "9"     'May want to change                 End Select                 Mid(Phone, J, 1) = Digit             Next J             rngSrc.Cells(lCtr).Value = Phone         End If     Next lCtr End Sub

DoPhone过程将尝试在不包含公式的任何单元格中转换信息。您需要做的就是选择要转换的一个或多个单元格,然后运行该过程。结果是,单元格中的任何文本都将在电话上转换为等效的数字。因此,598-TIPS变为598-8477。

您应该注意DoPhone的一个小特性,您可能需要更改它。某些电话将字母Q和Z分别识别为数字7和9。其他人仅将这些数字留在外面,或者将它们转换为0。如此处所述,DoPhone会将这些字母转换为7和9。您可以根据需要更改Select Case结构中的适当位置,因此可以根据需要将其更改为数字。满足您的需求。 (适当的地方在列表中被注释。)

注意:

如果您想知道如何使用此页面(或_ExcelTips_网站上的任何其他页面)中描述的宏,我准备了一个特殊页面,其中包含有用的信息。

_ExcelTips_是您进行经济高效的Microsoft Excel培训的来源。

本技巧(11802)适用于Microsoft Excel 2007、2010、2013和2016。您可以在此处为Excel的较旧菜单界面找到此技巧的版本:

链接:/ excel-Converting_Phone_Numbers [转换电话号码]。