En este grupo En todos

Foro de Excel



como pasar de numero a texto en exel

Escrito por Giancarlo Chavez Davila
el 22/11/2007
Hola señor espero que me pueda ayudar. Necesito que me explique paso a paso como pasar de numero a texto en exel........ Osea ejemplo : 1200 = mil doscientos... Por favor lo necesito con urgencia se que usted es un especialista.. Gracias anticipadamente
Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 22/11/2007

En este link tengo una plantilla para eso:

www.geocities.com/excelmx/PesosyDolares. Xls


Escrito por Guillermo Tobon
el 22/11/2007

Giancarlo:

Esa función se conoce como "Monto Escrito" o "SpellNumber". A continuación está la codificación que debe incluir:

  1. Abra la hoja de cálculo donde la necesite
  2. Seleccione el texto de este mensaje a partir de "Option Explicit" y copielo en el portapapeles
  3. Herramientas -> Macro -> Editor de visual basic
  4. Cuando este se abra, Insertar -> Módulo
  5. Pegue el contenido del portapapeles (Ctrl) V
  6. Archivo -> Cerrar y volver a MS Excel

Queda disponible la función. Para usarla, en la celda donde se necesite el texto, se teclea:

                        =Monto(cc)     [cc es la dirección donde está el valor a convertir]

Eso es todo. Espero le sirva.


Saludo


Guillermo Tobón




Option Explicit

" Artículo: Cómo crear la función llamada "SpellNumber"
" Página:   Ayuda y Soporte Técnico de Microsoft: https://support.microsoft.com/kb/q213360
" Cómo convertir un valor numérico en palabras inglesas en Excel"
" Adaptada para español por Guillermo Tobón Agosto 29, 2005
" Convierte hasta $ 999"999. 999,99
" No toma valores inferiores a $1. 00


"Main Function
Function Monto(ByVal MyNumber)
    Dim Dollars, Cents, Temp, Miles
    Dim DecimalPlace, Count
    ReDim Place(9) As String
    If MyNumber < 1 Then
        Monto = "X-X-X-X-X-X"
        Exit Function
    End If
    If MyNumber > 999999999 Then
        Monto = " Excede la capacidad de 999"999. 999 "
        Exit Function
    End If
    Place(2) = " MIL "
    Place(3) = " MILLÓN "
    Place(4) = " Billon "
    Place(5) = " Trillon "
   
                    " String representation of amount.
    MyNumber = Trim(Str(MyNumber))
                    " Position of decimal place 0 if none.
    DecimalPlace = InStr(MyNumber, ". ")
                    " Convert cents and set MyNumber to dollar amount.
    If DecimalPlace > 0 Then
        Cents = " CON " & (Left(Mid(MyNumber, DecimalPlace + 1) & _
                  "00", 2)) & " /100"
         MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
    End If
   
    Miles = Right(MyNumber, 6) " Los últimos 6 dígitos
    If MyNumber > 999999 Then
        If Miles = "000000" Then
            If MyNumber > 1999999 Then
                Place(3) = " MILLONES DE "
            Else
                Place(3) = " MILLÓN DE "
            End If
        Else
           If MyNumber > 1999999 Then
                Place(3) = " MILLONES "
            Else
                Place(3) = " MILLÓN "
            End If
        End If
    End If
   
    Count = 1
    Do While MyNumber <> ""
        Temp = GetHundreds(Right(MyNumber, 3))
        If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
        If Len(MyNumber) > 3 Then
            MyNumber = Left(MyNumber, Len(MyNumber) - 3)
        Else
            MyNumber = ""
        End If
        Count = Count + 1
    Loop
    Select Case Dollars
        Case ""
            Dollars = Dollars
        Case Else
            Dollars = Dollars & " PESOS"
    End Select
    Monto = Dollars & Cents
End Function

" Converts a number from 100-999 into text
Function GetHundreds(ByVal MyNumber)
    Dim Result As String
    If Val(MyNumber) = 0 Then Exit Function
    MyNumber = Right("000" & MyNumber, 3)
    " Convert the hundreds place.
    Select Case Val(Left(MyNumber, 1))
            Case 1: Result = "CIENTO "
            Case 2: Result = "DOSCIENTOS "
            Case 3: Result = "TRESCIENTOS "
            Case 4: Result = "CUATROCIENTOS "
            Case 5: Result = "QUINIENTOS "
            Case 6: Result = "SEISCIENTOS "
            Case 7: Result = "SETECIENTOS "
            Case 8: Result = "OCHOCIENTOS "
            Case 9: Result = "NOVECIENTOS "
            Case Else
    End Select
                    " Verificar si es CIEN o CIENTO
    If Val(MyNumber) = 100 Then
        Result = "CIEN"
    End If
   
                    " Convert the tens and ones place.
    If Mid(MyNumber, 2, 1) <> "0" Then
        Result = Result & GetTens(Mid(MyNumber, 2))
    Else
        Result = Result & GetDigit(Mid(MyNumber, 3))
    End If
    GetHundreds = Result
End Function

" Converts a number from 10 to 99 into text.
Function GetTens(TensText)
    Dim Result As String
    Result = ""           " Null out the temporary function value.
    If Val(Left(TensText, 1)) = 1 Then   " If value between 10-19...
        Select Case Val(TensText)
            Case 10: Result = "DIEZ"
            Case 11: Result = "ONCE"
            Case 12: Result = "DOCE"
            Case 13: Result = "TRECE"
            Case 14: Result = "CATORCE"
            Case 15: Result = "QUINCE"
            Case 16: Result = "DIECISEIS"
            Case 17: Result = "DIECISIETE"
            Case 18: Result = "DIECIOCHO"
            Case 19: Result = "DIECINUEVE"
            Case Else
        End Select
    Else
        If Val(Left(TensText, 1)) = 2 Then   " If value between 20-29...
             Select Case Val(TensText)
                Case 20: Result = "VEINTE"
                Case 21: Result = "VEINTIUN"
                Case 22: Result = "VEINTIDOS"
                Case 23: Result = "VEINTITRES"
                Case 24: Result = "VEINTICUATRO"
                Case 25: Result = "VEINTICINCO"
                Case 26: Result = "VEINTISEIS"
                Case 27: Result = "VEINTISIETE"
                Case 28: Result = "VEINTIOCHO"
                Case 29: Result = "VEINTINUEVE"
                Case Else
            End Select
        Else                                 " If value between 30-99...
            Select Case Val(Left(TensText, 1))
                Case 2: Result = "VEINTE "
                Case 3: Result = "TREINTA "
                Case 4: Result = "CUARENTA "
                Case 5: Result = "CINCUENTA "
                Case 6: Result = "SESENTA "
                Case 7: Result = "SETENTA "
                Case 8: Result = "OCHENTA "
                Case 9: Result = "NOVENTA "
                Case Else
            End Select
    " Adición de Y cuando las decenas tienen unidades
            If Val(Left(TensText, 1)) > 2 Then   " If value > 30...
                If Val(Right(TensText, 1)) > 0 Then
                    Result = Result & "Y "
                End If
            End If
            Result = Result & GetDigit _
                (Right(TensText, 1))  " Retrieve ones place.
        End If
    End If
    GetTens = Result
End Function

" Converts a number from 1 to 9 into text.
Function GetDigit(Digit)
    Select Case Val(Digit)
        Case 1: GetDigit = "UN"
        Case 2: GetDigit = "DOS"
        Case 3: GetDigit = "TRES"
        Case 4: GetDigit = "CUATRO"
        Case 5: GetDigit = "CINCO"
        Case 6: GetDigit = "SEIS"
        Case 7: GetDigit = "SIETE"
        Case 8: GetDigit = "OCHO"
        Case 9: GetDigit = "NUEVE"
        Case Else: GetDigit = ""
    End Select
End Function
    
   

Escrito por Jeverg
el 05/08/2009
Hola.

Aplique la funcion y me funcionó de maravilla pero resulta que como trabajo en red y el archivo que requiero convertir esta compartido, se presenta problemas cuando mi compañera ingresa al archivo ya que ella tiene office 98. Como puedo hacer?

Gracias.




"Giancarlo:
Esa función se conoce como "Monto Escrito" o "SpellNumber". A continuación está la codificación que debe incluir:
  1. Abra la hoja de cálculo donde la necesite
  2. Seleccione el texto de este mensaje a partir de "Option Explicit" y copielo en el portapapeles
  3. Herramientas -> Macro -> Editor de visual basic
  4. Cuando este se abra, Insertar -> Módulo
  5. Pegue el contenido del portapapeles (Ctrl) V
  6. Archivo -> Cerrar y volver a MS Excel
Queda disponible la función. Para usarla, en la celda donde se necesite el texto, se teclea:
=Monto(cc) [cc es la dirección donde está el valor a convertir]
Eso es todo. Espero le sirva.

Saludo

Guillermo Tobón




Option Explicit
" Artículo: Cómo crear la función llamada "SpellNumber"
" Página: Ayuda y Soporte Técnico de Microsoft: https://support.microsoft.com/kb/q213360
" Cómo convertir un valor numérico en palabras inglesas en Excel"
" Adaptada para español por Guillermo Tobón Agosto 29, 2005
" Convierte hasta $ 999"999. 999,99
" No toma valores inferiores a $1. 00

"Main Function
Function Monto(ByVal MyNumber)
Dim Dollars, Cents, Temp, Miles
Dim DecimalPlace, Count
ReDim Place(9) As String
If MyNumber < 1 Then
Monto = "X-X-X-X-X-X"
Exit Function
End If
If MyNumber > 999999999 Then
Monto = " Excede la capacidad de 999"999. 999 "
Exit Function
End If
Place(2) = " MIL "
Place(3) = " MILLÓN "
Place(4) = " Billon "
Place(5) = " Trillon "

" String representation of amount.
MyNumber = Trim(Str(MyNumber))
" Position of decimal place 0 if none.
DecimalPlace = InStr(MyNumber, ". ")
" Convert cents and set MyNumber to dollar amount.
If DecimalPlace > 0 Then
Cents = " CON " & (Left(Mid(MyNumber, DecimalPlace + 1) & _
"00", 2)) & " /100"
MyNumber = Trim(Left(MyNumber, DecimalPlace - 1))
End If

Miles = Right(MyNumber, 6) " Los últimos 6 dígitos
If MyNumber > 999999 Then
If Miles = "000000" Then
If MyNumber > 1999999 Then
Place(3) = " MILLONES DE "
Else
Place(3) = " MILLÓN DE "
End If
Else
If MyNumber > 1999999 Then
Place(3) = " MILLONES "
Else
Place(3) = " MILLÓN "
End If
End If
End If

Count = 1
Do While MyNumber <> ""
Temp = GetHundreds(Right(MyNumber, 3))
If Temp <> "" Then Dollars = Temp & Place(Count) & Dollars
If Len(MyNumber) > 3 Then
MyNumber = Left(MyNumber, Len(MyNumber) - 3)
Else
MyNumber = ""
End If
Count = Count + 1
Loop
Select Case Dollars
Case ""
Dollars = Dollars
Case Else
Dollars = Dollars & " PESOS"
End Select
Monto = Dollars & Cents
End Function
" Converts a number from 100-999 into text
Function GetHundreds(ByVal MyNumber)
Dim Result As String
If Val(MyNumber) = 0 Then Exit Function
MyNumber = Right("000" & MyNumber, 3)
" Convert the hundreds place.
Select Case Val(Left(MyNumber, 1))
Case 1: Result = "CIENTO "
Case 2: Result = "DOSCIENTOS "
Case 3: Result = "TRESCIENTOS "
Case 4: Result = "CUATROCIENTOS "
Case 5: Result = "QUINIENTOS "
Case 6: Result = "SEISCIENTOS "
Case 7: Result = "SETECIENTOS "
Case 8: Result = "OCHOCIENTOS "
Case 9: Result = "NOVECIENTOS "
Case Else
End Select
" Verificar si es CIEN o CIENTO
If Val(MyNumber) = 100 Then
Result = "CIEN"
End If

" Convert the tens and ones place.
If Mid(MyNumber, 2, 1) <> "0" Then
Result = Result & GetTens(Mid(MyNumber, 2))
Else
Result = Result & GetDigit(Mid(MyNumber, 3))
End If
GetHundreds = Result
End Function
" Converts a number from 10 to 99 into text.
Function GetTens(TensText)
Dim Result As String
Result = "" " Null out the temporary function value.
If Val(Left(TensText, 1)) = 1 Then " If value between 10-19...
Select Case Val(TensText)
Case 10: Result = "DIEZ"
Case 11: Result = "ONCE"
Case 12: Result = "DOCE"
Case 13: Result = "TRECE"
Case 14: Result = "CATORCE"
Case 15: Result = "QUINCE"
Case 16: Result = "DIECISEIS"
Case 17: Result = "DIECISIETE"
Case 18: Result = "DIECIOCHO"
Case 19: Result = "DIECINUEVE"
Case Else
End Select
Else
If Val(Left(TensText, 1)) = 2 Then " If value between 20-29...
Select Case Val(TensText)
Case 20: Result = "VEINTE"
Case 21: Result = "VEINTIUN"
Case 22: Result = "VEINTIDOS"
Case 23: Result = "VEINTITRES"
Case 24: Result = "VEINTICUATRO"
Case 25: Result = "VEINTICINCO"
Case 26: Result = "VEINTISEIS"
Case 27: Result = "VEINTISIETE"
Case 28: Result = "VEINTIOCHO"
Case 29: Result = "VEINTINUEVE"
Case Else
End Select
Else " If value between 30-99...
Select Case Val(Left(TensText, 1))
Case 2: Result = "VEINTE "
Case 3: Result = "TREINTA "
Case 4: Result = "CUARENTA "
Case 5: Result = "CINCUENTA "
Case 6: Result = "SESENTA "
Case 7: Result = "SETENTA "
Case 8: Result = "OCHENTA "
Case 9: Result = "NOVENTA "
Case Else
End Select
" Adición de Y cuando las decenas tienen unidades
If Val(Left(TensText, 1)) > 2 Then " If value > 30...
If Val(Right(TensText, 1)) > 0 Then
Result = Result & "Y "
End If
End If
Result = Result & GetDigit _
(Right(TensText, 1)) " Retrieve ones place.
End If
End If
GetTens = Result
End Function
" Converts a number from 1 to 9 into text.
Function GetDigit(Digit)
Select Case Val(Digit)
Case 1: GetDigit = "UN"
Case 2: GetDigit = "DOS"
Case 3: GetDigit = "TRES"
Case 4: GetDigit = "CUATRO"
Case 5: GetDigit = "CINCO"
Case 6: GetDigit = "SEIS"
Case 7: GetDigit = "SIETE"
Case 8: GetDigit = "OCHO"
Case 9: GetDigit = "NUEVE"
Case Else: GetDigit = ""
End Select
End Function


"

por Guillermo Tobon (Noviembre 2007)



Escrito por Jeverg
el 05/08/2009

Hola

aplique la funcion y me funcona de maravilla, ahora el problema esta en que el archivo lo debo compartir en red y cuando mis compañeros ingresan, se les presenta inconvenientes con la formula, me imagino que es lo que tienen oficce 98, que puedo hacer?

mi correo es jhonaudicont@hotmail. Com

Gracias

Escrito por Fred
el 05/08/2009
Hey te recomiendo que tambien des de ti mismo, no te solucionaremos la vida, si te damos solucion a este hilo se te presentara una nueva idea o problema y tu no habras aprendido nada, no esperes recibir todo masticado
adelante.. Animate que puedes! Wink

"Hola

aplique la funcion y me funcona de maravilla, ahora el problema esta en que el archivo lo debo compartir en red y cuando mis compañeros ingresan, se les presenta inconvenientes con la formula, me imagino que es lo que tienen oficce 98, que puedo hacer?

mi correo es jhonaudicont@hotmail. Com

Gracias
"

por Jeverg (Agosto 2009)



Escrito por Mery
el 11/09/2009

Hola, he estado intentando con la fórmula que mencionan arriba, pero no puedo ejecutarla debido a que mi excel es 2007 y en español... Me podrían ayudar?

Gracias desde ya...

Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 11/09/2009

Para ver las instrucciones baja la planilla que menciono arriba, este es el mismo link:
En este link tengo una plantilla para eso:
www.geocities.com/excelmx/PesosyDolares. Xls
Para recibir mejor atencion es mejor iniciar un nuevo tema en la primera pagina del foro.

Seba Julio
Buenos Aires, Argent...
Escrito por Seba Julio
el 02/08/2011

Acá hay una función que convierte números a letras con decimales y hasta miles de billones.
https://vba-para-excel.blogspot.com/2011/08/convertir-numeros-letras-con-decimales. Html

Armando Montes
Foro excel emagister
Escrito por Armando Montes
el 02/08/2011

Gracias por el aporte.