Hola alexandra
En este grandioso foro, hace tiempo me enviaron un archivo
que me sirvió mucho. Asi como te lo envío, lo pones en un
modulo, es decir te metes a la opcion de macros y ahi le
das Editor de Visual Basic, creas un modulo en Insertar y
luego modulo.
Ya que hiciste eso le das guardar y cierras el editor de
visual basic y ya en la hoja de calculo en una de las
celdas pones la cantidad despues te metes al menu de
insertar y le das funcion...ahi te vas a donde dice
seleccion funcion y le das a la opcion definidas por
el usuario te debera aparecer una que dice decifrar.
ya seleccionada, te sale un cuadro y ahi le picas para
seleccion la celda que tiene la cantida y le das aceptar y
listo ya esta esa funcion.
te lo anexo y cualquier cosa, estoy a tus órdenes
Option Explicit
Global uni(16) As String
Global dece(9) As String
Global cente(9) As String
Function descifrar(NUMERO, Optional MOneda As String
= "PESOS")
Dim r1 As Currency, r2 As Currency, r3 As Currency
Dim Resp As String
Dim numeros_
numeros_ = NUMERO
' Estos arrays estan definidos como globales
uni(0) = ""
uni(1) = "UNO"
uni(2) = "DOS"
uni(3) = "TRES"
uni(4) = "CUATRO"
uni(5) = "CINCO"
uni(6) = "SEIS"
uni(7) = "SIETE"
uni(8) = "OCHO"
uni(9) = "NUEVE"
uni(10) = "DIEZ"
uni(11) = "ONCE"
uni(12) = "DOCE"
uni(13) = "TRECE"
uni(14) = "CATORCE"
uni(15) = "QUINCE"
dece(0) = "DIECI"
dece(1) = "VEINT"
dece(2) = "TREI"
dece(3) = "CUARE"
dece(4) = "CINCUE"
dece(5) = "SESE"
dece(6) = "SETE"
dece(7) = "OCHE"
dece(8) = "NOVE"
cente(0) = "CIEN"
cente(1) = "DOSCI"
cente(2) = "TRESCI"
cente(3) = "CUATROCI"
cente(4) = "QUINI"
cente(5) = "SEISCI"
cente(6) = "SETECI"
cente(7) = "OCHOCI"
cente(8) = "NOVECI"
Resp = ""
If NUMERO < 0 Then ' Si es un número negativo lo paso
NUMERO = NUMERO * -1 ' a positivo para el calculo y la
Resp = "MENOS" ' frase comienza con el "menos ..."
End If
' Parto el número en tres bloques de tres digitos
r3 = Int((NUMERO / 1000000))
r2 = Int(((NUMERO / 1000) - (r3 * 1000)))
r1 = Int((NUMERO - ((r3 * 1000000) + (r2 * 1000))))
If NUMERO < 1000000000 Then
If r3 <> 0 Then ' Proceso los millones
If r3 <> 1 Then
Resp = Resp + cifra(r3, 3)
Resp = Resp + " MILLONES "
Else
Resp = Resp + "UN MILLON "
End If
End If
If r2 <> 0 Then ' Proceso los millares
If r2 <> 1 Then
Resp = Resp + cifra(r2, 2)
Resp = Resp + " "
End If
Resp = Resp + "MIL "
End If
Resp = Resp + cifra(r1, 1) ' Proceso las centenas
Else
Resp = "¡¡¡Mas de 999.999.999 pesos!!!" ' Nos hemos
pasado ;-)
End If
Dim poputo
Dim centavos_ As String
poputo = InStr(Str(numeros_), ".")
centavos_ = IIf(poputo > 0, Mid$(Str(numeros_), poputo +
1, 2), "00")
centavos_ = IIf(Len(centavos_) < 2, centavos_ + "0",
centavos_)
Resp = "*** Son " & Resp & " " & MOneda & " con " &
centavos_ & "/100 ****"
descifrar = Resp
End Function
Function cifra(m As Currency, Nivel As Integer) As String
Dim n3 As Currency, n2 As Currency, n1 As Currency, N As
Currency
Dim Resp As String
Resp = ""
n3 = Int((m / 100))
n2 = Int((Int(m / 10) Mod 10))
n1 = Int((m Mod 10))
If n3 <> 0 Then 'Comprobamos la centena
Resp = Resp + cente(n3 - 1)
If n3 < 2 Then
If m <> 100 Then Resp = Resp + "TO "
ElseIf Nivel = 3 Then ' el nivel nos indica el sexo de
las pesetas :)
Resp = Resp + "ENTOS "
Else
Resp = Resp + "ENTOS "
End If
End If
N = ((n2 * 10) + n1)
If N <> 0 Then
If N < 16 Then ' para los inferiores a 16
Resp = Resp + uni(N) ' son las unidades a capon
Else
Resp = Resp + dece(n2 - 1)
If n2 < 3 Then 'decenas de menos de 30
If n2 > 1 Then
If n1 <> 0 Then
Resp = Resp + "I"
Else
Resp = Resp + "E"
End If
End If
Else
Resp = Resp + "NTA" ' las demás decenas acaban en
NTA :)
If n1 <> 0 Then Resp = Resp + " Y "
End If
Resp = Resp + uni(n1) ' le pongo las unidades
End If
End If
cifra = Resp
End Function
-----Mensaje original-----
Me gustarÃa saber si alguien sabe como convertir numeros
a letras en excel,
me explico que si yo digito 1 se convierta a la plabra
uno. Esto si es
posible?
Gracias,
Alexandra Mesa
.