Hola a todos:
Hace unos días respondí a una consulta en la que un lector me preguntaba sobre la forma de incorporar a un proceso un código que pudiese reemplazar determinados caracteres, por ejemplo: la ñ por la n.
La aplicación que estaba desarrollando iniciaba consultas a internet y necesitaba controlar que estos caracteres se reemplazasen por los que él indicaba. Además también necesitaba hacer algunas modificaciones con otros datos en los que debía reemplazar algunos números por otros.
Para realizar esta tarea, opté por hacer uso de una estructura Select Case, dado que me permitía realizar todo lo que me pedía.
Veámoslo con un ejemplo sencillo, tenemos varias informaciones en las cuatro primeras líneas:
Para el primer caso, se necesita cambiar la ñ por una n, en los siguientes casos, si los números son el 1, el 2 o el 3, debemos mostrar un 1, si son el 4, el 5 o el 6 debemos mostrar un 2 y si son el 7, el 8 o el 9, un 3. Y en la última fila varios números combinamos.
Pues bien, para hacer este ejercicio vamos a utilizar la siguiente macro:
Sub EJEMPLO_SELECT_CASE()
'Definimos variables
Dim sDato As String, nItem As String
Dim i As Integer, j As Integer, sLargo As Integer
With Sheets("DATOS")
Final = Application.CountA(.Range("A:A"))
'Iniciamos bucle por cada celda de la columna A
For i = 2 To Final
sLargo = Len(.Cells(i, 1))
'Si hay datos entonces iniciamos segundo bucle
If sLargo > 0 Then
'Extraemos cada carácter de la celda seleccionada
For j = 1 To sLargo
nItem = Mid(.Cells(i, 1), j, 1)
'Iniciamos estructura Select Case
Select Case nItem
Case "Ñ"
nItem = "N"
Case "ñ"
nItem = "n"
Case 0 To 3
nItem = "1"
Case 4 To 6
nItem = "2"
Case 7 To 9
nItem = "3"
End Select
'Agrupamos de nuevo la palabra
sDato = sDato & nItem
Next j
End If
'Pasamos el dato a la columna B
.Cells(i, 2) = sDato
'Igualamos Sdato a 0
sDato = 0
'Seguimos con la próxima palabra/string
Next i
End With
End Sub
Como podéis observar, tenemos varios bucles for – next, uno para recorrer las filas y otro para recorrer la cadena de texto dentro de esa fila.
A continuación aplicamos el Select Case que hemos programado según los parámetros requeridos, cambiar la ñ por la n (también si es mayúscula) y por grupo de números para obtener este resultado:
Como podéis observar, los cambios se realizan según lo esperado, y podríamos seguir añadiendo condiciones o (casos) a nuestro Select según nuestras necesidades.
Y esto ha sido todo, espero que os sea de utilidad 🙂
Descarga el archivo de ejemplo pulsando en: ESTRUCTURA SELECT CASE PARA REEMPLAZAR CARACTERES EN UNA CADENA DE TEXTO O NÚMERO
¿Te ha resultado de interés?, puedes apoyar a Excel Signum con una pequeña donación.
¡¡Muchas gracias!!
MUCHAS GRACIAS