Cómo sustituir grupos de números 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!

 

Sustituir números por letras
Título: Sustituir números por letras (30 clics)
Tamaño: 18 KB

Cómo llegar a fin de mes con menos estrés gracias a Excel

Antes del día 15 puedes tener todos los objetivos mensuales completados. Y los que no, dejarlos programados para que se cumplan sin requerir de tu tiempo.

He preparado 7 de mis mejores trucos explicándote cómo lo hago. Deja tu correo abajo y te enviaré el primero de ellos.

2 comentarios en “Cómo sustituir grupos de números por letras”

  1. Otra forma quizás más elegante podría ser:
    Public Function traduce(p As String)
    Dim arr() As String
    Dim cade As String
    arr = Split(p)
    cade = ""
    For Each num In arr
    If Not IsNumeric(num) Then
    Er = MsgBox("Solo se pueden evaluar números", , "Error")
    Exit Function
    End If
    If num > 9 Then cade = cade & "D " Else cade = cade & "U "
    Next
    traduce = cade
    End Function

Los comentarios están cerrados.

Sergio

Sergio

Experto formador en Excel y Power BI con más de dos décadas de experiencia. Capacito a profesionales para optimizar su trabajo y ser más eficientes. Con un enfoque práctico y cercano, mi objetivo es ayudarte a dominar estas herramientas esenciales. Descubre mis formaciones.MVP de Microsoft 5 años consecutivos.

Cómo llegar a fin de mes con menos estrés gracias a Excel

Antes del día 15 puedes tener todos los objetivos mensuales completados. Y los que no, dejarlos programados para que se cumplan sin requerir de tu tiempo.

He preparado 7 de mis mejores trucos explicándote cómo lo hago. Deja tu correo abajo y te enviaré el primero de ellos.

Buscar

Últimos posts

¿De qué hablo aquí?

Cómo llegar a fin de mes con menos estrés gracias a Excel

Antes del día 15 puedes tener todos los objetivos mensuales completados. Y los que no, dejarlos programados para que se cumplan sin requerir de tu tiempo.

He preparado 7 de mis mejores trucos explicándote cómo lo hago. Deja tu correo abajo y te enviaré el primero de ellos.