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 (170 clics)
Tamaño: 18 KB

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

La destreza y el perfeccionismo quizá sean las dos virtudes que me permiten ayudar a mis clientes a facilitar las tareas administrativas de sus negocios.

Centro de preferencias de privacidad

Obligatorias

Las cookies es una manera de recoger información personal de forma indirecta, por lo que cumpliendo con el art. 22.2 de la Ley de la Sociedad de la Información y del Comercio electrónico, voy a indicarte cuáles son las cookies de terceros que se descargarán en tu navegador, la duración de las mismas y la finalidad de cada una de ellas.

Estas cookies de terceros se utilizan para la elaboración de perfiles de clientes. Esta es una actividad fundamental, para estar en posibilidad de ofrecer a visitantes, suscriptores, usuarios y clientes los productos y servicios que satisfagan su experiencia. Si no estás de acuerdo con la elaboración de perfiles puedes eliminar o desactivar las cookies, modificarlas a su preferencia o incluso, dejar de navegar en esta web.

Para evitar la descarga de cookies puedes bloquear las mismas mediante la configuración de tu navegador, evitando así que se almacenen en tu disco duro. Pero debes saber a eliminar las cookies, parte de la web no funcionará o la calidad de la misma puede verse afectada.

Publicidad

Ebook De 0 a 100 con macros y VBA

De 0 a 100 con macros y VBA

Esta oferta no es para siempre...

¡no la desaproveches!