Coloca el siguiente macro en un módulo del editor de Visual Basic. Cuando lo hayas copiado, vas a tu hoja y colocas en una celda cualquiera un numero(Por Ej. en B4) y en otra celda colocas esta instrucción: =numletras(B4;1). Así obtendras lo que quieres.
Tienes que tener habilitada la opcion de ejecución de macros.
Exitos
Option Explicit
Dim cTexto As String 'Variable para las funciones
Public Function NumLetras(ByVal Numero As Double, ByVal Mayusculas As Integer) As String
Dim NumTmp As String
Dim c01 As Integer
Dim c02 As Integer
Dim pos As Integer
Dim dig As Integer
Dim cen As Integer
Dim dec As Integer
Dim uni As Integer
Dim letra1 As String
Dim letra2 As String
Dim letra3 As String
Dim Leyenda As String
Dim Leyenda1 As String
Dim TFNumero As String
If Numero < 0 Then Numero = Abs(Numero)
NumTmp = Format(Numero, "000000000000000.00") 'Le da un formato fijo
c01 = 1
pos = 1
TFNumero = ""
'Para extraer tres digitos cada vez
Do While c01 <= 5
c02 = 1
Do While c02 <= 3
'Extrae un digito cada vez de izquierda a derecha
dig = Val(Mid(NumTmp, pos, 1))
Select Case c02
Case 1: cen = dig
Case 2: dec = dig
Case 3: uni = dig
End Select
c02 = c02 + 1
pos = pos + 1
Loop
letra3 = Centena(uni, dec, cen)
letra2 = Decena(uni, dec)
letra1 = Unidad(uni, dec)
Select Case c01
Case 1
If cen + dec + uni = 1 Then
Leyenda = "Billon "
ElseIf cen + dec + uni > 1 Then
Leyenda = "Billones "
End If
Case 2
If cen + dec + uni >= 1 And Val(Mid(NumTmp, 7, 3)) = 0 Then
Es posible que necesites habilitar la pestaña de "programador" en exel (versión vista) para eso vete a la ayuda de exel y ponle como habilitar pestaña de programador. No lo detall para no desviar tu pregunta.
Supongamos que tiene una hoja de cálculo con una columna de números. PodrÃa dar formato de texto a la columna utilizando el comando Formato > Celdas > Número > Texto.
Para obtener más información, consulte Dar formato de texto a los números.
Utilizar la función TEXTO
Otra posibilidad consiste en utilizar la función TEXTO, que convierte en texto los valores que tengan un formato de número especÃfico. En este ejemplo, supongamos que posee números en las celdas A2:A100. Para convertirlos en texto, podrÃa hacer lo siguiente.
Inserte una columna B en blanco.
En la celda B2, escriba esta fórmula:
=TEXTO(A2;"0")
Rellene hacia abajo la fórmula de la celda B2, desde B3:B100.
Ahora deberá cambiar las fórmulas a valores para que se conviertan en texto. Resalte las celdas B2:B100.
Utilice Ctrl+C para copiarlas y, a continuación, haga clic en Edición > Pegado especial > Valores > Aceptar.
Ahora las entradas de la columna B serán versiones en texto de los números de la columna A.
Answers & Comments
Verified answer
Cordial saludo.
Coloca el siguiente macro en un módulo del editor de Visual Basic. Cuando lo hayas copiado, vas a tu hoja y colocas en una celda cualquiera un numero(Por Ej. en B4) y en otra celda colocas esta instrucción: =numletras(B4;1). Así obtendras lo que quieres.
Tienes que tener habilitada la opcion de ejecución de macros.
Exitos
Option Explicit
Dim cTexto As String 'Variable para las funciones
Public Function NumLetras(ByVal Numero As Double, ByVal Mayusculas As Integer) As String
Dim NumTmp As String
Dim c01 As Integer
Dim c02 As Integer
Dim pos As Integer
Dim dig As Integer
Dim cen As Integer
Dim dec As Integer
Dim uni As Integer
Dim letra1 As String
Dim letra2 As String
Dim letra3 As String
Dim Leyenda As String
Dim Leyenda1 As String
Dim TFNumero As String
If Numero < 0 Then Numero = Abs(Numero)
NumTmp = Format(Numero, "000000000000000.00") 'Le da un formato fijo
c01 = 1
pos = 1
TFNumero = ""
'Para extraer tres digitos cada vez
Do While c01 <= 5
c02 = 1
Do While c02 <= 3
'Extrae un digito cada vez de izquierda a derecha
dig = Val(Mid(NumTmp, pos, 1))
Select Case c02
Case 1: cen = dig
Case 2: dec = dig
Case 3: uni = dig
End Select
c02 = c02 + 1
pos = pos + 1
Loop
letra3 = Centena(uni, dec, cen)
letra2 = Decena(uni, dec)
letra1 = Unidad(uni, dec)
Select Case c01
Case 1
If cen + dec + uni = 1 Then
Leyenda = "Billon "
ElseIf cen + dec + uni > 1 Then
Leyenda = "Billones "
End If
Case 2
If cen + dec + uni >= 1 And Val(Mid(NumTmp, 7, 3)) = 0 Then
Leyenda = "Mil Millones "
ElseIf cen + dec + uni >= 1 Then
Leyenda = "Mil "
End If
Case 3
If cen + dec = 0 And uni = 1 Then
Leyenda = "Millon "
ElseIf cen > 0 Or dec > 0 Or uni > 1 Then
Leyenda = "Millones "
End If
Case 4
If cen + dec + uni >= 1 Then
Leyenda = "Mil "
End If
Case 5
If cen + dec + uni >= 1 Then
Leyenda = ""
End If
End Select
c01 = c01 + 1
TFNumero = TFNumero + letra3 + letra2 + letra1 + Leyenda
Leyenda = ""
letra1 = ""
letra2 = ""
letra3 = ""
Loop
If Val(NumTmp) = 0 Or Val(NumTmp) < 1 Then
Leyenda1 = "Cero Bolivianos "
ElseIf Val(NumTmp) = 1 Or Val(NumTmp) < 2 Then
Leyenda1 = "Peso "
ElseIf Val(Mid(NumTmp, 4, 12)) = 0 Or Val(Mid(NumTmp, 10, 6)) = 0 Then
Leyenda1 = "de Bolivianos "
Else
Leyenda1 = "Bolivianos "
End If
TFNumero = "(" & TFNumero & Leyenda1 & Mid(NumTmp, 17) & "/100 Centavos)"
If Mayusculas = 1 Then
TFNumero = UCase(TFNumero)
Else
TFNumero = LCase(TFNumero)
End If
NumLetras = TFNumero
End Function
Private Function Centena(ByVal uni As Integer, ByVal dec As Integer, _
ByVal cen As Integer) As String
Select Case cen
Case 1
If dec + uni = 0 Then
cTexto = "cien "
Else
cTexto = "ciento "
End If
Case 2: cTexto = "doscientos "
Case 3: cTexto = "trescientos "
Case 4: cTexto = "cuatrocientos "
Case 5: cTexto = "quinientos "
Case 6: cTexto = "seiscientos "
Case 7: cTexto = "setecientos "
Case 8: cTexto = "ochocientos "
Case 9: cTexto = "novecientos "
Case Else: cTexto = ""
End Select
Centena = cTexto
cTexto = ""
End Function
Private Function Decena(ByVal uni As Integer, ByVal dec As Integer) As String
Select Case dec
Case 1
Select Case uni
Case 0: cTexto = "diez "
Case 1: cTexto = "once "
Case 2: cTexto = "doce "
Case 3: cTexto = "trece "
Case 4: cTexto = "catorce "
Case 5: cTexto = "quince "
Case 6 To 9: cTexto = "dieci"
End Select
Case 2
If uni = 0 Then
cTexto = "veinte "
ElseIf uni > 0 Then
cTexto = "veinti"
End If
Case 3: cTexto = "treinta "
Case 4: cTexto = "cuarenta "
Case 5: cTexto = "cincuenta "
Case 6: cTexto = "sesenta "
Case 7: cTexto = "setenta "
Case 8: cTexto = "ochenta "
Case 9: cTexto = "noventa "
Case Else: cTexto = ""
End Select
If uni > 0 And dec > 2 Then cTexto = cTexto + "y "
Decena = cTexto
cTexto = ""
End Function
Private Function Unidad(ByVal uni As Integer, ByVal dec As Integer) As String
If dec <> 1 Then
Select Case uni
Case 1: cTexto = "un "
Case 2: cTexto = "dos "
Case 3: cTexto = "tres "
Case 4: cTexto = "cuatro "
Case 5: cTexto = "cinco "
End Select
End If
Select Case uni
Case 6: cTexto = "seis "
Case 7: cTexto = "siete "
Case 8: cTexto = "ocho "
Case 9: cTexto = "nueve "
End Select
Unidad = cTexto
cTexto = ""
End Function
Exitos
Diego
Lo q te dice Zatiro es cierto primero debes habilitar un macro para poder hacer lo que tu quieres.
Si nunca haz usado macros, Checa el siguiente link para mas detalles
http://gchable.wordpress.com/2007/10/14/4/
Es posible que necesites habilitar la pestaña de "programador" en exel (versión vista) para eso vete a la ayuda de exel y ponle como habilitar pestaña de programador. No lo detall para no desviar tu pregunta.
Utilizar el cuadro de diálogo Formato de celdas
Supongamos que tiene una hoja de cálculo con una columna de números. PodrÃa dar formato de texto a la columna utilizando el comando Formato > Celdas > Número > Texto.
Para obtener más información, consulte Dar formato de texto a los números.
Utilizar la función TEXTO
Otra posibilidad consiste en utilizar la función TEXTO, que convierte en texto los valores que tengan un formato de número especÃfico. En este ejemplo, supongamos que posee números en las celdas A2:A100. Para convertirlos en texto, podrÃa hacer lo siguiente.
Inserte una columna B en blanco.
En la celda B2, escriba esta fórmula:
=TEXTO(A2;"0")
Rellene hacia abajo la fórmula de la celda B2, desde B3:B100.
Ahora deberá cambiar las fórmulas a valores para que se conviertan en texto. Resalte las celdas B2:B100.
Utilice Ctrl+C para copiarlas y, a continuación, haga clic en Edición > Pegado especial > Valores > Aceptar.
Ahora las entradas de la columna B serán versiones en texto de los números de la columna A.
Vuelva a copiar la columna B en la columna A.
Elimine la columna B temporal.
La clave de esta técnica es la función =TEXTO(). El segundo parámetro de esta función especifica el formato que deberÃa tener el número antes de convertirlo en texto. Puede que sea necesario ajustarlo tomando como base sus números. Por ejemplo:
El resultado de la función =TEXTO(123,25;"0") será 123.
El resultado de =TEXTO(123,25;"0,0") será 123,3.
El resultado de la función =TEXTO(123,25;"0,00") será 123,25.
Para mantener sólo las cifras decimales que se escribieron, utilice =TEXTO(A2,"General").
Esta función también es magnÃfica para convertir fechas en fechas con formato. Si tiene el valor 29/5/2003 en una celda, utilizando =TEXTO(A2,"d mmmm, yyyy") se obtiene 29 Mayo 2003.
Para obtener más información, consulte el tema de la Ayuda TEXTO.