Excel en números y texto convertir

No he podido obtener respuesta, por favor necesito colocar en excel un numero 24 por ejemplo y que me devuelva en texto veinticuatro.

¿Cómo se hace?

2 Respuestas

Respuesta
1

H o l a:

Para ello se requiere una macro o función, te anexo el código:

Function CONVERTIRNUM(Numero As Double, Optional CentimosEnLetra As Boolean) As String
Dim Moneda As String
Dim Monedas As String
Dim Centimo As String
Dim Centimos As String
Dim Preposicion As String
Dim NumCentimos As Double
Dim Letra As String
Const Maximo = 1999999999999.99
'************************************************************
' Parámetros
'************************************************************
Moneda = "Peso"         'Nombre de Moneda (Singular)
Monedas = "Pesos"       'Nombre de Moneda (Plural)
Centimo = "Centavo"     'Nombre de Céntimos (Singular)
Centimos = "Centavos"   'Nombre de Céntimos (Plural)
Preposicion = "Con"     'Preposición entre Moneda y Céntimos
'************************************************************
'Validar que el Numero está dentro de los límites
If (Numero >= 0) And (Numero <= Maximo) Then
    Letra = NUMERORECURSIVO((Fix(Numero)))              'Convertir el Numero en letras
    'Si Numero = 1 agregar leyenda Moneda (Singular)
    If (Numero = 1) Then
        Letra = Letra & " " '& Moneda
    'De lo contrario agregar leyenda Monedas (Plural)
    Else
        Letra = Letra & " " '& Monedas
    End If
    'NumCentimos = Round((Numero - Fix(Numero)) * 100)   'Obtener los centimos del Numero
    NumCentimos = Round((Numero - Fix(Numero)) * 10)   'Obtener los centimos del Numero
    'Si NumCentimos es mayor a cero inicar la conversión
    If NumCentimos >= 0 Then
        'Si el parámetro CentimosEnLetra es VERDADERO obtener letras para los céntimos
        If CentimosEnLetra Then
            Letra = Letra & " " & Preposicion & " " & NUMERORECURSIVO(Fix(NumCentimos)) 'Convertir los céntimos en letra
            'Si NumCentimos = 1 agregar leyenda Centimos (Singular)
            If (NumCentimos = 1) Then
                Letra = Letra & " " '& Centimo
            'De lo contrario agregar leyenda Centimos (Plural)
            Else
                Letra = Letra & " " '& Centimos
            End If
         'De lo contrario mostrar los céntimos como número
         Else
            If NumCentimos < 10 Then
                'Letra = Letra & " 0" & NumCentimos & "/100"
            Else
                'Letra = Letra & " " & NumCentimos & "/100"
            End If
         End If
    End If
    If Right(Letra, 9) = "Millones " Then
        Letra = Letra & "de "
    End If
    'Regresar el resultado final de la conversión
    CONVERTIRNUM = Letra 
Else
    'Si el Numero no está dentro de los límites, entivar un mensaje de error
    CONVERTIRNUM = "ERROR: El número excede los límites."
End If
End Function
Function NUMERORECURSIVO(Numero As Long) As String
Dim Unidades, Decenas, Centenas
Dim Resultado As String
'**************************************************
' Nombre de los números
'**************************************************
Unidades = Array("", "Un", "Dos", "Tres", "Cuatro", "Cinco", "Seis", "Siete", "Ocho", "Nueve", "Diez", "Once", "Doce", "Trece", "Catorce", "Quince", "Dieciséis", "Diecisiete", "Dieciocho", "Diecinueve", "Veinte", "Veintiuno", "Veintidos", "Veintitres", "Veinticuatro", "Veinticinco", "Veintiseis", "Veintisiete", "Veintiocho", "Veintinueve")
Decenas = Array("", "Diez", "Veinte", "Treinta", "Cuarenta", "Cincuenta", "Sesenta", "Setenta", "Ochenta", "Noventa", "Cien")
Centenas = Array("", "Ciento", "Doscientos", "Trescientos", "Cuatrocientos", "Quinientos", "Seiscientos", "Setecientos", "Ochocientos", "Novecientos")
'**************************************************
Select Case Numero
    Case 0
        Resultado = "Cero"
    Case 1 To 29
        Resultado = Unidades(Numero)
    Case 30 To 100
        Resultado = Decenas(Numero \ 10) + IIf(Numero Mod 10 <> 0, " y " + NUMERORECURSIVO(Numero Mod 10), "")
    Case 101 To 999
        Resultado = Centenas(Numero \ 100) + IIf(Numero Mod 100 <> 0, " " + NUMERORECURSIVO(Numero Mod 100), "")
    Case 1000 To 1999
        Resultado = "Mil" + IIf(Numero Mod 1000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000), "")
    Case 2000 To 999999
        Resultado = NUMERORECURSIVO(Numero \ 1000) + " Mil" + IIf(Numero Mod 1000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000), "")
    Case 1000000 To 1999999
        Resultado = "Un Millón" + IIf(Numero Mod 1000000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000000), "")
    Case 2000000 To 1999999999
        Resultado = NUMERORECURSIVO(Numero \ 1000000) + " Millones" + IIf(Numero Mod 1000000 <> 0, " " + NUMERORECURSIVO(Numero Mod 1000000), "")
End Select
NUMERORECURSIVO = Resultado
End Function

Puedes revisar las instrucciones en este enlace:

¿Qué fórmula aplico para convertir números a letras en excel?

Acá también tengo las instrucciones:

Pasar números a letras en una planilla excel


Gracias mil. Sin macro no?

H o l a:

Sí, tengo un archivo con varias fórmulas.

Envíame un correo para enviarte el archivo.

Mi correo [email protected]

En el asunto del correo escribe tu nombre de usuario “” y el título de esta pregunta.

H o l a:

Te envié el archivo para pasar los números a letras.

En la primera hoja en la celda A5 escribes el número y en la celda B5 te aparecen las letras

Las fórmulas están en la hoja "letras"

R ecuerda valorar la respuesta

Sal u dos

Respuesta

Se tiene que crear una macro. ¿Es para generar un documento de venta?

Sub convertir()
Dim varlet, Z0, Z1, resultado, mon, HOJA As String
Dim J, K, Z2, Z3, Z4, Z5 As Long
Dim NUM As Double
varlet = ""
mon = ""
HOJA = ActiveSheet.Name
NUM = CDbl(ActiveCell.Value)
Z0 = Format(NUM, "000000000.00")
J = 1
K = 1
Z4 = 0
Z5 = 0
Do While J <= 3
Z1 = Mid(Z0, K, 3)
Z2 = CLng(Mid(Z1, 1, 1))
If Z2 <> 0 Then
Select Case Z2
Case 1
mon = "CIENTO"
Case 2
mon = "DosCIENTOS"
Case 3
mon = "TresCIENTOS"
Case 4
mon = "CuatroCIENTOS"
Case 5
mon = "QUINIENTOS"
Case 6
mon = "SeisCIENTOS"
Case 7
mon = "SETECIENTOS"
Case 8
mon = "OchoCIENTOS"
Case 9
mon = "NOVECIENTOS"
End Select
varlet = varlet + mon + " "
End If
Z2 = CLng(Mid(Z1, 2, 2))
Z3 = CLng(Mid(Z1, 2, 1))
Z4 = CLng(Mid(Z1, 3, 1))
If (Z3 = 0 And Z4 = 0) Then
Else
If Z3 >= 1 And Z4 = 0 Then
Select Case Z2
Case 10
mon = "Diez"
Case 11
mon = "Once"
Case 12
mon = "Doce"
Case 13
mon = "Trece"
Case 14
mon = "Catorce"
Case 15
mon = "Quince"
Case 16
mon = "DieciSeis"
Case 17
mon = "DieciSiete"
Case 18
mon = "DieciOcho"
Case 19
mon = "DieciNueve"
Case 20
mon = "Veinte"
Case 30
mon = "Treinta"
Case 40
mon = "Cuarenta"
Case 50
mon = "Cincuenta"
Case 60
mon = "Sesenta"
Case 70
mon = "Setenta"
Case 80
mon = "Ochenta"
Case 90
mon = "Noventa"
End Select
varlet = varlet + mon + " "
Else
If Z3 = 0 And Z4 >= 1 Then
Select Case Z4
Case 1
mon = "Un"
Case 2
mon = "Dos"
Case 3
mon = "Tres"
Case 4
mon = "Cuatro"
Case 5
mon = "Cinco"
Case 6
mon = "Seis"
Case 7
mon = "Siete"
Case 8
mon = "Ocho"
Case 9
mon = "Nueve"
End Select
If J = 3 And Z4 = 1 Then
mon = mon + "O"
End If
varlet = varlet + mon + " "
Else
If Z2 >= 11 And Z2 <= 19 Then
Select Case Z2
Case 10
mon = "Diez"
Case 11
mon = "Once"
Case 12
mon = "Doce"
Case 13
mon = "Trece"
Case 14
mon = "Catorce"
Case 15
mon = "Quince"
Case 16
mon = "DieciSeis"
Case 17
mon = "DieciSiete"
Case 18
mon = "Dieciocho"
Case 19
mon = "Diecinueve"
Case 20
mon = "Veinte"
Case 30
mon = "Treinta"
Case 40
mon = "Cuarenta"
Case 50
mon = "Cicuenta"
Case 60
mon = "Sesenta"
Case 70
mon = "Setenta"
Case 80
mon = "Ochenta"
Case 90
mon = "Noventa"
End Select
varlet = varlet + mon + " "
Else
Z5 = Round(Z3 * 10, 0)
Select Case Z5
Case 10
mon = "Diez"
Case 11
mon = "Once"
Case 12
mon = "Doce"
Case 13
mon = "Trece"
Case 14
mon = "Catorce"
Case 15
mon = "Quince"
Case 16
mon = "DieciSeis"
Case 17
mon = "DieciSiete"
Case 18
mon = "Dieciocho"
Case 19
mon = "Diecinueve"
Case 20
mon = "Veinte"
Case 30
mon = "Treinta"
Case 40
mon = "Cuarenta"
Case 50
mon = "Cincuenta"
Case 60
mon = "Sesenta"
Case 70
mon = "Setenta"
Case 80
mon = "Ochenta"
Case 90
mon = "Noventa"
End Select
mon = Mid(mon, 1, Len(mon) - 1) + "I"
varlet = varlet + mon
Select Case Z4
Case 1
mon = "Un"
Case 2
mon = "Dos"
Case 3
mon = "Tres"
Case 4
mon = "Cuatro"
Case 5
mon = "Cinco"
Case 6
mon = "Seis"
Case 7
mon = "Siete"
Case 8
mon = "Ocho"
Case 9
mon = "Nueve"
End Select
If J = 3 And Z4 = 1 Then
mon = mon + "O"
End If
varlet = varlet + mon + " "
End If
End If
End If
End If
If CLng(Z1) > 0 Then
Select Case J
Case 1
If CLng(Z1) = 1 Then
varlet = varlet + "Millon "
Else
varlet = varlet + "Millones "
End If
Case 2
varlet = varlet + "MIL "
End Select
End If
J = J + 1
K = K + 3
Loop
resultado = varlet + " Y " + Mid(Z0, 11, 2) + "/100 "
Worksheets(HOJA).Range("E10").Value = resultado
End Sub

Añade tu respuesta

Haz clic para o

Más respuestas relacionadas