Archivo | Tutoriales RSS for this section

Pasar una cantidad en número a cantidad en letra con Excel

Antes de continuar con este post, debo aclarar que el código que utilizo no ha sido desarrollado por mi, lo encontré aquí y le hice algunos ajustes para generar los resultados como a mi me interesaban.
En mi trabajo elaboramos cheques constantemente y resulta tedioso y poco productivo capturar las cantidades en letra, por lo que me puse a buscar y di con este código:

Function Nlet(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 Then Kurrenzy = Kurrencys
If Number = 0 Then Kurrenzy = Kurrencys
If Number < 1 Then Kurrenzy = Kurrencys
Result = RecurseNumber((Fix(Number)))
If Round((Number - Fix(Number)) * 100) < 10 Then
Result = "(" + Result + " " + Kurrenzy + " 0" + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 1) + "/100 M.N.)"
Else
Result = "(" + Result + " " + Kurrenzy + " " + Mid(Str(Round((Number - Fix(Number)) * 100)), 2, 2) + "/100 M.N.)"
End If
Else
Result = "Error, verifique la cantidad."
End If
Nlet = 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
Sub Nl()
End Sub
 seguir leyendo
Anuncios

Página de contenido

La tecnología en general, desde mi punto de vista, tiene la misión de ahorrarnos tiempo y aprovecharlo en otras tareas, que a veces no logramos teminar por mucho que nos esforcemos. No se trata, por ejemplo, de meter la ropa a la lavadora, los trastes al lavavajillas y tirarnos a ver la tv. Debemos aprender a sacarle provecho a estas innovaciones.

Caso similar se presenta con el software que vemos hoy en día, pero que por alguna razón ya sea de tiempo o de “ganas”, a veces no logramos dominar ni siquiera un 50% de sus funciones.

En este caso, trataré de explicar Cómo crear una página de Contenido o índice de contenido fácilmente. Y es que me causa gracia recordar cuantas veces batallé para dejar la lista de páginas exactamente alineadas:

El siguiente tutorial trata precisamente de eso, de automatizar la creación y posterior edición de los capítulos de nuestros documentos. Sin más preámbulos, los dejo con él:

Leer Más…