Modificar macro para teléfonos
Buen dia,
Tengo una macro que me permite limpiar y poder modificar en caso de ser teléfonos de provincia en una gran lista de teléfonos, el detalle es que solo me permite utilizarlo haciendo la comparación entre dos columnas.EJM
Teno los datos de la siguiente manera
A B C D E
PERSONA DEPARTAMENTO TELEFONO1 TELEFONO2 TELEFONO3
Max LIMA 14567891 12345678 14561230
Podrían ayudarme a realizar una comparación de todas las columnas que tiene información con la columna B, en el caso de las columnas que sean a partir de la C en adelante pudiendo llegar a tener entre 1 y 8 teléfonos con solo ejecutar una vez la macro.
Esta es la macro que he estado utilizando
Sub Formateo_Telefonos_Lima()
Dim INTENTAR As Long, total As Integer
Dim contador1 As Integer, contador2 As Long, contador3 As Integer
Dim temporal As String
Dim columna1 As String, columna2 As String
INTENTAR = 2 '1era fila a verificar
contador1 = 0 'contando los # incorrectos
contador2 = 0 'contando los # incorrectos
contador3 = 0 'contando los # incorrectos
temporal = ""
columna1 = InputBox$("Ingrese la columna de teléfonos fijos a formatear : ")
columna2 = InputBox$("Ingrese la columna de Departamento a considerar : ")
While Range("A" & INTENTAR).Value <> ""
temporal = Range(columna1 & INTENTAR).Value
If Len(Range(columna1 & INTENTAR).Value) = 11 And Mid(temporal, 3, 1) = "0" Then
'Si es de 11 dígitos y 3er dígito es 0 se corta a 8 dígitos
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = Right(Range(columna1 & INTENTAR).Value, 8)
End If
If (Len(Range(columna1 & INTENTAR).Value) = 10 And Left(temporal, 2) = Mid(temporal, 3, 2)) Or (Len(Range(columna1 & INTENTAR).Value) = 10 And Left(temporal, 2) = "10") Then
'Si es de 10 dígitos y los 2 primeros dígitos son igualeas que los 2 segundos
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = Right(Range(columna1 & INTENTAR).Value, 8)
End If
If Len(Range(columna1 & INTENTAR).Value) = 7 And Left(Range(columna1 & INTENTAR).Value, 1) <> 9 And Left(Range(columna1 & INTENTAR).Value, 1) <> 1 Then
'Si es de 7 dígitos (1er dígito diferente a 1 y 9) se antepone 1
contador1 = contador1 + 1
Range(columna1 & INTENTAR).Value = "1" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 8) = "AMAZONAS" Then
'Si es del dpto de amazonas antepone 41
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "41" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 6) = "ANCASH" Then
'Si es del dpto de ancash antepone 43
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "43" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 8) = "APURIMAC" Then
'Si es del dpto de apurimac antepone 83
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "83" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 8) = "AREQUIPA" Then
'Si es del dpto de arequipa antepone 54
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "54" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 8) = "AYACUCHO" Then
'Si es del dpto de ayacucho antepone 66
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "66" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 9) = "CAJAMARCA" Then
'Si es del dpto de cajamarca antepone 76
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "76" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 5) = "CUSCO" Then
'Si es del dpto de cusco antepone 84
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "84" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 12) = "HUANCAVELICA" Then
'Si es del dpto de huancavelica antepone 67
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "67" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 7) = "HUANUCO" Then
'Si es del dpto de huanuco antepone 62
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "62" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 3) = "ICA" Then
'Si es del dpto de ica antepone 56
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "56" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 5) = "JUNÍN" Then
'Si es del dpto de junin antepone 64
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "64" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 11) = "LA LIBERTAD" Then
'Si es del dpto de la libertad antepone 44
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "44" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 10) = "LAMBAYEQUE" Then
'Si es del dpto de lambayeque antepone 74
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "74" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 6) = "LORETO" Then
'Si es del dpto de loreto antepone 65
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "65" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 13) = "MADRE DE DIOS" Then
'Si es del dpto de madre de dios antepone 82
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value = "82" & Range(columna1 & INTENTAR).Value
End If
If Len(Range(columna1 & INTENTAR).Value) = 6 And Right(Range(columna2 & INTENTAR).Value, 8) = "MOQUEGUA" Then
'Si es del dpto de moquegua antepone...