0% encontró este documento útil (0 votos)
460 vistas2 páginas

Función NumLetras en Excel Avanzado

Este documento presenta una función personalizada en Excel para convertir números a su forma escrita en letras. La función toma un valor numérico como entrada y devuelve una cadena con el número expresado en letras como salida. La función utiliza arrays para almacenar las palabras para unidades, decenas y centenas. Evalúa secuencialmente cada dígito del número para armar la cadena final expresada en letras.

Cargado por

Mamanhi Jesman
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd
0% encontró este documento útil (0 votos)
460 vistas2 páginas

Función NumLetras en Excel Avanzado

Este documento presenta una función personalizada en Excel para convertir números a su forma escrita en letras. La función toma un valor numérico como entrada y devuelve una cadena con el número expresado en letras como salida. La función utiliza arrays para almacenar las palabras para unidades, decenas y centenas. Evalúa secuencialmente cada dígito del número para armar la cadena final expresada en letras.

Cargado por

Mamanhi Jesman
Derechos de autor
© © All Rights Reserved
Nos tomamos en serio los derechos de los contenidos. Si sospechas que se trata de tu contenido, reclámalo aquí.
Formatos disponibles
Descarga como PDF, TXT o lee en línea desde Scribd

UNAP

UNIVERSIDAD NACIONAL DEL ALTIPLANO


INSTITUTO DE INFORMÁTICA
MS EXCEL AVANZADO

Funciones Personalizadas en Excel


Tema 04.xlsx
Function NumLetras(tyCantidad As Currency) As String
Dim lyCantidad As Currency, lyCentavos As Currency, lnDigito As Byte, lnPrimerDigito As Byte,
lnSegundoDigito As Byte, lnTercerDigito As Byte, lcBloque As String, lnNumeroBloques As Byte,
lnBloqueCero
Dim laUnidades As Variant, laDecenas As Variant, laCentenas As Variant, I As Variant 'Si esta como
Option Explicit
tyCantidad = Round(tyCantidad, 2)
lyCantidad = Int(tyCantidad)
lyCentavos = (tyCantidad - lyCantidad) * 100
laUnidades = Array("UNO", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE",
"DIEZ", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO",
"DIECINUEVE", "VEINTE", "VEINTIUNO", "VEINTIDOS", "VEINTITRES", "VEINTICUATRO", "VEINTICINCO",
"VEINTISEIS", "VEINTISIETE", "VEINTIOCHO", "VEINTINUEVE")
laDecenas = Array("DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA",
"OCHENTA", "NOVENTA")
laCentenas = Array("CIENTO", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS",
"SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
lnNumeroBloques = 1
Do
lnPrimerDigito = 0
lnSegundoDigito = 0
lnTercerDigito = 0
lcBloque = ""
lnBloqueCero = 0
For I = 1 To 3
lnDigito = lyCantidad Mod 10
If lnDigito <> 0 Then
Select Case I
Case 1
lcBloque = " " & laUnidades(lnDigito - 1)
lnPrimerDigito = lnDigito
Case 2
If lnDigito <= 2 Then
lcBloque = " " & laUnidades((lnDigito * 10) + lnPrimerDigito - 1)
Else
lcBloque = " " & laDecenas(lnDigito - 1) & IIf(lnPrimerDigito <> 0, " Y", Null) & lcBloque
End If
lnSegundoDigito = lnDigito
Case 3
lcBloque = " " & IIf(lnDigito = 1 And lnPrimerDigito = 0 And lnSegundoDigito = 0, "CIEN",
laCentenas(lnDigito - 1)) & lcBloque
lnTercerDigito = lnDigito
End Select
Else
lnBloqueCero = lnBloqueCero + 1
End If
lyCantidad = Int(lyCantidad / 10)
If lyCantidad = 0 Then
Exit For
End If
Next I
Select Case lnNumeroBloques

Ing. Lenin Huayta Flores


UNAP
UNIVERSIDAD NACIONAL DEL ALTIPLANO
INSTITUTO DE INFORMÁTICA
MS EXCEL AVANZADO

Case 1
NumLetras = lcBloque
Case 2
NumLetras = lcBloque & IIf(lnBloqueCero = 3, Null, " MIL" & NumLetras)
Case 3
NumLetras = lcBloque & IIf(lnPrimerDigito = 1 And lnSegundoDigito = 0 And lnTercerDigito = 0, "
MILLON", " MILLONES" & NumLetras)
End Select
lnNumeroBloques = lnNumeroBloques + 1
Loop Until lyCantidad = 0
NumLetras = "" & NumLetras & IIf(tyCantidad > 1, "", "")
'NumLetras = NumLetras & " CON " & Format(Str(lyCentavos), "00") & "/100 " & IIf(ValorEntero = 1,
MonedaSingular, MonedaPlural)
End Function

Ing. Lenin Huayta Flores

También podría gustarte