** NORMAS DEL FORO **
Inicio del foro Inicio del foro > Otros de Microsoft: Windows y Office > Excel
  Mensajes nuevos Mensajes nuevos RSS - Convertir número en texto.
  Preguntas frecuentes Preguntas frecuentes  Buscar en el foro   Eventos   Registro Registro  Iniciar sesion Iniciar sesion

Tema cerradoConvertir número en texto.

 Responder Responder
Autor
Mensaje
noesystem Ver desplegable
Habitual
Habitual
Avatar

Unido: 24/Septiembre/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 106
Enlace directo a este mensaje Tema: Convertir número en texto.
    Enviado: 21/Noviembre/2008 a las 21:25
Quisiera por favor hacerles la siguiente petición:
la maestra de mi niña me ha pedido que le haga un
calendario del 1 (uno) al mil (mil) en tamaño de 1/4
de página.
entonces mi necesidad consiste en que yo pueda hacer
un listado del uno al mil en número y que con una
función pueda ponerle en la parte inferior del número
su respectivo texto ejemplo 1 (uno), 2 (dos), 3(tres)...
999 (novecientos noventa y nueve), 1000 (mil).
gracias al maestro que pueda tomar mi consulta.
DIOS es DIOS desde que comenzó a ser Matemático!
Arriba
AnSanVal Ver desplegable
Administrador
Administrador
Avatar

Unido: 16/Marzo/2005
Localización: España
Estado: Sin conexión
Puntos: 5646
Enlace directo a este mensaje Enviado: 22/Noviembre/2008 a las 02:21
Te pongo el código modificado, para que no salga con la moneda (euros) ni con paréntesis.
 
En un módulo ordinario:
 
Function aLetras(Valor, Optional ByVal Tipo As Byte = 1) As String
'funcion Principal '
  If Not IsNumeric(Valor) Then
    aLetras = "¡ La referencia no es valor numérico !!!":
Exit Function
  End If: Dim Moneda As String, Fracs As String, Cents As Integer
  If Int(Abs(Valor)) = 1 Then Moneda = " Euro" Else Moneda = " Euros"
  If Right(Letras(Abs(Int(Valor))), 6) = "illón " Or _
Right(Letras(Abs(Int(Valor))), 8) = "illones " Then Moneda = "de" & Moneda
  Cents = Application.Round(Abs(Valor) - Int(Abs(Valor)), 2) * 100
  If Cents = 1 Then Fracs = " céntimo de Euro" Else Fracs = " céntimos de Euro"
  If Cents = 0 Then Fracs = "" Else Fracs = ", con " & Letras(Cents) & Fracs
  aLetras = Letras(Int(Abs(Valor))) ' & Moneda & Fracs
  If Valor < 0 Then aLetras = "menos " & aLetras
  If Tipo = 2 Then aLetras = UCase(aLetras) ' TODO EN MAYUSCULAS '
  If Tipo = 3 Then aLetras = StrConv(aLetras, vbProperCase) ' Todo Como Nombre Propio '
  If Tipo = 4 Then aLetras = UCase(Left(aLetras, 1)) & Mid(aLetras, 2)
'Primera letra en mayuscula SOLAMENTE '
'  aLetras = "(" & aLetras & ")" ' Aquí coloca los paréntesis.
End Function
Private Function Letras(Valor) As String ' Función Auxiliar [uso
'exclusivo'de la funcion 'principal'] '
  Select Case Int(Valor)
    Case 0: Letras = "cero"
    Case 1: Letras = "un"
    Case 2: Letras = "dos"
    Case 3: Letras = "tres"
    Case 4: Letras = "cuatro"
    Case 5: Letras = "cinco"
    Case 6: Letras = "seis"
    Case 7: Letras = "siete"
    Case 8: Letras = "ocho"
    Case 9: Letras = "nueve"
    Case 10: Letras = "diez"
    Case 11: Letras = "once"
    Case 12: Letras = "doce"
    Case 13: Letras = "trece"
    Case 14: Letras = "catorce"
    Case 15: Letras = "quince"
    Case Is < 20: Letras = "dieci" & Letras(Valor - 10)
    Case 20: Letras = "veinte"
    Case Is < 30: Letras = "veinti" & Letras(Valor - 20)
    Case 30: Letras = "treinta"
    Case 40: Letras = "cuarenta"
    Case 50: Letras = "cincuenta"
    Case 60: Letras = "sesenta"
    Case 70: Letras = "setenta"
    Case 80: Letras = "ochenta"
    Case 90: Letras = "noventa"
    Case Is < 100: Letras = Letras(Int(Valor \ 10) * 10) & " y " & Letras(Valor Mod 10)
    Case 100: Letras = "cien"
    Case Is < 200: Letras = "ciento " & Letras(Valor - 100)
    Case 200, 300, 400, 600, 800: Letras = Letras(Int(Valor \ 100)) & "cientos"
    Case 500: Letras = "quinientos"
    Case 700: Letras = "setecientos"
    Case 900: Letras = "novecientos"
    Case Is < 1000: Letras = Letras(Int(Valor \ 100) * 100) & " " & Letras(Valor Mod 100)
    Case 1000: Letras = "mil"
    Case Is < 2000: Letras = "mil " & Letras(Valor Mod 1000)
    Case Is < 1000000: Letras = Letras(Int(Valor \ 1000)) & " mil"
      If Valor Mod 1000 Then Letras = Letras & " " & Letras(Valor Mod 1000)
    Case 1000000: Letras = "un millón "
    Case Is < 2000000: Letras = "un millón " & Letras(Valor Mod 1000000)
    Case Is < 1000000000000#: Letras = Letras(Int(Valor / 1000000)) & " millones "
      If (Valor - Int(Valor / 1000000) * 1000000) _
        Then Letras = Letras & Letras(Valor - Int(Valor / 1000000) * 1000000)
    Case 1000000000000#: Letras = "un billón "
    Case Is < 2000000000000#
      Letras = "un billón " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
    Case Else: Letras = Letras(Int(Valor / 1000000000000#)) & "billones """
      If (Valor - Int(Valor / 1000000000000#) * 1000000000000#) _
        Then Letras = Letras & " " & Letras(Valor - Int(Valor / 1000000000000#) * 1000000000000#)
  End Select
End Function
 
 
Ejemplo:
Si en A1 tienes el número, en A2 escribe: =aNumero(A1)
 
 
Aprendemos intentando resolver dudas ajenas (ayuda cuando puedas/sepas).

Mi sitio_web con ejemplos Excel.
Arriba
noesystem Ver desplegable
Habitual
Habitual
Avatar

Unido: 24/Septiembre/2008
Localización: Mexico
Estado: Sin conexión
Puntos: 106
Enlace directo a este mensaje Enviado: 22/Noviembre/2008 a las 21:05
Una vez más obtengo una respuesta extraordinaria.
Quedo muy agradecido por su atinadísima herramienta
que me ha aportado usted maestro. Muchas gracias y
habré de sacarle provecho a este código tan valioso.
Atte: Noé Avila... Saludos.
DIOS es DIOS desde que comenzó a ser Matemático!
Arriba
 Responder Responder
  Compartir tema   

Ir al foro Permisos de foro Ver desplegable