Cómo sustituir grupos de números por letras

numeros-por-letras
El otro día recibí en el foro un mensaje en la página de Facebook de AyudaExcel de un usuario que tenía una duda. No suelo resolver las dudas que no se plantean en el foro, pero esta vez hice una excepción. El usuario dispone de una columna en cuyas celdas se encuentran varias series de números separados por espacios. Cada grupo de números estaba comprendido entre 1 y 100, con un número variable de grupos. Varias personas, aparte de él, debían hacer esa tarea La duda o consulta que me hacía es que necesitaba sustituir cada cada grupo de números de la celda por una letra diferente atendiendo al criterio de que si estaba comprendido entre 1 y nueve, se debía sustituir por la letra “U” y si era mayor de nueve, por la letra “D”. Pues manos a la obra. Al principio pensé en dividir cada celda en columnas utilizando el espacio como separador, y una vez separados los números, crearía una función SI() donde se establecerían los criterios deseados por el usuario y en una columna auxiliar. Se concatenarían los valores devueltos de……..  demasiado enrevesado. Lo dejé. Este usuario lo que necesita es una función personalizada, ya que el código VBA es mucho más eficiente  deja la hoja de cálculo más limpia que un montón de funciones y columnas auxiliares…. Además, si Este es la función que escribí. Más abajo te explico el funcionamiento:
Function Sust_Num_Let(c)
' Declaro las variables a utilizar
Dim i As Integer
Dim a As String
Dim texto As String

' Si la celda está vacía, no se ejecuta la función
If Len(Trim(c)) = 0 Then Exit Function
' Bucle que se repite el mismo número de veces
' que caracteres tiene la celda

For i = 1 To Len(c) + 1
    If i > Len(c) Then GoTo Buc
' Se van acumulando números hasta que se encuentra un espacio
    If Mid(c, i, 1) <> " " Then

        a = a & Mid(c, i, 1)
    Else
Buc:
' Aquí establezco los criterios dados por el usuario
On Error GoTo Error
        If a >= 1 And a <= 9 Then
            texto = texto & "U "
        Else
            texto = texto & "D "
        End If
' Se vacía la variable para que pueda albergar el
' siguiente grupo de números
    a = ""
    End If

Next i

Sust_Num_Let = texto
' Si no existen errores, aquí termina la función
Exit Function

' Si se encuentran caracteres no numéricos en la celda,
' se produce un error que se gestiona con las siguientes líneas

Error:
Er = MsgBox("Solo se pueden evaluar números", , "Error")

End Function
Después de declarar las variables, se crear un bucle que cada vez que se ejecuta, agrupa los números y determina si cumple las condiciones. Dependiendo de si las cumple o no, se va agregando una letra diferente por cada grupo de números. La función gestiona los posibles errores que se pueden dar si un usuario introduce una letra en la celda o si finaliza el contenido con un espacio. El resultado final es una cadena de texto. ¿Te ha parecido útil el artículo? ¡Comenta!   [attachments include=»4488″]
Sergio Propergol
Escrito por
Sergio Propergol
Formador Excel y Power BI · Fundador de Ayuda Excel

Desde 2006 ayudo a profesionales y empresas a dominar Excel y Power BI de forma práctica, divertida y sin tecnicismos. Dejé el mundo corporativo en 2019 para dedicarme al 100% a la formación. Mi objetivo es siempre el mismo: que dejes de ver Excel como un problema y empieces a verlo como la solución que puede ser.

+25 años de experiencia
+4.200 alumnos formados
+500K lectores al mes
Logo del curso De Cero a Exceler

Domina Excel, de Cero a Experto

¿Atascado? Deja de buscar soluciones puntuales. Aprende a dominar Excel para siempre con nuestro curso online. Más de 115 lecciones y soporte directo.

Posts más leídos