VBA根据国家/地区将电话前缀添加到电话号码列

时间:2015-08-11 13:28:11

标签: vba prefix phone-number

我真的需要你的帮助来创建一个宏,它会根据位于另一列中的国家/地区信息,为特定列中的所有手机中没有单元格添加前缀。

根据列J中的国家/地区,我想将国家/地区电话前缀添加到K列中的单元格。如果电话号码已经以正确的前缀开头,则应保留原样。

我提出了一些东西,但它非常原始,只是将相同的信息添加到行中的所有单元格中...我真的被卡住了

Sub Add1()
ForEach r In Range("K2:K")
r.Value = r.Value +44
Next r
EndSub

这将非常有用,为我节省了大量的手工工作时间!我真的很感激我能得到的任何帮助。

2 个答案:

答案 0 :(得分:0)

因此,如果您希望在指定范围内的每个单元格中添加“ 44 ”,则可以在代码中使用以下内容:

For Each r In Range("K2:K30")
    If Not (Left(r.Value, 2) = "44") Then
        r.Value = "44" & r.Value
    End If
Next r

请注意,我已指定Range的结尾(所以“K2:K30”),然后检查值的前两个字符,看它是否为“ 44 ”。如果没有,那么“ 44 ”将被添加到单元格内容之前,并且过程循环。

显然,您可以将“ 44 ”替换为您想要的任何值(例如“ +44 ”或其他适当的代码和值)。

答案 1 :(得分:0)

公式解决方案

请注意,这适用于任何国家/地区,只要它们位于查找表中即可。创建一个名为" Country_Codes"并创建一个如下表格,其中A列为国家,B列为代码

Country Code
Austria 43
United Kingdom  44
Denmark 45
Sweden  46
Norway  47
Poland  48
Germany 49

国家/地区(在第J列中)必须与上述查找表相匹配才能生效。可以在上面的查找表中按照您的意愿命名它们。对于国家/地区代码,可以在网络上找到良好的起点。

然后使用vlookup,我把下面放在L2中(可以放在第一个空列中),然后用你的数据自动填充

=VLOOKUP(J2,Country_Codes!A:B,2,FALSE)&K2

VBA替代

arr1和arr2需要串联添加

Sub t()
Dim arr1()
Dim arr2()

arr1 = Array("Austria", "United Kingdom", "Denmark", "Sweden", "Norway", "Poland", "Germany")
arr2 = Array(43, 44, 45, 46, 47, 48, 49)

With ActiveSheet
    For Each cell In .Range("J2:" & .Range("J2").End(xlDown).Address)
        Found = 0
        For i = 0 To UBound(arr1)
            If cell.Value = arr1(i) Then
                cell.Offset(0, 2).Value = arr2(i) & CInt(cell.Offset(0, 1).Value)
                Found = 1
                Exit For
            End If
        Next

        If Found = 0 Then
            'Country not found in arr1()
            NF = NF & "," & cell.Value
        End If
    Next
End With

If Len(NF) > 1 Then
    MsgBox "These countries could not be found :" & Right(NF, Len(NF) - 1)
End If

End Sub

上面将组合值放在L中。如果想要覆盖值改变

cell.Offset(0, 2).Value = arr2(i) & CInt(cell.Offset(0, 1).Value)

cell.Offset(0, 1).Value = arr2(i) & CInt(cell.Offset(0, 1).Value)