Problema con macro
Buen Dia,
Tenia unos problemas para modificar una macro, es el siguiente:
- Lo que hace esta macro es encontrar teléfonos sin código de ciudad y los agrega, los teléfonos comienzan en la columna C (en la columna B esta la ciudad de donde se saca el codigo), en la columna A esta el DNI de la persona (La columna A no es necesaria utilizarla).
* Lo que quiero hacer es que al encontrar un teléfono con varios números repetidos lo borre EJ.
45444482 -Este numero telefónico tiene 5 veces repetido el numero 4 asi que este teléfono no me sirve que se borre
43133333 - Este teléfono tiene 6 veces repetido el numero 3 tampoco me sirve
OJO: Que solo lo borre si tiene a partir de 5 números repetidos un solo numero telefónico.
* También que si encuentra un teléfono con 11 caracteres y el tercer numero es 9 que borre los dos primeros. EJM
ORIGINAL DEBE QUEDAR
48998547784 - 998547784
54998754485 - 998754485
83956547542 - 956547542
En esta lista se borraron los dos primeros números de cada teléfonos siempre en cuando tenga 11 dígitos y el tercero sea el numero 9
* Si encuentra un telefono de 8 digitos y el primero es 9 agregar un 9 mas adelante EJ:
98985487 que se convertira en 998985487
* Si existe una celda con el numero 123456 dentro de sus numeros borrar la celda
* Por ultimo si el numero telefónico tiene menos o igual que 5 dígitos que se borre el numero
EJM.
45845
4
4587
45783
Estos números telefónicos no son útiles.
DEJO LA MACRO:
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 : ")
columna2 = "B"
While Range("A" & INTENTAR).Value <> ""
ucol = Cells(INTENTAR, Columns.Count).End(xlToLeft).Column
For j = 3 To ucol
columna1 = Mid(Cells(INTENTAR, Cells(INTENTAR, j).Column).Address, 2, 1)
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, 5) = "CUZCO" 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, 5) = "JUNÍN" Then
'Si es del dpto de junin antepone 64
contador2 = contador2 + 1
Range(columna1 & INTENTAR).Value =...