Home > Foro de Excel >

Debates de Excel > Excel convertir numeros en letras

Grupo de Excel
Foro de Excel
18144 Debates | 2011 Documentos | 1 Vídeo | 1 Test | 1 Blog | 675 Imágenes | 16686 Miembros

Excel convertir numeros en letras

Escrito por Estela el 27/01/2006

Necesito que alguien me pase los macros para convertir numeros en letras, esto me facilitaría un montón de trabajo.

Un saludo

Y gracias de antemano


Citar  |  
Ver mensaje      

Robinson
Cali, Colombia
Escrito por Robinson el 01/02/2006

Hole

Copia esto en un modulo

Function Aletra(Rcantidad As Double) As String
Dim Rcant As String
Dim cAux As String
Dim Runi As String
Dim Rdec As String
Dim rdecs As String
Dim rcen As String
Dim riter As Integer
Dim rnum As String
Dim cDecim As String

'Runi$ , Rdec$, Rdecs$, Rcen$, Rnum$, Riter$

Rcant = ""
Runi = " UN DOS TRES CUATROCINCO SEIS SIETE OCHO NUEVE "
Rdec = "DIEZ ONCE DOCE TRECE CATORCE QUINCE DIECISEIS DIECISIETEDIECIOCHO DIECINUEVE"
rdecs = " VEINTE TREINTA CUARENTA CINCUENTASESENTA SETENTA OCHENTA NOVENTA "
rcen = " DOS TRES CUATRO SEIS SETE OCHO NOVE "

Rcant = Trim(Str(Rcantidad))
If InStr(1, Rcant, ". ") > 0 Then
'cAux = Left(Rcant, InStr(1, Rcant, ". ") + 2)
cAux = cRound(Rcant, 2)
Rcant = cAux
If Mid(Rcant, Len(Rcant) - 1, 1) = ". " Then
Rcant = Rcant + "0"
Rcant = Space(12 - Len(Left(Rcant, Len(Rcant) - 3))) + Rcant
Else
Rcant = Space(12 - Len(Left(Rcant, Len(Rcant) - 3))) + Rcant
cDecim = Right(Rcant, 2)
End If
Else
cDecim = "00"
End If
rnum = Mid(Rcant, 1, 12)
Rcant = ""
If Len(rnum) < 12 Then
rnum = Space(12 - Len(rnum)) + rnum
End If
If Val(rnum) = 0 Then
Rcant = "CERO PESOS "
Else
riter = 1
While riter < 13

If Mid(rnum, riter, 1) <> " " And Mid(rnum, riter, 1) <> "0" Then
Select Case Mid(rnum, riter, 1)
Case "1"
If Mid(rnum, riter + 1, 2) = "00" Then
Rcant = Rcant + "CIEN "
Else
Rcant = Rcant + "CIENTO "
End If
Case "5"
Rcant = Rcant + "QUINIENTOS "
Case Else
Rcant = Rcant + RTrim(Mid(rcen, Val(Mid(rnum, riter, 1)) * 6 + 1, 6)) + "CIENTOS "
End Select
End If

If Mid(rnum, riter + 1, 1) <> " " And Mid(rnum, riter + 1, 1) <> "0" Then
Select Case Mid(rnum, riter + 1, 1)
Case "1"
Rcant = Rcant + RTrim(Mid(Rdec, Val(Mid(rnum, riter + 2, 1)) * 10 + 1, 10)) + " "
Case "2"
If Mid(rnum, riter + 2, 1) = "0" Then
Rcant = Rcant + "VEINTE "
Else
Rcant = Rcant + "VEINTI" + RTrim(Mid(Runi, Val(Mid(rnum, riter + 2, 1)) * 6 + 1, 6)) + " "
End If
Case Else
Rcant = Rcant + RTrim(Mid(rdecs, Val(Mid(rnum, riter + 1, 1)) * 9 + 1, 9))
If Mid(rnum, riter + 2, 1) > "0" Then
Rcant = Rcant + " Y " + RTrim(Mid(Runi, Val(Mid(rnum, riter + 2, 1)) * 6 + 1, 6)) + " "
Else
Rcant = Rcant + " "
End If
End Select
End If

If Mid(rnum, riter + 2, 1) <> " " And Mid(rnum, riter + 1, 1) < "1" And Mid(rnum, riter + 1, 2) <> "00" Then
Rcant = Rcant + RTrim(Mid(Runi, Val(Mid(rnum, riter + 2, 1)) * 6 + 1, 6)) + " "
End If

Select Case riter
Case 1
If Mid(rnum, 1, 3) <> Space(3) And Mid(rnum, 1, 3) <> "000" Then
Rcant = Rcant + "MIL "
End If
Case 4
If Mid(rnum, 1, 6) <> Space(6) And Mid(rnum, 1, 6) <> "000000" Then
If Mid(rnum, 1, 6) <> Space(5) + "1" Then
Rcant = Rcant + "MILLONES "
Else
Rcant = Rcant + "MILLON "
End If
End If
Case 7
If Mid(rnum, 1, 9) <> Space(9) And Mid(rnum, 7, 3) <> "000" Then
Rcant = Rcant + "MIL "
End If
End Select
riter = riter + 3
Wend

If rnum = Space(11) + "1" Then
Rcant = Rcant + "PESO "
Else
If Mid(rnum, 7, 6) = "000000" Then
Rcant = Rcant + "DE PESOS "
Else
Rcant = Rcant + "PESOS "
End If
End If
End If

Rcant = LTrim(RTrim(Rcant + cDecim + "/100 M.N. ")))
Aletra = Rcant

End Function

Function cRound(ByVal cVal, ByVal nDec) As String
Dim cAux, cRet As String
Dim nI, nPos, nAcum, nCurVal, nNextVal As Integer
nAcum = 0
nCurVal = 0
nNextVal = 0
cRet = ""
nPos = InStr(1, cVal, ". ")
If nPos = 0 Then
'cAux = Padc("", nDec, "0")
cRet = cVal + ". " + "00"
Else
cAux = Right(cVal, Len(cVal) - nPos)
If Len(cAux) > nDec Then
nPos = Len(cAux) - 1
For nI = nPos To nDec Step -1
nCurVal = Int(Val(Mid(cAux, nI + 1, 1)))
nNextVal = Int(Val(Mid(cAux, nI, 1)))
If nCurVal < 5 Then
nAcum = nNextVal
Else
nAcum = nNextVal + 1
End If
cRet = Mid(cAux, 1, nI - 1) + Trim(Str(nAcum))
Next
nPos = InStr(1, cVal, ". ")
cRet = Left(cVal, nPos) + cRet
Else
nAcum = nDec - Len(Right(cVal, Len(cVal) - nPos))
cRet = cVal
For nI = 1 To nAcum
cRet = cRet + "0"
Next
End If
End If

CRound = cRet
End Function

Y para hacerlo le das en la celda que necesitas =aletra()



Citar  |  
Ver mensaje     

Escrito por Ivette el 02/03/2006
Excelente ayuda gracias, me salio como queria

Citar  |  
Ver mensaje     

Escrito por David el 14/03/2006
Gracias por la ayuda, trabaja excelente. Felicidades por compartir esto con todos. 

Citar  |  
Ver mensaje     

Javier
Santa Fe, Argentina
Escrito por Javier el 23/03/2006

David: copie esa rutina en visual en un modulo, como hago ahora para haceral funcionar, ya que pongo  = aletra( la celda ) y me da error de "nombre? #"


Saludos.-

Gracias



Citar  |  
Ver mensaje     

Escrito por Monnyka el 23/03/2006

Hola!.. Dejame decirte que he probado varias rutinas en excel y ninguna me habia funcionado tan bien como la tuyo.. Sólo tengo un problemita: cuando capturo ALETRA(celda), en donde celda es rerefencia de alguna de mi documento, el valor se pierde y me da otra cantidad con letra y si la capturo manualmente si me funciona correctamente..

Tienes idea de que puedo hacer? Por que la uso para facturas, entonces tiene que ser referencia de otra celda.

Mil grax, estaré al pendiente


Citar  |  
Ver mensaje     

Cesar
Capital Federal, Arg...
Escrito por Cesar el 05/04/2006

Muy bueno el modulo, es posible que en lugar de que la moneda sea M.N. Aparezca otra o ninguna?


Citar  |  
Ver mensaje     

Sorenkierkegaard
Finlandia del Sur - ...
Escrito por Sorenkierkegaard el 15/12/2006

Citar  |  
Ver mensaje     

Escrito por Juan el 17/12/2006

Hola Estela:


He visto que pedias macro para convertir los numeros a letras en exce.

Perdona mi atrevimiento, pero si lo tienes me lo querrias pasar por correo electronico.

Gracias, Un saludo.




Citar  |  
Ver mensaje     

Escrito por Khaled Omais el 22/04/2007

Buenas

Si lo copio , donde lo pego


Citar  |  
Ver mensaje     

Escrito por Efrain el 25/04/2007

Alguien podria enviarme la macro para convertir de numeros a letras


Gracias


Citar  |  
Ver mensaje     

Escrito por Juanbueno2003 el 01/05/2007

Visita mi pagin Web y en el encontraras la respueta

Http://espanol.geocities.com/juanbueno2003

Y en el encotraran el archivo que buscan, esta completo, no tiene ningun problema.

Y por favor compartanlo con otros.




Citar  |  
Ver mensaje     

Macela Perez
Bogotá, Colombia
Escrito por Macela Perez el 12/07/2007

Gracias por la ayuda, pero tengo un problerma como hago para que no me salga los centavos mn , soy de colombia y aqui utilizamos pesos mcte quiesiera toda cifra termina con estas dos cosas como hago.



Citar  |  
Ver mensaje     

Macela Perez
Bogotá, Colombia
Escrito por Macela Perez el 12/07/2007

Hola tambien me gustaria saber como hago para que me salga las sifras redondeadas sin centavos 



Citar  |  
Ver mensaje     

Escrito por Juanbueno2003 el 17/07/2007

Habre la macro, (herramientas/macro/editor de visual basic y al llegar al final de la macro copia las siguientes lineas despues del ultimo end If
   


    If mon = 3 Then
        letras = cantlm & " DOLARES "
    End If

Cuando termines de copiar estas lineas te vas al menu de depuracion/compilar y compilas el documento.

Espero que te sirva de mucho.




Citar  |  
Ver mensaje     

Escrito por Paty Gomez el 06/11/2007
Mil gracias me funciono de maravilla

Citar  |  
Ver mensaje     

Escrito por Jade Azeneth el 11/12/2007
Mil y un gracias de verdad está excelente! :-) :-) :-)

Citar  |  
Ver mensaje     

Escrito por Giuliana Nadime Ku Falcon el 19/12/2007

Olitas ¡Discalpa tengo un problema copie esa rutina en visual en un modulo, como hago ahora para hacerala funcionar, puesto que  ya que le puse   = aletra( la celda ) y me da error de "nombre? #". Espero me respondas y me puedas ayudar con mi problema, te lo agraderia mucho.


 
saludos.
gracias
 


Citar  |  
Ver mensaje     

Escrito por Juanbueno2003 el 19/12/2007
Lo que sucece es que tienes que utilizar =letras(el lugar de la celda a convertir, 2)

Citar  |  
Ver mensaje     

Macela Perez
Bogotá, Colombia
Escrito por Macela Perez el 20/12/2007

Hola pues yo entro por la formula en fx y busco personalizadas y alli busco aletra y ya



Citar  |  
Ver mensaje     


Responder


Quiero recibir alertas por email cuando haya mensajes nuevos en este debate

Al escribir en el debate:
  1. Repasa la ortografía y no escribas en formato SMS.
  2. Lee el texto dos veces antes de publicar.
  3. No escribas todo en mayúsculas o negritas.
 
Páginas internacionales: España  |  Italia  |  Francia  |  México  |  Alemania  |  Reino Unido  |  Argentina  |  Chile  |  Colombia  |  USA

Búsquedas frecuentes: efectos de la gravedad manualidades para mama causaciones tipos de modulos flemas en la garganta

Emagister cumple la Ley Orgánica 15/1999 de 13 de diciembre, de Protección de datos de Carácter Personal, y posee el código de inscripción nº 2002010053 del Registro General de la Agencia de Protección de Datos. Copyright © 1999/2000 - Grupo Intercom - Todos los derechos