Macro Elimina Números Residuos

Buen dia,

Estimados tengo una Macro que me elimina teléfonos que no utilizo por longitud de caracteres, necesito que sea mas automatizado, es decir actualmente esta macro la tengo que pasar columna por columna: pero deseo que esta macro revise cuantas columnas tengo y elimine las que no son útiles.

Considerando que la columna A y B no deben ser tocados.

ESTA ES LA MACRO.

Sub Verifica_Telefonos()
Dim INTENTAR As Long, total As Integer
Dim contador1 As Integer, contador2 As Long, contador3 As Integer
Dim columna As String, observación As String, cliente As String
INTENTAR = 2 '1era fila a verificar
contador1 = 0 'contando los # incorrectos
contador2 = 0 'contando los # incorrectos
contador3 = 0 'contando los # incorrectos
columna = InputBox$("Ingrese la letra que corresponda a la columna a analizar los números telefónicos : ")
observación = InputBox$("Ingrese el nombre de la columna donde mostrará la observación : ")
While Range("A" & INTENTAR).Value <> ""
If Len(Range(columna & INTENTAR).Value) = 10 And Left(Range(columna & INTENTAR).Value, 2) = 19 Then
Range(columna & INTENTAR).Value = Right(Range(columna & INTENTAR).Value, 9)
End If
If Len(Range(columna & INTENTAR).Value) = 9 And Left(Range(columna & INTENTAR).Value, 1) <> 9 Then
Range(columna & INTENTAR).Value = Right(Range(columna & INTENTAR).Value, 9)
contador1 = contador1 + 1
Range(observación & INTENTAR).Value = "incorrecto"
End If
If (Len(Range(columna & INTENTAR).Value) < 7 And Len(Range(columna & INTENTAR).Value) > 1) Or Len(Range(columna & INTENTAR).Value) > 9 Then
'Verificando cantidad de teléfonos no válidos por longitud
contador1 = contador1 + 1
Range(observación & INTENTAR).Value = "incorrecto"
Else
If Left(Range(columna & INTENTAR).Value, 5) = 0 Or Right(Range(columna & INTENTAR).Value, 5) = 11111 Or Right(Range(columna & INTENTAR).Value, 5) = 22222 Or Right(Range(columna & INTENTAR).Value, 5) = 33333 Or Right(Range(columna & INTENTAR).Value, 5) = 44444 Or Right(Range(columna & INTENTAR).Value, 5) = 55555 Or Right(Range(columna & INTENTAR).Value, 5) = 66666 Or Right(Range(columna & INTENTAR).Value, 5) = 77777 Or Right(Range(columna & INTENTAR).Value, 5) = 88888 Or Right(Range(columna & INTENTAR).Value, 5) = 99999 Then
'Verificando cantidad de teléfonos no válidos
contador2 = contador2 + 1
Range(observación & INTENTAR).Value = "incorrecto"
Else
If Len(Range(columna & INTENTAR).Value) <> 9 And Left(Range(columna & INTENTAR).Value, 1) = 9 Then
contador3 = contador3 + 1
Range(observación & INTENTAR).Value = "incorrecto"
End If
End If
If Left(Range(columna & INTENTAR).Value, 2) = 19 Or Left(Range(columna & INTENTAR).Value, 2) = 80 Or Left(Range(columna & INTENTAR).Value, 2) = 81 Or Left(Range(columna & INTENTAR).Value, 2) = 85 Or Left(Range(columna & INTENTAR).Value, 2) = 86 Or Left(Range(columna & INTENTAR).Value, 2) = 87 Or Left(Range(columna & INTENTAR).Value, 2) = 88 Or Left(Range(columna & INTENTAR).Value, 2) = 89 Or Left(Range(columna & INTENTAR).Value, 2) = 18 Then
'Verificando celulares no validos
contador3 = contador3 + 1
Range(observación & INTENTAR).Value = "incorrecto"
End If
End If
INTENTAR = INTENTAR + 1
Wend
total = contador1 + contador2 + contador3
MsgBox "La cantidad de números telefónicos incorrectos encontrados en la base de son: " & CStr(total) & "."
End Sub

1 respuesta

Respuesta
1

Confirma solo un detalle: si en todas las columnas el criterio para eliminar es el mismo (parece que sí) y si necesitas los informes en columnas distintas.

si es el mismo criterio paa todas las columnas, hago recordar que las columnas A y B no deben ser tocadas.

gracias

Eeran 2 detalles ;)

'y si necesitas los informes en columnas distintas'... según la columna revisada.

ok. seria bueno tener el informe, pero ese informe que aparezca en el mismo libro de la macro.

Si, claro, irá en el mismo libro, lo que te preguntaba es se debe ir en col aparte x cada col a revisar... bien, así quedó-

Sub Verifica_Telefonos()
'Ajustada x Elsamatilde
Dim INTENTAR As Long, total As Integer
Dim contador1 As Integer, contador2 As Long, contador3 As Integer
Dim columna As String, observación As String, cliente As String
INTENTAR = 2 '1era fila a verificar
contador1 = 0 'contando los # incorrectos
contador2 = 0 'contando los # incorrectos
contador3 = 0 'contando los # incorrectos
columna = 3 'empieza en la col C
columnax = InputBox$("Ingrese la letra que corresponda a la ULTIMA columna de datos a analizar los números telefónicos : ")
observación = InputBox$ ("Ingrese el nombre de la columna donde mostrará la observación : ")
'obtengo el nro de columna final
colfin = Range(columnax & INTENTAR).Column
'Ejecuto el proceso desde la col C hasta la última que el usuario ingresó
For columna = 3 To colfin
 While Range("A" & INTENTAR).Value <> ""
 'la col A dá el fin de rango
 If Len(Range(columna & INTENTAR).Value) = 10 And Left(Range(columna & INTENTAR).Value, 2) = 19 Then
 Range(columna & INTENTAR).Value = Right(Range(columna & INTENTAR).Value, 9)
 End If
 If Len(Range(columna & INTENTAR).Value) = 9 And Left(Range(columna & INTENTAR).Value, 1) <> 9 Then
 Range(columna & INTENTAR).Value = Right(Range(columna & INTENTAR).Value, 9)
 contador1 = contador1 + 1
 Range(observación & INTENTAR).Value = "incorrecto"
 End If
 If (Len(Range(columna & INTENTAR).Value) < 7 And Len(Range(columna & INTENTAR).Value) > 1) Or Len(Range(columna & INTENTAR).Value) > 9 Then
 'Verificando cantidad de teléfonos no válidos por longitud
 contador1 = contador1 + 1
 Range(observación & INTENTAR).Value = "incorrecto"
 Else
 If Left(Range(columna & INTENTAR).Value, 5) = 0 Or Right(Range(columna & INTENTAR).Value, 5) = 11111 Or Right(Range(columna & INTENTAR).Value, 5) = 22222 Or Right(Range(columna & INTENTAR).Value, 5) = 33333 Or Right(Range(columna & INTENTAR).Value, 5) = 44444 Or Right(Range(columna & INTENTAR).Value, 5) = 55555 Or Right(Range(columna & INTENTAR).Value, 5) = 66666 Or Right(Range(columna & INTENTAR).Value, 5) = 77777 Or Right(Range(columna & INTENTAR).Value, 5) = 88888 Or Right(Range(columna & INTENTAR).Value, 5) = 99999 Then
 'Verificando cantidad de teléfonos no válidos
 contador2 = contador2 + 1
 Range(observación & INTENTAR).Value = "incorrecto"
 Else
 If Len(Range(columna & INTENTAR).Value) <> 9 And Left(Range(columna & INTENTAR).Value, 1) = 9 Then
 contador3 = contador3 + 1
 Range(observación & INTENTAR).Value = "incorrecto"
 End If
 End If
 If Left(Range(columna & INTENTAR).Value, 2) = 19 Or Left(Range(columna & INTENTAR).Value, 2) = 80 Or Left(Range(columna & INTENTAR).Value, 2) = 81 Or Left(Range(columna & INTENTAR).Value, 2) = 85 Or Left(Range(columna & INTENTAR).Value, 2) = 86 Or Left(Range(columna & INTENTAR).Value, 2) = 87 Or Left(Range(columna & INTENTAR).Value, 2) = 88 Or Left(Range(columna & INTENTAR).Value, 2) = 89 Or Left(Range(columna & INTENTAR).Value, 2) = 18 Then
 'Verificando celulares no validos
 contador3 = contador3 + 1
 Range(observación & INTENTAR).Value = "incorrecto"
 End If
 End If
 INTENTAR = INTENTAR + 1
 Wend
'terminó el proceso para una col, ahora sigo con el resto
'Incremento la col de inform y vuelvo a la fila 2
observación = observación + 1
INTENTAR = 2
Next
total = contador1 + contador2 + contador3
MsgBox "La cantidad de números telefónicos incorrectos encontrados en la base de son: " & CStr(total) & "."
End Sub

A diferencia del proceso anterior aquí debes ingresar la letra de la última col a revisar .

Se mantiene la solicitud de la 1er col para el informe u observaciones.

Se ejecuta desde la col C hasta la ingresada como última.

Sdos y no olvides finalizar la consulta si el tema queda resuelto.

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas