Una tarea común de normalización de información es cortar la información recibida para obtener datos que son más útiles. Muchos usan las fórmulas para hacer esto, pero sería más útil automatizar este proceso.
En esta oportunidad, se tratará el caso en el que se reciben números de RUC (11 dígitos) de personas naturales y nos piden obtener los números de DNI(8 dígitos) de las personas.
Utilizaremos el siguiente código:
Sub Trunca()
'Paso N° 1: Declarar las variables
Dim MyRange As Range
Dim MyCell As Range
'Paso N° 2: Guardar los datos antes de cambiar las celdas
Select Case MsgBox("¿Guardará los datos originales?", vbYesNoCancel)
Case Is = vbYes
ThisWorkbook.Save
Case Is = vbCancel
Exit Sub
End Select
'Paso N° 3: Definir el rango objetivo
Set MyRange = Range("a2:a20")
'Paso N° 4: Empezar a correr la macro .
For Each MyCell In MyRange
'Step 5: Extraer nueve dígitos los 9 de la derecha y 8 de izquierda.
If Not IsEmpty(MyCell) Then
MyCell = Right(MyCell, 9)
MyCell = Left(MyCell, 8)
End If
Next MyCell
End Sub
Paso N° 1:
Nos dan la información de los N° de RUC, de 20 personas y queremos obtener los DNI de estas personas:
(Para mayor visualización de la imagen, hacer click en la misma)
Paso N°2
La idea es cortar de los números de RUC, sacar el 10 inicial y el último dígito autogenerado. Utilizar el código, utilizando los comandos Left y Right.
(Para mayor visualización de la imagen, hacer click en la misma)
Paso N° 3
Correr la macro y obtener el resultado.
(Para mayor visualización de la imagen, hacer click en la misma)
El código expuesto hará que primeramente pregunte si desea guardar los datos de las celdas, dado que la macro escribirá encima de los mismos, y es necesario guardar los originales.
Y posteriormente se obtendrán los DNI de las personas naturales, que era el objetivo.
Por: Cristian Nasser