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
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
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.
- Compartir respuesta
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
- Compartir respuesta