cuantas veces nos han pedido una formula para que al poner una catidad $ en una celda aparezca en otra de la siguiente manera Cantidad en Pesos 00/100 MN
la manera para lograrlo consta de dos pasos
Primero copia el siguiente codigo y crea un modulo en excel lo puedes llamar como mas gustes
Sub Convertir()
End Sub
Function Numletra(Number As Double, Optional Kurrencys As String, Optional Kurrency As String) As String
If Kurrencys = "" Then
Kurrencys = "PESOS"
Kurrency = "PESO"
End If
If Kurrency = "" Then Kurrency = Kurrencys
Const MinNum = 0#
Const MaxNum = 4294967295.99
Dim Result As String
If (Number >= MinNum) And (Number <= MaxNum) Then
Dim Kurrenzy As String
Kurrenzy = Kurrency
If Number >= 2 Or Number < 1 Then Kurrenzy = Kurrencys
Result = RecurseNumber((Fix(Number)))
If Round((Number - Fix(Number)) * 100) < 10 Then
Result = "SON: (" + Result + " " + Kurrenzy + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 M.N.)"
Else
Result = "SON: (" + Result + " " + Kurrenzy + " " + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 2) + "/100 M.N.)"
End If
Else
Result = "Error, verifique la cantidad."
End If
Numletra = Result
End Function
Function RecurseNumber(N As Long) As String
Dim Numbers, Tenths, Hundrens
Numbers = Array("CERO", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE", "DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISÉIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE", "VEINTE", _
"VEINTIÚN", "VEINTIDÓS", "VEINTITRÉS", "VEINTICUATRO", "VEINTICINCO", "VEINTISÉIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
Tenths = Array("CERO", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA", "CIEN")
Hundrens = Array("CERO", "CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", "SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
Dim Result As String
Select Case N
Case 0
Result = "CERO"
Case 1 To 29
Result = Numbers(N)
Case 30 To 100
Result = Tenths(N \ 10) + IIf(N Mod 10 <> 0, " Y " + RecurseNumber(N Mod 10), "")
Case 101 To 999
Result = Hundrens(N \ 100) + IIf(N Mod 100 <> 0, " " + RecurseNumber(N Mod 100), "")
Case 1000 To 999999
Result = RecurseNumber(N \ 1000) + " MIL" + IIf(N Mod 1000 <> 0, " " + RecurseNumber(N Mod 1000), "")
Case 1000000 To 1999999
Result = RecurseNumber(N \ 1000000) + " MILLÓN" + IIf(N Mod 1000000 <> 0, " " + RecurseNumber(N Mod 1000000), " DE")
Case 2000000 To 999999999
Result = RecurseNumber(N \ 1000000) + " MILLONES" + IIf(N Mod 1000000 <> 0, " " + RecurseNumber(N Mod 1000000), " DE")
Case 1000000000 To 1999999999
Result = RecurseNumber(N \ 1000000000) + " MIL MILLONES" + IIf(N Mod 1000000000 <> 0, " " + RecurseNumber(N Mod 1000000000), " DE")
Case 2000000000 To 4294967295.99
Result = RecurseNumber(N \ 1000000000) + " BILLONES" + IIf(N Mod 1000000000 <> 0, " " + RecurseNumber(N Mod 1000000000), " DE")
End Select
RecurseNumber = Result
End Function
una vez creado el modulo desde cualquier celda una la formula =Numletra(aqui la celda donde esta el numero)
asi de sencillo
No hay comentarios.:
Publicar un comentario