我真的需要你的帮助来创建一个宏,它会根据位于另一列中的国家/地区信息,为特定列中的所有手机中没有单元格添加前缀。
根据列J中的国家/地区,我想将国家/地区电话前缀添加到K列中的单元格。如果电话号码已经以正确的前缀开头,则应保留原样。
我提出了一些东西,但它非常原始,只是将相同的信息添加到行中的所有单元格中...我真的被卡住了
Sub Add1()
ForEach r In Range("K2:K")
r.Value = r.Value +44
Next r
EndSub
这将非常有用,为我节省了大量的手工工作时间!我真的很感激我能得到的任何帮助。
答案 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
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)