lunes, 21 de enero de 2013

Formula Numero a Texto

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