Convertir el valor de número en texto, para euros en Excel

Compatibilidad: Excel 365 2021 2019 2016

En ocasiones necesitamos convertir el valor de número en texto, para euros en Excel, para ello crearemos una función UDF.

Convertir el valor de número en texto, para euros en Excel

Disponemos en la columna A el valor numérico que deseamos convertir a texto en la columna B.

 AB
1NúmeroTexto
21,00 
313,52 
4123,50 
52.225,30 
6154.650,00 

 

  • CREAR LA FUNCIÓN
  1. Con Excel abierto.

  2. Pulsar la tecla Alt y mantener pulsada / Pulsar la tecla F11. Mostrará el editor de Visual Basic.

  3. Ir a: Barra de Menú / Insertar / Módulo. Mostrará la ventana del módulo donde escribimos la función.

  4. Escribir el código:

    Option Explicit

    Function NumeroLetra(ByVal Valor)
    Dim Unidad, Decimas, Temp
    Dim Moneda, Separador As String
    Dim PosicionDecimal, Cuenta
    Dim origNumLen, origNum
    Moneda = "Euros"
    Separador = ","

    ReDim Resultado(9) As String
    Resultado(2) = " Mil "
    Resultado(3) = " Millones "
    Resultado(4) = " Billones "
    Resultado(5) = " Trillones "

    Valor = Trim(CStr(Valor))
    origNumLen = Len(Valor)
    origNum = Valor

    If Separador = "," Then PosicionDecimal = InStr(Valor, ",")
    If PosicionDecimal > 0 Then

    Decimas = Decenas(Left(Mid(Valor, PosicionDecimal + 1) & "00", 2))
    Valor = Trim(Left(Valor, PosicionDecimal - 1))

    End If

    Cuenta = 1

    Do While Valor <> ""

    Temp = Centenas(Right(Valor, 3))

    If Temp <> "" Then
    If Temp = "UN" And Cuenta > 2 Then

    Unidad = Temp & Left(Resultado(Cuenta), Len(Resultado(Cuenta)) - 3) & " " & Unidad

    Else

    Unidad = Temp & Resultado(Cuenta) & Unidad

    End If
    End If
    If Len(Valor) > 3 Then

    Valor = Left(Valor, Len(Valor) - 3)

    Else

    Valor = ""

    End If

    Cuenta = Cuenta + 1

    Loop

    Select Case Unidad
    Case "": Unidad = "Cero " & Moneda
    Case "UN": Unidad = "Un " & Left(Moneda, Len(Moneda) - 1)
    Case Else

    If origNumLen > 6 And (origNum Mod 1000000) = 0 Then

    Unidad = Unidad & " " & "de " & Moneda

    Else

    Unidad = Unidad & " " & Moneda

    End If
    End Select

    Select Case Decimas
    Case "": Decimas = " con cero Centimos"
    Case "One": Decimas = " con un Centimo"
    Case Else
    Decimas = " con " & Decimas & " Centimos"
    End Select

    NumeroLetra = UCase(Trim(Unidad & Decimas))

    End Function

    Private Function Unidades(DigitoTexto)

    Select Case Val(DigitoTexto)
    Case 1: Unidades = "Un"
    Case 2: Unidades = "Dos"
    Case 3: Unidades = "Tres"
    Case 4: Unidades = "Cuatro"
    Case 5: Unidades = "Cinco"
    Case 6: Unidades = "Seis"
    Case 7: Unidades = "Siete"
    Case 8: Unidades = "Ocho"
    Case 9: Unidades = "Nueve"
    Case Else: Unidades = ""
    End Select

    End Function

    Private Function Decenas(DecenasTexto)
    Dim Resultado As String
    Resultado = ""

    If Val(Left(DecenasTexto, 1)) = 1 Then ' If value between 10-19...
    Select Case Val(DecenasTexto)

    Case 10: Resultado = "Diez"
    Case 11: Resultado = "Once"
    Case 12: Resultado = "Doce"
    Case 13: Resultado = "Trece"
    Case 14: Resultado = "Catorce"
    Case 15: Resultado = "Quince"
    Case 16: Resultado = "Diez y seis"
    Case 17: Resultado = "Diez y siete"
    Case 18: Resultado = "Diez y ocho"
    Case 19: Resultado = "Diez y nueve"

    Case Else
    End Select
    Else

    If Val(Right(DecenasTexto, 1)) = 0 Then

    Select Case Val(Left(DecenasTexto, 1))
    Case 2: Resultado = "Veinte"
    Case 3: Resultado = "Treinta"
    Case 4: Resultado = "Cuarenta"
    Case 5: Resultado = "Cincuenta"
    Case 6: Resultado = "Sesenta"
    Case 7: Resultado = "Setenta"
    Case 8: Resultado = "Ochenta"
    Case 9: Resultado = "Noventa"
    Case Else
    End Select

    Else

    Select Case Val(Left(DecenasTexto, 1))
    Case 2: Resultado = "Veinti"
    Case 3: Resultado = "Treinta y "
    Case 4: Resultado = "Cuarenta y "
    Case 5: Resultado = "Cincuenta y "
    Case 6: Resultado = "Sesenta y "
    Case 7: Resultado = "Setenta y "
    Case 8: Resultado = "Ochenta y "
    Case 9: Resultado = "Noventa y "
    Case Else
    End Select

    End If

    Resultado = Resultado & Unidades _
    (Right(DecenasTexto, 1)) ' Retrieve ones Resultado.

    End If

    Decenas = Resultado

    End Function

    Private Function Centenas (ByVal Valor)
    Dim Resultado As String

    If Val(Valor) = 0 Then Exit Function
    Valor = Right("000" & Valor, 3)

    If Mid(Valor, 1, 1) <> "0" Then
    If Valor = "100" Then

    Resultado = "Cien "

    Else
    Select Case Mid(Valor, 1, 1)
    Case 1
    Select Case Len(Valor)

    Case 1: Resultado = "Un "
    Case 3: Resultado = "Ciento "
    Case 4: Resultado = ""
    Case 6: Resultado = "Ciento "
    Case 9: Resultado = "Ciento "

    End Select

    Case 2: Resultado = "Doscientos "
    Case 3: Resultado = "Trescientos "
    Case 4: Resultado = "Cuatrocientos "
    Case 5: Resultado = "Quinientos "
    Case 6: Resultado = "Seiscientos "
    Case 7: Resultado = "Setecientos "
    Case 8: Resultado = "Ochocientos "
    Case 9: Resultado = "Novecientos "

    End Select
    End If
    End If

    If Mid (Valor, 2, 1) <> "0" Then

    Resultado = Resultado & Decenas(Mid(Valor, 2))

    Else

    Resultado = Resultado & Unidades(Mid(Valor, 3))

    End If

    Centenas = Resultado

    End Function

  5. Guardar el libro con la extensión *.xlsm. Libro habilitado para macros.

  • APLICAR LA FUNCIÓN
  1. Seleccionar la celda B2. Celda donde insertar la función.

  2. Ir a: Cinta de opciones / Pestaña: Fórmulas / Grupo: Biblioteca de funciones / Insertar función . Mostrará la ventana de mostrar función.

    Ventana insertar función con categoría definida por el usuario
  3. Ir a: O seleccionar una categoría / Seleccionar: Definida por el usuario. Categoría deseada de nuestra función.

  4. Ir a: Seleccionar una función / Clic sobre NumeroLetra. Función deseada.

  5. Pulsar el botón Aceptar. Cierra la ventana y muestra la ventana de argumentos.

    Ventana argumentos de función numeroletra
  6. Ir a: Valor / Clic sobre la celda B2.

  7. Pulsar el botón Aceptar. Cierra la ventana e inserta la función.

    O también, Escribir:

    =NumeroLetra(A1)
  8. Copiar la celda B2 y pegar en el rango B3:B6.

Rango B2:B6 con el valor numérico convertido en texto

 

Nivel de dificultad: Experto VBA-Macros Excel Experto VBA - Macros

2 comentarios en “Convertir el valor de número en texto, para euros en Excel

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Este sitio usa Akismet para reducir el spam. Aprende cómo se procesan los datos de tus comentarios.