Conversión de números a letras

14/08/2006 - 17:19 por Like an Angel | Informe spam
Quería consultar si es posible que un número, expuesto en una celda, se
trasnforme automáticamente en letras, para ser mostrado en otra celda. Por si
no me he explicado bien, un simple ejemplo: en una hoja pongo 400 en la celda
A1 y quiero que automáticamente escriba en letras cuatrocientos en A2.

Gracias de antemano.

Preguntas similare

Leer las respuestas

#1 Abraham
14/08/2006 - 17:53 | Informe spam
En este pequeño ejemplo que hice, hay un modulo con la funcion (no la
hice yo). Baja el archivo para que la puedas copiar.

http://es.geocities.com/eavj666peru...simple.xls

Abraham
Respuesta Responder a este mensaje
#2 Abraham
14/08/2006 - 19:10 | Informe spam
Abre tu editor de VBA, inserta un modulo y pega este codigo (disculpeme
el que lo hizo, me lo enviaron asi, sin autor):


Function num_letras(numero As Double) As String
Dim letras As String
Dim HuboCentavos As Boolean
Dim decimales As Double
decimales = numero - Int(numero)
numero = Int(numero)
Dim Numeros(90) As String
Numeros(0) = "cero"
Numeros(1) = "Uno"
Numeros(2) = "Dos"
Numeros(3) = "Tres"
Numeros(4) = "Cuatro"
Numeros(5) = "Cinco"
Numeros(6) = "Seis"
Numeros(7) = "Siete"
Numeros(8) = "Ocho"
Numeros(9) = "Nueve"
Numeros(10) = "Diez"
Numeros(11) = "Once"
Numeros(12) = "Doce"
Numeros(13) = "Trece"
Numeros(14) = "Catorce"
Numeros(15) = "Quince"
Numeros(20) = "Veinte"
Numeros(30) = "Treinta"
Numeros(40) = "Cuarenta"
Numeros(50) = "Cincuenta"
Numeros(60) = "Sesenta"
Numeros(70) = "Setenta"
Numeros(80) = "Ochenta"
Numeros(90) = "Noventa"
Do
'*> Centenas de Millón
If (numero < 1000000000) And (numero >= 100000000) Then
If (Int(numero / 100000000) = 1) And ((numero - (Int(numero /
100000000) * 100000000)) < 1000000) Then
letras = letras & "cien millones "
Else
Select Case Int(numero / 100000000)
Case 1
letras = letras & "Ciento"
Case 5
letras = letras & "Quinientos"
Case 7
letras = letras & "Setecientos"
Case 9
letras = letras & "Novecientos"
Case Else
letras = letras & Numeros(Int(numero / 100000000))
End Select
If (Int(numero / 100000000) <> 1) And (Int(numero /
100000000) <> 5) And (Int(numero / 100000000) <> 7) And (Int(numero /
100000000) <> 9) Then
letras = letras & "cientos "
Else
letras = letras & " "
End If
End If
numero = numero - (Int(numero / 100000000) * 100000000)
End If
'*> Decenas de Millón
If (numero < 100000000) And (numero >= 10000000) Then
If Int(numero / 1000000) < 16 Then
letras = letras & Numeros(Int(numero / 1000000))
letras = letras & " millones "
numero = numero - (Int(numero / 1000000) * 1000000)
Else
letras = letras & Numeros(Int(numero / 10000000) * 10)
numero = numero - (Int(numero / 10000000) * 10000000)
If numero > 1000000 Then
letras = letras & " y "
End If
End If
End If
'*> Unidades de Millón
If (numero < 10000000) And (numero >= 1000000) Then
If Int(numero / 1000000) = 1 Then
letras = letras & " Un millón "
Else
letras = letras & Numeros(Int(numero / 1000000))
letras = letras & " millones "
End If
numero = numero - (Int(numero / 1000000) * 1000000)
End If
'*> Centenas de Millar
If (numero < 1000000) And (numero >= 100000) Then
If (Int(numero / 100000) = 1) And ((numero - (Int(numero /
100000) * 100000)) < 1000) Then
letras = letras & "Cien mil "
Else
Select Case Int(numero / 100000)
Case 1
letras = letras & "Ciento"
Case 5
letras = letras & "Quinientos"
Case 7
letras = letras & "Setecientos"
Case 9
letras = letras & "Novecientos"
Case Else
letras = letras & Numeros(Int(numero / 100000))
End Select
If (Int(numero / 100000) <> 1) And (Int(numero / 100000) <>
5) And (Int(numero / 100000) <> 7) And (Int(numero / 100000) <> 9) Then
letras = letras & "cientos "
Else
letras = letras & " mil "
End If
End If
numero = numero - (Int(numero / 100000) * 100000)
End If
'*> Decenas de Millar
If (numero < 100000) And (numero >= 10000) Then
If Int(numero / 1000) < 16 Then
letras = letras & Numeros(Int(numero / 1000))
letras = letras & " mil "
numero = numero - (Int(numero / 1000) * 1000)
Else
letras = letras & Numeros(Int(numero / 10000) * 10)
numero = numero - (Int((numero / 10000)) * 10000)
If numero > 1000 Then
letras = letras & " y "
Else
letras = letras & " mil "
End If
End If
End If
'*> Unidades de Millar
If (numero < 10000) And (numero >= 1000) Then
If Int(numero / 1000) = 1 Then
letras = letras & "un"
Else
letras = letras & Numeros(Int(numero / 1000))
End If
letras = letras & " Mil "
numero = numero - (Int(numero / 1000) * 1000)
End If
'*> Centenas
If (numero < 1000) And (numero > 99) Then
If (Int(numero / 100) = 1) And ((numero - (Int(numero / 100) *
100)) < 1) Then
letras = letras & "Cien "
Else
Select Case Int(numero / 100)
Case 1
letras = letras & "ciento"
Case 5
letras = letras & "quinientos"
Case 7
letras = letras & "setecientos"
Case 9
letras = letras & "novecientos"
Case Else
letras = letras & Numeros(Int(numero / 100))
End Select
If (Int(numero / 100) <> 1) And (Int(numero / 100) <> 5)
And (Int(numero / 100) <> 7) And (Int(numero / 100) <> 9) Then
letras = letras & "cientos "
Else
letras = letras & " "
End If
End If
numero = numero - (Int(numero / 100) * 100)
End If
'*> Decenas
If (numero < 100) And (numero > 9) Then
If numero < 16 Then
letras = letras & Numeros(Int(numero))
numero = numero - Int(numero)
Else
letras = letras & Numeros(Int((numero / 10)) * 10)
numero = numero - (Int((numero / 10)) * 10)
If numero > 0.99 Then
letras = letras & " y "
End If
End If
End If
'*> Unidades
If (numero < 10) And (numero > 0.99) Then
letras = letras & Numeros(Int(numero))
numero = numero - Int(numero)
End If
Loop Until (numero = 0)
'*> Decimales
If (decimales > 0) Then
letras = letras & " y "
letras = letras & Format(decimales * 100, "00") & "/100 nuevos
soles"
num_letras = letras
Exit Function
End If
num_letras = letras & " y 00/100 nuevos soles"
End Function


Despues, vas a tu hoja, y digamos que en A1 tiene 125. En a2 colocas

=num_letras(a1)

y aparecera Ciento Veinticinco y 00/100 nuevos soles. (prueba en
cualquier celda!!)

Ya tu modifica el codigo para quitarle lo de nuevos soles

Abraham
Respuesta Responder a este mensaje
#3 Abraham
14/08/2006 - 21:37 | Informe spam
De nada amigo, sinceramente de nada.

Abraham
Respuesta Responder a este mensaje
#4 Abraham
14/08/2006 - 22:24 | Informe spam
Uyyy, un lapsus!!! pero no firmate jejejej. Amiguita

Abraham
email Siga el debate Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaRespuesta Tengo una respuesta
Search Busqueda sugerida