We have all seen the ads on TV: "Call 1-800-GET THIS for your set of super-sharp knives." You may be faced with the need to convert phone numbers from the text version (as shown on the ads) to the numbers represented by that text. The following macro, DoPhone, will perform the conversion magic for you:
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
The DoPhone procedure tries to convert the information in any cell that does not contain a formula. All you need to do is select the cell (or cells) you want to convert, and then run the procedure. The result is that any text in the cells is converted to their digit equivalents on a phone. Thus, 598-TIPS becomes 598-8477.
You should note one small peculiarity of DoPhone, and you may want to change it. Some phones recognize the letters Q and Z as the digits 7 and 9, respectively. Others simply leave these digits out, or they are converted to 0. DoPhone, as written here, converts these letters to 7 and 9. You can change the appropriate places in the Select Case structure, as desired, so they are changed to numbers according to your needs. (The appropriate places are commented in the listing.)
Note:
ExcelTips is your source for cost-effective Microsoft Excel training. This tip (11802) applies to Microsoft Excel 2007, 2010, 2013, and 2016. You can find a version of this tip for the older menu interface of Excel here: Converting Phone Numbers.
Excel Smarts for Beginners! Featuring the friendly and trusted For Dummies style, this popular guide shows beginners how to get up and running with Excel while also helping more experienced users get comfortable with the newest features. Check out Excel 2013 For Dummies today!
Functions are a common programming construct. They help you to create easy ways of processing information and returning a ...
Discover MoreWant to have you macro completely hide the Excel interface? You can do so by using the Visible property for the Excel ...
Discover MoreWhen you need to get rid of characters in the middle of a cell value, the best way to do it is through the use of macros. ...
Discover MoreFREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
2016-03-06 11:40:12
Willy Vanhaelen
The macro in this tip is way to complicated. Here is one half the size: simplicity is the ultmate sophistication (Leonardo da Vinci).
Sub PhoneNr()
Dim cell As Range, J As Integer, digit As String, phone As String
For Each cell In Selection
If Not cell.HasFormula Then
phone = UCase(cell)
For J = 1 To Len(phone)
digit = Asc(Mid(phone, J, 1))
If digit > 64 And digit < 91 Then
Mid(phone, J, 1) = Mid("22233344455566677778889999", digit - 64, 1)
End If
Next J
cell = phone
End If
Next cell
End Sub
The macro only processes the letters and skips numbers, hyphens and spaces and hence it does the job more efficiently.
The Mid function selects the number according to the letter processed: "22233344455566677778889999": ABC yields 2 ... WXYZ returns 9. You can of course adjust this list of 26 numbers.
Got a version of Excel that uses the ribbon interface (Excel 2007 or later)? This site is for you! If you use an earlier version of Excel, visit our ExcelTips site focusing on the menu interface.
FREE SERVICE: Get tips like this every week in ExcelTips, a free productivity newsletter. Enter your address and click "Subscribe."
Copyright © 2021 Sharon Parq Associates, Inc.
Comments