格式化电话号码 - vba

时间:2013-09-26 05:13:13

标签: vba ms-access excel-vba ms-access-2007 excel

我有大量的数据集 - 带有电话号码的10 000条记录:

Phone_N
5656666666
6676767677
6767677777
5555555555
5555567888
6666777777

我需要格式化它:

Phone_N
(565) 666-6666
(222) 767-3333
(676) 777-7777

等...

我的数据已经没有空格,“ - ”,“/”或任何其他字符。

只需要以适当的手机格式进行格式化。

如果你能指出正确的方向,那将是非常有帮助的。

4 个答案:

答案 0 :(得分:3)

您可以根据需要使用Format Function格式化Phone_N。我不确定Phone_N是文本数字还是数字数据类型,但以下Format示例也会接受。

Phone_N = 2227673333 ' (Phone_N is numeric)
? Format(Phone_N, "(###) ###-####")
(222) 767-3333
Phone_N = "2227673333" ' (Phone_N is text)
? Format(Phone_N, "(###) ###-####")
(222) 767-3333

答案 1 :(得分:1)

无需使用VBA,只需尝试使用Notepad ++,以列模式编辑数据。

答案 2 :(得分:1)

您可以使用UDF(用户定义的功能

将下面的代码粘贴在VBE的标准模块中( Visual Basic编辑器 ALT + F11 右键单击Project Explorer窗口中的任意位置»插入»模块

格式化后使用ADO更新表格

Function FORMAT_NUMBERS(r As Range)
    FORMAT_NUMBERS = "(" & Left(r, 3) & ") " & Right(Left(r, 6), 3) & "-" & Right(r, 4)
End Function

例如

enter image description here

答案 3 :(得分:0)

这可以在VBA中完成。您可以使用以下内容来完成此任务。

Dim rs As DAO.Recordset, TempN As String
Set rs = CurrentDb.OpenRecordset("SELECT Phone_N FROM MyTableName", dbOpenDynaset)

If (rs.RecordCount <> 0) Then
  rs.MoveFirst
  Do While rs.EOF <> True
    TempN = rs.Fields("[Phone_N]").value
    rs.Edit
    rs.Fields("[Phone_N]").value = "(" & Left(TempN, 3) & ") " & _
                                   Left(Right(TempN, 7), 3) & "-" & _
                                   Right(TempN, 4)
    rs.Update
    rs.MoveNext
  Loop
End If