Convertir números a texto
última versión 20091005
Una de las funciones que más se echa en falta en Excel es una que permitiese convertir un número en letras, me explico, que permitiese expresar un número que se le facilitase como argumento como un texto.
Especialmente indicado para esos casos de ...
total: 12021.35
asciende el presente presupuesto a la cantidad de doce mil veintiun euros con treinta y cinco céntimos
Supongo que las particularidades de cada idioma hacen que esto no sea una prioridad para Microsoft, también hacen que no sea inmediato adaptar una solución al español de las que existen en diferentes idiomas.
Hace tiempo, con la llegada del Euro, tuve que adaptar una función inicialmente pensada para pesetas (femenino y sin decimales), le añadí algunos argumentos para poder adaptarlo a cualquier unidad entera y fraccionaria, en masculino y femenino, porque el español tienen género para todas las cosas.
La conclusión de todo ello es la función que adjunto, y que espero que resulte de utilidad a los visitantes de esta web.
Los argumentos de la función NumLetra son los siguientes:
- Número el número a convertir, OBLIGATORIO
- NumDecimales número de decimales a considerar para pasar a texto. Como a veces el número provendrá de una operación, es importante este redondeo (por defecto cero)
- Unidad nombre de la unidad principal, se pondrá detrás de la parte entera (euros, dólares, pesos, coronas, ...)
- UdFracc nombre de la unidad fraccionaria, se pondrá detrás de los decimales (céntimos, centavos, centésimas, milésimas, ...)
- Conexión texto que separará la parte entera de la decimal (por ejemplo, tres euros "CON" quince céntimos, cuatro "coma" tres)
- Cero tratamiento a dar cuando tenemos un cero ( cero euros con diez céntimos, o simplemente diez céntimos) verdadero 0->"cero" falso 0->"" (por defecto: falso)
- UD_un_uno_a género para la unidad principal (cuarenta y un, cuarenta y uno, cuarenta y una) 1: 1->"un" 2: 1->"uno" 3: 1->"una" (por defecto: 1)
- Fracc_un_uno_a género para la unidad fraccionaria 1: 1->"un" 2: 1->"uno" 3: 1->"una" (por defecto: 1)
- UnMil permite indicar el tratamiento cuando tenemos una unidad de millar. Verdadero 1000->"un mil", Falso 1000->"mil"
Para comprender mejor el funcionamiento tal vez unos ejemplos resulten más claros que cualquier explicación:
Ejemplos de la función combinada con otros textos
Si no sabes qué hacer con el archivo que se descarga mira esta página donde se explica qué hacer con un archivo .bas
Si te resulta de gran utilidad y quieres agradecérmelo de alguna manera, siempre puedes invitarme a algo
y por supuesto si necesitas más, tal vez te interese Ya sé Excel, pero necesito más
- blog de pacomegia
- Añadir nuevo comentario
- 88484 lecturas




Comentarios
Re: Convertir números a texto
¡Ay... cómo somos los seres humanos...!
No habiendo suficientes versiones de esta función, ahí va la mía, que he depurado un poquito hasta el extremo, con lo que he ido aprendiendo... muy bonito y muy salado. No cuelgo el enlace a mi página porque no me parece muy profesional, pero es cuestión de hacer una búsqueda en el GranHermanool y supongo que aparecerá en breve.
(OJO! Sólo admite hasta 3 decimales en la parte fraccionaria)
Y en segundicia (la primicia la dejé en MrExcel forum...), también la dejo en Inglés (torticero, pero en inglés, lo he traducido a cañón, sin esmerarme mucho... y sin revisar, lo dejo por si a alguno le interesa).
[Edición: No podía ser tan fácil... la versión Inglesa escribe en inglés con la denominación castellana: 1 Billón = 10^12... lo que ellos llaman Trillion. Corrigido y reposteado. Y ya de paso, añadido Millardo a la versión Española, por eso de adaptarse a los dictados de la RAE].
Option Explicit
'APIs para obtener información del PC
Public Declare Function GetLocaleInfo Lib "kernel32" Alias "GetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long,ByVal lpLCData As String, ByVal cchData As Long) As Long
Public Declare Function SetLocaleInfo Lib "kernel32" Alias "SetLocaleInfoA" (ByVal Locale As Long, ByVal LCType As Long,ByVal lpLCData As String) As Long
'APIs para obtener datos de usuario y PC
'Uso de las llamadas a API para obtener la configuración regional del sistema
'Llamada a API GetLocalInfo
Public Const LOCALE_USER_DEFAULT = &H400 'separador decimal para números
Public Const LOCALE_SCURRENCY = &H14 'símbolo de moneda local
Public Const LOCALE_SINTLSYMBOL = &H15 'intl símbolo monetario
Public Const LOCALE_SMONDECIMALSEP = &H16 'separador decimal monetario
Public Const LOCALE_SMONTHOUSANDSEP = &H17 'separador millar monetario
Public Const LOCALE_SMONGROUPING = &H18 'Separador de listas monetario o ¿Número de grupos en grupo?
Public Const LOCALE_ICURRDIGITS = &H19 '# digitos moneda local o ¿Número de grupos en grupo?
Public Function GetValueCR(sCte As Integer) As String
Dim sBuffer As String, lBufferLen As Long
lBufferLen = 50
sBuffer = VBA.Space(lBufferLen)
If (GetLocaleInfo(LOCALE_USER_DEFAULT, sCte, sBuffer, lBufferLen)) Then
GetValueCR = VBA.Left(sBuffer, VBA.InStr(sBuffer, VBA.Chr(0)) - 1)
Else
GetValueCR = ""
End If
End Function
Public Function DeterminaConfiguracionEquipo(Parametro AsString) As StringSub Probando()
Dim strCadena As String
strCadena = fALetra(106.5, "") 'Cells(2, 1).Value)
VBA.MsgBox strCadena
End Sub
Public Function fALetra(ByRef dbValor As Double, _
Optional ByRef strMoneda As String = "EURO", _
Optional ByRef strFraccionMoneda AsString = "CÉNTIMO", _
Optional ByRef strConcatenador AsString = "CON", _
Optional ByRef intDecimales As Integer= 2) As String
Application.Volatile (False)
Dim strSeparadorMiles As String, strSeparadorDecimales AsString
Dim strAbsoluto As String, strDecimales As String
Dim lgAbsoluto As Long, dbDecimales As Double
Dim strCadena As String, strCadenaFinal As String
Dim Cientos As Long, Miles As Long, Millones As Long, Millardos As Long
Dim strCadenaBillones As String, strCadenaMillardos AsString, strCadenaMillones As String, _
strCadenaMiles As String, strCadenaCientos As String, strCadenaDecimales As String
Dim lgMultiplicador As Long
'Si se leen números (procedentes de fuentes externas) que no se corresponden con la configuración numérica del usuario
'strSeparadorMiles = GetValueCR(15)
'strSeparadorDecimales = GetValueCR(14)
'
If strMoneda = "" Then strMoneda = ""
If VBA.Len(VBA.CStr(dbValor)) = 1 Then 'Caso unidades
lgAbsoluto = VBA.Abs(VBA.Fix(dbValor))
Else
lgAbsoluto = VBA.Abs(VBA.Fix(dbValor))
End If
Cientos = (lgAbsoluto - 1000 * (lgAbsoluto \ 1000))
Miles = (lgAbsoluto - 1000000 * (lgAbsoluto \ 1000000)) \ 1000
Millones = (lgAbsoluto - 1000000000 * (lgAbsoluto \ 1000000000)) \ 1000000
Millardos = (lgAbsoluto - Millones * 1000000 - Miles * 1000 - Cientos) \ 1000000000
strCadenaCientos = ConvierteCifra(Cientos)
strCadenaCientos = VBA.IIf(VBA.Right(strCadenaCientos, 2) = "UN" And VBA.UCase(VBA.Right(strMoneda, 1)) = "A", _
strCadenaCientos & "A", strCadenaCientos)
strCadenaCientos = VBA.IIf(VBA.InStr(1, strCadenaCientos, "CIENTOS") > 0 And VBA.UCase(VBA.Right(strMoneda, 1)) = "A", _
VBA.Replace(strCadenaCientos, "CIENTOS", "CIENTAS"), strCadenaCientos)
strCadenaMiles = ConvierteCifra(Miles)
strCadenaMillones = ConvierteCifra(Millones)
strCadenaMillardos = ConvierteCifra(Millardos)
If VBA.Abs(dbValor) > 999999999999.99 Then
If VBA.Trim(strCadenaBillones) = "UN" Then
strCadena = strCadenaBillones & " BILLóN"
Else
strCadena = strCadenaBillones & " BILLONES"
End If
End If
If VBA.Abs(dbValor) > 999999999.99 Then
strCadena = VBA.IIf(VBA.Trim(strCadenaMillardos) = "UN", _
strCadena & " MILLARDO", strCadena & " " & strCadenaMillardos & " MILLARDOS")
End If
If VBA.Abs(dbValor) > 999999.99 Then
strCadena = VBA.IIf(VBA.Trim(strCadenaMillones) = "UN", _
strCadenaMillones & " MILLÓN", strCadena & " " & strCadenaMillones & " MILLONES")
End If
If VBA.Abs(dbValor) > 999.99 Then
If VBA.Trim(strCadenaMiles) = "UN" Then
strCadena = strCadena & " MIL"
ElseIf VBA.Trim(strCadenaMiles) = "" Then
strCadena = strCadena
Else
strCadena = strCadena & " " & strCadenaMiles & " MIL"
End If
End If
intDecimales = VBA.IIf(intDecimales > 3, 3, intDecimales)
lgMultiplicador = VBA.Val(1 & VBA.String(intDecimales, "0"))
dbDecimales = (VBA.Abs(dbValor) - VBA.Abs(Fix(dbValor))) * lgMultiplicador
If strMoneda <> "" Then
If VBA.Abs(Int(dbValor)) = "0" Then
strCadena = "CERO " & VBA.UCase(strMoneda) & "S"
ElseIf Abs(Int(dbValor)) = "1" Then
strCadena = VBA.IIf(VBA.UCase(VBA.Right(strMoneda, 1)) = "A", "UNA", "UN")
strCadena = strCadena & " " & VBA.UCase(strMoneda)
Else
strCadena = strCadena & " " & strCadenaCientos & " " & VBA.UCase(strMoneda) & "S"
End If
Select Case VBA.Round((dbDecimales), 0)
Case Is = 1 'Una fracción monetaria
strCadena = strCadena & " " & strConcatenador & " " & _
VBA.IIf(VBA.UCase(VBA.Right(strFraccionMoneda, 1)) = "A", "UNA", "UN") & " " & strFraccionMoneda
Case Is > 1 'Hay fracción monetaria
strCadenaDecimales = ConvierteCifra(VBA.Round((dbDecimales), 0))
strCadenaDecimales = VBA.IIf(VBA.Right(strCadenaDecimales, 2) = "UN" And VBA.UCase(VBA.Right(strFraccionMoneda, 1)) = "A", _
strCadenaDecimales & "A", strCadenaDecimales)
strCadenaDecimales = VBA.IIf(VBA.InStr(1, strCadenaDecimales, "CIENTOS") > 0 And VBA.UCase(VBA.Right(strMoneda, 1)) = "A", _
VBA.Replace(strCadenaDecimales, "CIENTOS", "CIENTAS"), strCadenaDecimales)
strCadena = strCadena & " " & strConcatenador & " " & strCadenaDecimales & " " & strFraccionMoneda & "S"
End Select
Else
If Abs(Int(dbValor)) = "0" Then
strCadena = ""
ElseIf Abs(Int(dbValor)) = "1" Then
strCadena = "UNO"
Else
strCadena = strCadena & " " & strCadenaCientos
End If
Select Case VBA.Round((dbDecimales), 0)
Case Is = 1
strCadena = strCadena & " " & strConcatenador & " " & " UNO"
Case Is > 1
strCadenaDecimales = ConvierteCifra(VBA.Round((dbDecimales), 0))
strCadena = strCadena & " " & strConcatenador & " " & strCadenaDecimales
End Select
End If
strCadenaFinal = VBA.Trim(strCadena)
If dbValor < 0 Then strCadenaFinal = "MENOS " & strCadenaFinal
fALetra = VBA.Replace(strCadenaFinal, " ", " ")
End Function
Public Function ConvierteCifra(ByVal lgValor As Long) AsString
Dim strCentena As String, strDecena As String, strUnidadAs String
Dim matrizUnidades As Variant
Dim matrizDecena As Variant
Dim matrizDecenas As Variant
Dim matrizDecenasY As Variant
Dim matrizCentena As Variant
matrizUnidades = Array("", "UN", "DOS", "TRES", "CUATRO", "CINCO", "SEIS", "SIETE", "OCHO", "NUEVE")
matrizDecena = Array("", "ONCE", "DOCE", "TRECE", "CATORCE", "QUINCE", "DIECISEIS", "DIECISIETE", "DIECIOCHO", "DIECINUEVE")
matrizDecenas = Array("", "DIEZ", "VEINTE", "TREINTA", "CUARENTA", "CINCUENTA", "SESENTA", "SETENTA", "OCHENTA", "NOVENTA")
matrizDecenasY = Array("", "", "VEINTI", "TREINTA Y ", "CUARENTA Y ", "CINCUENTA Y ", _
"SESENTA Y ", "SETENTA Y ", "OCHENTA Y ", "NOVENTA Y ")
matrizCentena = Array("", "", "DOSCIENTOS", "TRESCIENTOS", "CUATROCIENTOS", "QUINIENTOS", _
"SEISCIENTOS", "SETECIENTOS", "OCHOCIENTOS", "NOVECIENTOS")
Dim Unidad As Integer, Decena As Integer, Centena AsInteger
Centena = lgValor \ 100
Decena = (lgValor - Centena * 100) \ 10
Unidad = (lgValor - Centena * 100 - Decena * 10)
strUnidad = VBA.IIf(Decena <> 1, matrizUnidades(Unidad), matrizDecena(Unidad))
strDecena = VBA.IIf(Decena > 1, matrizDecena(Unidad), strDecena)
strDecena = VBA.IIf(Unidad > 0, matrizDecenasY(Decena), matrizDecenas(Decena))
strCentena = VBA.IIf(Centena = 1, "CIEN", matrizCentena(Centena))
strCentena = VBA.IIf(Centena = 1 And (Decena + Unidad > 0), "CIENTO", matrizCentena(Centena))
ConvierteCifra = strCentena & " " & strDecena & strUnidad
End Function
'....... EN LA LENGUA DE LA PÉRFIDA ALBIÓN ...................
'La función en versión inglesa:
Public Function fNumbersToText(ByRef dbValue As Double, _
Optional ByRef strCurrency As String = "EURO", _
Optional ByRef strFractionCurrency AsString = "CENTS", _
Optional ByRef strConcatenator AsString = "WITH", _
Optional ByRef intDecimals As Integer= 2) As String
Application.Volatile (False)
Dim strAbsolut As String, strDecimals As String
Dim lgAbsolut As Long, dbDecimals As Double
Dim strStringText As String, strFinalString As String
Dim Hundreds As Long, Thousands As Long, Millions As Long, Billions As Long
Dim strStringTextBillones As String, strStringTextBillionsAs String, strStringTextMillions As String, _
strStringTextThousands As String, strStringTextHundreds As String, strStringTextDecimals AsString
Dim lgMultiply As Long
If strCurrency = "" Then strCurrency = ""
If VBA.Len(VBA.CStr(dbValue)) = 1 Then 'Unities
lgAbsolut = VBA.Abs(VBA.Fix(dbValue))
Else
lgAbsolut = VBA.Abs(VBA.Fix(dbValue))
End If
Hundreds = (lgAbsolut - 1000 * (lgAbsolut \ 1000))
Thousands = (lgAbsolut - 1000000 * (lgAbsolut \ 1000000)) \ 1000
Millions = (lgAbsolut - 1000000000 * (lgAbsolut \ 1000000000)) \ 1000000
Billions = (lgAbsolut - Millions * 1000000 - Thousands * 1000 - Hundreds) \ 1000000000
strStringTextHundreds = fConvertQuantity(Hundreds)
strStringTextThousands = fConvertQuantity(Thousands)
strStringTextMillions = fConvertQuantity(Millions)
strStringTextBillions = fConvertQuantity(Billions)
If VBA.Abs(dbValue) > 999999999999.99 Then
If VBA.Trim(strStringTextBillones) = "UN" Then
strStringText = strStringTextBillones & " TRILLION"
Else
strStringText = strStringTextBillones & " TRILLIONS"
End If
End If
If VBA.Abs(dbValue) > 999999999.99 Then
strStringText = VBA.IIf(VBA.Trim(strStringTextBillions) = "ONE", _
strStringText & " BILLION", strStringText & " " & strStringTextBillions & " BILLIONS")
End If
If VBA.Abs(dbValue) > 999999.99 Then
strStringText = VBA.IIf(VBA.Trim(strStringTextMillions) = "ONE", _
strStringTextMillions & " MILLION", strStringText & " " & strStringTextMillions & " MILLIONS")
End If
If VBA.Abs(dbValue) > 999.99 Then
If VBA.Trim(strStringTextThousands) = "ONE" Then
strStringText = strStringText & " THOUSAND"
ElseIf VBA.Trim(strStringTextThousands) = "" Then
strStringText = strStringText
Else
strStringText = strStringText & " " & strStringTextThousands & " THOUSAND"
End If
End If
intDecimals = VBA.IIf(intDecimals > 3, 3, intDecimals)
lgMultiply = VBA.Val(1 & VBA.String(intDecimals, "0"))
dbDecimals = (VBA.Abs(dbValue) - VBA.Abs(Fix(dbValue))) * lgMultiply
If strCurrency <> "" Then
If VBA.Abs(Int(dbValue)) = "0" Then
strStringText = "ZERO" & " " & VBA.UCase(strCurrency) & "S"
ElseIf Abs(Int(dbValue)) = "1" Then
strStringText = "ONE" & " " & VBA.UCase(strCurrency)
Else
strStringText = strStringText & " " & strStringTextHundreds & " " & VBA.UCase(strCurrency) & "S"
End If
Select Case VBA.Round((dbDecimals), 0)
Case Is = 1 'One monetary fraction
strStringText = strStringText & " " & strConcatenator & " " & "ONE" & " " & strFractionCurrency
Case Is > 1 'More than one monetary fraction
strStringTextDecimals = fConvertQuantity(VBA.Round((dbDecimals), 0))
strStringText = strStringText & " " & strConcatenator & " " & strStringTextDecimals & " " & strFractionCurrency & "S"
End Select
Else
If Abs(Int(dbValue)) = "0" Then
strStringText = ""
ElseIf Abs(Int(dbValue)) = "1" Then
strStringText = "ONE"
Else
strStringText = strStringText & " " & strStringTextHundreds
End If
Select Case VBA.Round((dbDecimals), 0)
Case Is = 1
strStringText = strStringText & " " & strConcatenator & " " & " ONE"
Case Is > 1
strStringTextDecimals = fConvertQuantity(VBA.Round((dbDecimals), 0))
strStringText = strStringText & " " & strConcatenator & " " & strStringTextDecimals
End Select
End If
strFinalString = VBA.Trim(strStringText)
If dbValue < 0 Then strFinalString = "MINUS " & strFinalString
fNumbersToText = VBA.Replace(strFinalString, " ", " ")
End Function
Public Function fConvertQuantity(ByVal lgValue As Long) AsString
Dim strHundreds As String, strTens As String, strUnity AsString
Dim matrizUnityes As Variant
Dim matrizTens As Variant
Dim matrizTenss As Variant
Dim matrizTenssY As Variant
Dim matrizHundreds As Variant
matrizUnityes = Array("", "ONE", "TWO", "THREE", "FOUR", "FIVE", "SIX", "SEVEN", "EIGHT", "NINE")
matrizTens = Array("", "ELEVEN", "TWELVE", "THIRTEEN", "FOURTEEN", "FIFTEEN", "SIXTEEN", "SEVENTEEN", "EIGHTEEN", "NINETEEN")
matrizTenss = Array("", "TEN", "TWENTY", "THIRTY", "FOURTY", "FIFTY", "SIXTY", "SEVENTY", "EIGHTY", "NINETY")
matrizTenssY = Array("", "", "TWENTY ", "THIRTY ", "FOURTY ", "FIFTY ", "SIXTY ", "SEVENTY ", "EIGHTY ", "NINETY ")
matrizHundreds = Array("", "ONE HUNDRED", "TWO HUNDREDS", "THREE HUNDREDS", "FOUR HUNDREDS", "FIVE HUNDREDS", _
"SIX HUNDREDS", "SEVEN HUNDREDS", "EIGHT HUNDREDS", "NINE HUNDREDS")
Dim Unity As Integer, Tens As Integer, Hundreds As Integer
Hundreds = lgValue \ 100
Tens = (lgValue - Hundreds * 100) \ 10
Unity = (lgValue - Hundreds * 100 - Tens * 10)
strUnity = VBA.IIf(Tens <> 1, matrizUnityes(Unity), matrizTens(Unity))
strTens = VBA.IIf(Tens > 1, matrizTens(Unity), strTens)
strTens = VBA.IIf(Unity > 0, matrizTenssY(Tens), matrizTenss(Tens))
strHundreds = matrizHundreds(Hundreds)
fConvertQuantity = strHundreds & " " & strTens & strUnity
End Function
-----------------------------------------------------------------
www.TrazEX.com (soluciones sobre Excel)
Re: Convertir números a texto
Ya no fozo más... que debes tener el correo saturadito XDD
-----------------------------------------------------------------
www.TrazEX.com (soluciones sobre Excel)
Re: Convertir números a texto
Límite de la función ±9.999.999.999,999 (casi 10 millardos -negativos o positivos-, con tres decimales en la precisión decimal)
Adjunto un módulo que se puede importar con la última corrección (1 Millardo, 1 Millón, que se expresan con el "UN" delante)...
Un día entero depurando código.
[Por implementar:
> que en la parte decimal se puedan definir más cifras
> que se pueda superar el límite de los millardos en la cifra a convertir]
Propicios días
-----------------------------------------------------------------
www.TrazEX.com (soluciones sobre Excel)
Re: Convertir números a texto
gracias Xoan niguen por tu versión de los hechos.
un saludo.
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
¡Hala!, ya estoy contento. XDD
En los billones de cifras (15)... la parte de CP1, y CP2 lista y preparada para moneda "créditos galácticos".
-----------------------------------------------------------------
www.TrazEX.com (soluciones sobre Excel)
Re: Convertir números a texto
Sr. Megia: Gracias por su trabajo, por fin he conseguido pasar números a letras, despues de mucho buscar, pero he encontrado un problemilla, ¡cómo no! dirian algunos que me conocen.
¿Como hacer para cuando el texto es demasiado largo, lo ponga en dos lineas? ocurre cuando la cantidad es grande o hay que ponerla al final de la linea. Me estoy refiriendo en Excell.
Espero su ayuda y le agradezco la paciencia con tantos informáticos desinfomados.
Saludos. Vicente
Re: Convertir números a texto
para mostrar textos en varias líneas, yo emplearía la opción de "Ajustar Texto"
Se encuentra dentro de las opciones de formato de celda, en la pestaña Alineación
Esto ajusta el texto al ancho de la celda, aumentando el alto de la fila (así que necesitarás una celda ancha)
lo tienes en la pestaña inicio
y también en el formato de celdas (menú contextual de la celda)
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Sr. Megia, Saludos:
He probado su sugerencia, resulta, pero en una sola celda, si ampliamos el Ancho de Columna en esa celda entonces de deshace el formato del documento, sería bueno poder aplicar el ajuste de texto a varias columnas a la vez, como si de una sola celda se tratara, ¿Es posible?
La anterior pregunta creia que no se había enviado, grata sorpresa para mi, al ver su contestación. Feliz día desde ARAGON.
combinar celdas
Es posible combinar varias celdas para que se aplique el formato como a una sola.
para ello, se seleccionan las celdas que se quieren combinar y luego en propiedades de celda>alineación se marca la opción Combinar.
También hay unos botones en la cinta de opciones para combinar y descombinar celdas
Respecto de los comentarios anónimos, tardan un poco en publicarse porque los apruebo manualmente para prevenir el spam.
Los usuarios registrados sí publican inmediatamente sus comentarios, y pueden crear temas nuevos en el foro.
además, pueden recibir un aviso por email cuando alguien contesta a sus preguntas.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: combinar celdas
Sr. Megia: Soy Vicente de nuevo.
Me temo que no puedo aprovechar su solución, porque mi Excell es 2003 y sus imagenes son de 2007 por lo que he podido ver en un portatil que tiene mi hija, me resisto a actualizar la versión, por que cambian bastantes cosas de una version a otra de Excell, en fin, sino queda otro remedio y hay que actualizarse, lo haremos.
Un abrazo. Vicente
en 2003 es igual
Vicente: en la versión 2003 es igual.
Sólo hay que seleccionar las celdas a combinar, y luego en el menú contextual (el del botón secundario del ratón) elegir la opción
Formato de Celdas. Ahí también está la opción de combinar celdas
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: en 2003 es igual
Sr.Megia: Por fin lo consegui, solo me faltaba marcar la opción de combinar celdas.
Muchisimas gracias, cada vez que entre en Excell me acordare de Ud.
Un abrazo. Vicente.
Re: Convertir números a texto
mira el comentario sobre concatenar
mira el comentario anterior sobre la función CONCATENAR
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: mira el comentario sobre concatenar
gracias y mil veces gracias llevo meses tratando de conseguir convertir los numeros en letras. graciassssssssssssss
Re: Gema
Hola , ante todo muchisimas gracias, solo me falta saber como hacer para que las letras me salgan en mayusculas. Muchas Gracias.
Función MAYUSC
utiliza la función MAYUSC para convertirlo todo a mayúsculas.
aquí tienes un ejemplo
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Convertir números a texto
que tal, buenas tardes, ya probe el codigo y si funciona muy bien, lo unico es.... si yo quiero que tambien la parte decimal se transcriba, porque lo voy a ocupar no para cantidades refiriendose a dinero, sino a cantidades de areas de terreno, como puedo modificar la formula, mas o menos le entendi y ya pone metros en lugar de pesos y centimetoros tambien, pero no puedo hacer que me cambien las decimales a texto... me podrias ayudar??? mil gracias y excelente trabajo.
para eso está el argumentoUdFracc
para eso está el argumento de la unidad fraccionaria que he llamado UdFracc
la función podría quedar algo así:
=NumLetra( CeldaConTuValor ; 2 ; "metros" ; "centímetros" ; "con")
por ejemplo, para un valor de 45.876245 mostraría lo siguiente:
cuarenta y cinco metros con ochenta y ocho centímetros
(redondea a dos decimales)
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: para eso está el argumentoUdFracc
Lo primero agradecerte el compartir el codigo, funciona perfectamente, quisiera saber si se puede escribir el numero entre parentesis despues del texto, es decir, CINCO MIL DOSCIENTOS EUROS CON DIEZ CENTIMOS (5.200,10 €), gracias nuevamente.
concatenar
esto es como cualquier otra función de Excel, puedes combinar las que necesites en una fórmula más complicada dentro de una celda.
para esto que propones, puedes emplear la función CONCATENAR, como primer argumento la función que convierte a letras, y luego añades los argumentos que necesites para espacios, paréntesis, símbolo de euro, etc.
También dispones de la función TEXTO que convierte un número en un texto con un formato especificado.
podría quedar todo parecido a esto (suponiendo que el número está en la celda A1, y que la función está en el libro de macros personal):
=CONCATENAR(PERSONAL.XLSB!NumLetra(A1;2;"euros";"céntimos";"con");" ";TEXTO(A1;"(# ###.##€)"))
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: concatenar
Muchas gracias, funciona perfectamente. Tengo otra cosilla, si la casilla que quiero transformar a texto tiene como numero 0,00 €, me deja la casilla de texto en blanco, no escribe nada. Esto ya es rizar el rizo, ante todo darte las gracias por este estupendo codigo.
Re: concatenar
la función NumLetra tiene un argumento llamado "cero" que permite elegir si se quiere mostrar el texto cero o no. pon este argumento igual a verdadero (o a uno).
respecto del número, prueba con un formato # ##0.00 para que ponga los ceros.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: concatenar
Muchas gracias pacomegia funciona todo bien
Re: Convertir números a texto
Acabo de utilizar la función NumeroaLetra de tu página web para un presupuesto de una oferta técnica y me ha venido estupendamente.
Gracias por hacernos las cosas más fáciles.
Javier
Re: Convertir números a texto
Mil gracias por esta macro...de verdad me ha sido de gran ayuda, tenía un rato intentando hacerlo manual.
Re: Convertir números a texto
Re: Convertir números a texto
Tienes toda la razón, los niveles de seguridad indican que han desabilitado los macros, me fui a opciones, los active y ya funcionan, no sabes cuanto te agradezco la ayuda porque esto me ha servido muchísimo, tengo algunas otras dudas por allí, pero tal vez más adelante te estaré molestando. De nuevo Gracias. Saludos.
Re: Convertir números a texto
No es ninguna molestia
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
: Convertir números a texto POR FAVOR
Hola, les agradecería si pudieran eneivrme el archivo para copnvertir numeros a texto con la denominación de moneda mexicana. Por ejemplo $1,567.98 = (un mil quinientos sesenta y siete pesos 98/100)
SI no es mucho pedir ojala venga con las instrucciones.Salvaran una vida.
Gracias
SAludos
Alexx
Los Mochis, Sinaloa, México
Re: : Convertir números a texto POR FAVOR
En este envío tienes un ejemplo
En esta misma página tienes más ejemplos e instrucciones.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Hola pacomegia mucho gusto, quiero comentarte que he seguido paso a paso este blog, y te comento que todo me ha funcionado a la perfección, el problema que he tenido es que grabo el archivo, me salgo y cuando lo quiero volver a usar me da error en la formula Y me indica que la formula tiene texto no reconocido y lo he puesto tal y como lo has indicado, será que me puedes ayudar a resolver este problemita?? Gracias y saludos.
Re: Convertir números a texto
hola como estas, duda cuando guardaste la macros la guardaste en un excel en el cual isiste una prueba para hacerlo funcionar. ¿ al guardar e intentar utilizarlo lo isite en el mismo doc. excel o abriste uno nuevo?
te explico la funcion solo se puede utilizar en el archivo excel donde proyectaste la funcion si quieres hacerlo en un nuevo doc.. debes realizar el mismo procedimiento. en cada uno de ellos. bueno aqui les dejo una funcion en MN . para uqien la quiera compartir.
se expresa asi
5.000 = cinco mil pesos.
tal cual y lo lees. eliminando el molesto "son:" que aparese tipicamente a un principio
FUNCION:
Re: Convertir números a texto
yo copio la furmula en la macro pero como hago para que salga las letras porque me sale #¿nombre? les agradezco se urgente muchas gracias
asistente para fórmula
Depende de dónde hayas puesto el código de la función, en qué libro, la llamada a la función puede necesitar también el nombre del libro.
Para hacer una referencia correcta a la fórmula, utiliza el asistente para fórmulas (el botón fx que aparece junto a la barra de fórmulas) y crea una fórmula de prueba
Busca la función dentro de la categoría definidas por el usuario
Fíjate cómo se ha escrito la fórmula en la celda.
por ejemplo, si la función está en el libro de macros personal, en la versión 2007 tendrá este aspecto:
=PERSONAL.XLSB!NumLetra(... )
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Activar macros
Tiene toda la pinta de que las macros del libro están deshabilitadas.
Comprueba el nivel de seguridad.
En la versión 2007, la extensión del archivo debe ser .xlsm para indicar que el libro contiene macros.
Aunque se trate de una función personalizada, Excel no distingue entre esto y una macro, todo lo que sea programado en vba lo considera con el nombre genérico de "macros" y se le aplican las condiciones de seguridad.
prueba con esto y me comentas si ha funcionado, o si por el contrario el problema es otro y continúa sin funcionar.
un saludo.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
HOLA A TODOS, POR FAVOR TENDRAN EL FILE DE EXCEL ME LO PODRAN PASAR O DE DOEN LO PUEDO BAJAR GRACIAS.
YO LO NECESITO DE LA SIGUINET MANERA:
1142.63 = UN MIL CIENTO CUARENTA Y DOS CON 63/100 DOLARES AMERICANOS
Ó
1142.63 = UN MIL CIENTO CUARENTA Y DOS CON 63/100 NUEVOS SOLES
SALUDOS
MIL GRACIAS
MICKY.
LIMA-PERU
Re: Convertir números a texto
el tema de los 63/100 ya estaba comentado en algún envío anterior;
se debe conseguir separando la parte entera, que es la que se convierte a texto, de la parte decimal a la que se le da el formato de fracción de 100
por ejemplo (suponiendo que el número está en la celda A5):
=CONCATENAR(PERSONAL.XLSB!NumLetra(ENTERO(A5);;;;;;;;VERDADERO);" con ";TEXTO((A5-ENTERO(A5))*100;"00");"/100 Nuevos Soles")
para conseguir que ponga "un mil", he incluído un nuevo parámetro en la función, lo que supone una nueva versión del archivo 20081202, para poder elegir si queremos que aparezca "un mil cuatrocientos" o "mil cuatrocientos".
Adjunto un archivo de ejemplo.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
HOOLA ME FUNCIONO DE MARAVILLA ESTA NUEVA, PERO MEOCURRIO ALGO EXTRAÑO, TE PLATICO .....FORMULE MIS FORMATO REQUERIDOS, Y TODO FUE UN EXITO CON EL MACROS, PERO AL PASAR A OTRA CPU EL ARCHIVO REALIZADO Y MODIFICAR LA CANTIDAD, NO LA MODIFICA, Y ME MARCA UN ERROR......GULP... GULP A QUE SE DEBE?.......HAY ALGO ADICIONAL QUE DEBA HACER? PARA QUE FUNCIONE EN OTRA COMPUTADORA?............GRACIAS
FECILIDADES POR LA PAGINA ES DE GRAN UTILIDAD...
Re: Convertir números a texto
¿dónde guardaste la función?
Si está en el libro de macros personal sólo funciona en el mismo equipo.
Si están en el libro que enviaste a la otra máquina, debería funcionar, pero las macros deben estar habilitadas para que funcione. Revisa el nivel de seguridad por si acaso.
Después de probar esto coméntanos si se resolvió el problema.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
hola. agradesco mucho que compartan su conocimiento. y espero no sea mucho pedir..... se podra pones 45/100 para 45 centavos?? hablo en el caso de pesos.
decimales como fracción
en este comentario puedes ver un ejemplo de cómo poner los decimales como 45/100
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: decimales como fracción
Gracias. Ya habia probado con esa respuesta solo que me marca error en la formula :-(, y la verdad en excel no me se vomer mucho. el error se queda despues de 'texto1' (marcado en negrita)...... que sera?? mil gracias
Re: decimales como fracción
comprueba los paréntesis.
prueba por un lado cada parte de la fórmula, primero pasar a letra la parte entera y en otra celda la parte decimal. Cuando funciones bien es el momento de unirlas con la función CONCATENAR
parte entera (suponiendo que el número está en la celda A1 y que la función está en el libro de macros personal):
=PERSONAL.XLSB!NumLetra(ENTERO(A1)
con la parte decimal del número:
=CONCATENAR(TEXTO((A1-ENTERO(A1))*100;"00"); " / 100")
con todo a la vez:
=CONCATENAR(PERSONAL.XLSB!NumLetra(ENTERO(A1));" (";TEXTO((A1-ENTERO(A1))*100;"00");"/100)")
Prueba con esto a ver si encontramos dónde está el problema.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Hola alguien me puede ayudar con algo muy sencillo. Necesito una función para convertir número a textos, estoy haciendo varias planillas de calificaciones. La nota va desde el número 1 a 5 y al lado debe ir escrito en texto. Ej. 1 uno
Me podrían enviar paso a paso porque no entiendo bien programación.
Desde ya muchas gracias.
Re: Convertir números a texto
Aquí hay un archivo con unos ejemplos
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Pacomegia.... un fenómeno!!! un consulta.
En los valores por defecto de la fórmula no se pueden colocar valores tales como: 2 decimales, "pesos"; "centavos; "con"; 1, 1 y 1 de manera que si solo seleccionamos la celda de origen el resto de las variables la tome directamente de los valores por defecto. Gracias por la respuesta.
Y yo pensé que sabía algo de Excel!!!
Re: Convertir números a texto
Sí, sólo tienes que modificar ligeramente el código, que para eso lo he dejado sin proteger.
Entra en el editor de Visual Basic ( [Alt] [F11] )
después de una serie de líneas comentadas están las instrucciones que establecen los valores por defecto.
'Valores por defecto:
If IsMissing(NumDecimales) Then NumDecimales = 0
If IsMissing(Unidad) Then Unidad = ""
If IsMissing(UdFracc) Then UdFracc = ""
If IsMissing(Conexión) Then Conexión = ""
If IsMissing(Cero) Then Cero = False
If UD_un_uno_a = 0 Then UD_un_uno_a = 1
If Frac_un_uno_a = 0 Then Frac_un_uno_a = 1
cambia estos valores por los que necesites, por ejemplo:
'Valores por defecto:
If IsMissing(NumDecimales) Then NumDecimales = 2
If IsMissing(Unidad) Then Unidad = "Pesos"
If IsMissing(UdFracc) Then UdFracc = "centavos"
If IsMissing(Conexión) Then Conexión = "con"
If IsMissing(Cero) Then Cero = 1
If UD_un_uno_a = 0 Then UD_un_uno_a = 1
If Frac_un_uno_a = 0 Then Frac_un_uno_a = 1
Te recomiendo que en una línea comentada indiques que has cambiado los valores por defecto, por si en el futuro vuelves a entrar en el código recuerdes los cambios hechos ahora.
un saludo.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Hola, Pacomegia. He cambiado los valores que dices pero al introducir la fórmula no toma por defecto esos valores, es decir, si solo uso la celda de referencia; la función introducida queda =PERSONAL.XLS!NumLetra(B3) al dar enter, en lugar de =PERSONAL.XLS!NumLetra(B3;2;"pesos";"centavos";"con";1;1;1) que es con la opción de rellenar manualmente todos los campos de la función.
pues llevas razón
pues llevas toda la razón del mundo.
Vamos a probar otra cosa:
vamos a establecer los valores por defecto a la vez que se definene los argumentos de la función:
así quedaría de esta manera:
Public Function NumLetra(Número As Double, Optional NumDecimales As Integer = 2, _
Optional Unidad As String = "pesos", Optional UdFracc As String = "centavos", _
Optional Conexión As String = "con", Optional Cero As Boolean = False, _
Optional UD_un_uno_a As Integer = 1, Optional Frac_un_uno_a As Integer = 1)
Parece que para variables tipo integer Excel sí pasa un argumento, y éste es cero, con lo que la función IsMissing no detecta que falta el argumento. Con las cadenas de texto tampoco es que falte el argumento, sino que se trataría de una cadena en blanco "".
Gracias por detectar este problema con los valores por defecto. Lo corregiré en el módulo y lo probaré en diferentes versiones, luego subiré una nueva versión a la web.
De momento adjunto un archivo con la función que "funciona" bien para pesos y centavos.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
hola, estaba leyendo atentamente sus comentarios, pero les tengo una pregunta - desafío xd
miren el archivo adjunto,
como puede quedar correctamente escrito todo sin que diga las palabras como cabernicola xd ?
ojala puedan ayudarme, me he quebrado la cabeza en hacer lo que falta hacer
saludos
¿por qué no utilizas la función?
No inventes la pólvora.
¿por qué no utilizas la función NumLetra que puedes descargar en esta página?
a mí me ha ahorrado muchísimo tiempo y me ha evitado errores.
un saludo.
mi cabeza es un mar de dudas
Re: ¿por qué no utilizas la función?
gracias.
sé que es mas facil xq copio y pego, pero me encomendaron hacerla de esa forma, me entiendes ?
saludos
Puedes corregir esto porfa
Re: Puedes corregir esto porfa
para este caso puse en la función numletra un par de argumentos (los dos últimos argumentos de la función) que controlan en género tanto de la parte entera como de la parte decimal, estos argumentos son;
UD_un_uno_a (para la parte entera) y Fracc_un_uno_a (para la parte fraccionaria)
Si este argumento se omite, o es igual a 1, devuelve "un"
Si es igual a 2, devuelve "uno"
Si es igual a 3, devuelve "una"
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
FANTÁSTICO!!!
Va perfecto! Oye, muchísimas gracias por todo. Si tengo dudas sobre alguna otra cosa ya se donde acudir.
Muchas gracias por todo, eres un SOL !!!
Pleiades.
Re: Convertir números a texto
Hola!
Que tal el fín de semana?
Bueno, todo lo que me has explicado ha salido bien, ahora solo falta que las letras me salgan en mayúsculas y todo será "perfecto". He intentado combinar la fórmula de pasar de "num. a letras" con la fórmula de "pasar a mayúsculas" pero nada, no me dejaba.
Que puedo hacer paco Megia?
Muchísimas gracias.
Pleiades.
MAYUSC
En teoría si pones todo el conjunto que pasa de número a letra como argumento de la función MAYUSC sí debería pasarlo todo a mayúsculas.
algo parecido a esto, bueno, con los argumentos que necesites
=MAYUSC(PERSONAL.XLSB!NumLetra(celda_con_tu_número;2;"euros";"centimos";"con"))
Prueba con esto y si no funciona coméntame qué error te aparece.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: MAYUSC
Hola disculapa la molestia esta funcion me seria de mucha ayuda pero no encuentro como aplicarla, es decir no se que cambiar en la macro para que tome los valores de donde lo necesito ni tampoco se como ejecutarla, el problema es que tampoco tengo mucho conocimiento acerca de las macros, si no es demasiada molestia me podrias enviar un archivo de que tendria que cambiar y como hacer para ejecutar la macro.
Desde ya muchisimas gracias
Re: MAYUSC
Aquí puedes descargar un archivo con unos ejemplos.
échale un vistazo y luego comentamos las dudas.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Vale!!!
Ya lo he hecho, y sabes qué?
FUNCIONA!!! Ahora solo falta que me lo pase a euros.
He marcado 123,56 y me pone ciento veinticuatro.
Yo quiero: ciento veintitres euros con cincuenta y seis céntimos.
Bueno, ya me estoy acercando, espero conseguirlo antes de que me salgan más canas! jejeje
A ver si ésto tiene solución Paco Megia!
Muchas gracias, eres un sol.
Pleiades.
argumentos
si no le pones argumentos a la función por defecto redondea sin decimales y no tiene unidades.
para que sea como dices, prueba lo siguiente:
NumLetra(celda_con_tu_número;2;"euros";"céntimos";"con")
el primer argumento es el número a convertir
el segundo argumento el número de decimales
y luego vienen las unidades para la prte entera y decimal y la palabra para unirlas
gracias por lo de sol, poca cosa al lado de las Péyades
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
"Toc, toc" ... se puede?
Hola que tal!
Vale me estoy dando cuenta que soy bastante novatilla con el excel. He intentado buscar la manera de instalar las fórmulas que me pasaste en documentos que ya tenía hechos, lo he intentado en documentos nuevos, pero no hay manera, me sale un mensaje que dice " la función no tiene argumento".
Que hago para poder instalarlo en excel?
Muchas gracias por ayudarme.
Pleiades.
una pregunta
Depende del uso que vayan a tener los archivos en los que utilices esta función.
¿Son archivos que sólo utilizas tú en tu ordenador, o los vas a enviar a otras personas o los compartes en la red de una oficina?
En el primer caso, si sólo lo vas a utilizar tú, yo guardaría la función en el libro de macros personal, mira en este enlace más sobre cómo crear tu libro de macros personal
En el segundo caso, si varias personas van a utilizar el archivo en ordenadores diferentes, tal vez lo mejor sea que guardes la función en el propio archivo, para que esté disponible allá donde vaya el libro sin tener que obligar a terceras personas a cambiar sus configuración, ni a tener que añadir cosas a su libro de macros personal.
En cualquier caso, aquí te explico qué hacer con el archivo .bas que contiene la función
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a letras (Libro de macros personal)
Hola Paco Megia!
Mira, cuando tú lo explicas parece tan sumamente fácil que ya me había hecho ilusiones de que ya lo tenía, pero no sé lo que debo hacer mal porque no me sale la fórmula. He seguido los pasos para hacerlo en libro de macros personal:
Herramientas>Macros>grabar macro
en la lista desplegable: Libro de macros personal
Selecciono la opción Libro de macros personal.
Escribo una letra en la celda A1, he puesto la letra A Detengo la grabación de la macro pulsando el botón "detener gabación", que tiene una imagen de un cuadrado, como el stop de un reproductor de música.
Y ... ya está. Para ver la macro que he grabado, accedo al editor de Visual Basic, Alt F11 y en el explorador de proyectos aparece Personal.xls que es el libro de macros personal. Abro módulos. Ahí sale:
Sub Macro1()
'
' Macro1 Macro
' Macro grabada el 12/06/2008 por (mi nombre de usuario)
'
'
Range("A1").Select
ActiveCell.FormulaR1C1 = "A"
Range("A2").Select
End Sub
Pues con todo ésto, la formula no esta para poder pasar los números a letras.
Ya te dije que era un poco novata pero creo que no tiene que ser tan dificil, hay algo que me falta, seguro, verdad?
Me ayudarás por favor?
Muchas gracias por todo.
Pleiades.
Ahora importa el archivo bas
Ya tienes creado el libro de macros personal. Ahora sólo necesitas poner en él la función que convierte los números a letras.
para ello tendrás que importar al libro de macros personal el archivo .bas que contiene la función.
En el editor de visual Basic, sobre el libro personal.xls, selecciona importar archivo y selecciona el archivo numeroaletra.bas que has descargado de esta página
suerte.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Hola!
Que tal?
Soy un poco nueva en ésto de introducir datos en el macro. He intentado acceder al archivo.bas pero no me deja. Metí en el VBàsic un código de esos de los que comentais en los foros pero me pasa los números a pesos (en letras, claro) y otro me lo pasaba pero en pesetas.
Así que me gustaría saber si alguien me podría pasar la fórmula buena para que me salga en euros, ya me entendeis, en masculino y que lea los decimales (los céntimos).
Os lo agradecería porque con tantos códigos y tantas fórmulas me estoy volviendo loca ;- |)
Muchísimas gracias.
Pleiades.
Re: Convertir números a texto
formula para cambiar cantidad de numero a letra
unos ejemplos
Hola
Pienso que en vez de explicarlo, tal vez sea más práctico que te adjunte un archivo con algunos ejemplos.
He puesto diferentes casos, con masculinos y femeninos. Si necesitas alguna aclaración no dudes en preguntar.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Buenisimo amigo muchas gracias
Buenisimo amigo muchas gracias
Re: Convertir números a texto
Cambio los parametros de decimales a 2 y no me los convierte a texto... solo convierte la parte entera.... que tengo que modificar mas?
Re: Convertir números a texto
Tampoco me aparece la unidad monetaria ni en concatenador de centimos...
Re: Convertir números a texto
¿me podrías decir unos ejemplos de algunos números para los que no funciona? para tratar de detectar el fallo.
¿no te funciona nunca o es sólo en algunos casos?
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Soy coriano nuevamente y he tenido el siguiente problema utilizo la fórmula concatenar que me indicaste pero con algunos números me sale la palabra "un" , por ejplo. 4.55 cuatro un 55/100; 8.9 ocho un 90/100. No necesito ninguna palabra entre el entero y los decimales. Los números que manejo van desde el 1 al 10 como máximo. Es para calificaciones de notas. Desde ya gracias.
Re: Convertir números a texto
Se trataba de un fallo con el redondeo, que cuando no se indicaban decimales no sumaba bien. En cualquier caso no te interesa redondear, sino utilizar la parte entera del número.
Para evitar este redondeo de la función, genera el texto sólo de la parte entera de la nota, mediante la función ENTERO
algo como esto.
=CONCATENAR(PERSONAL.XLSB!NumLetra(ENTERO(A1));" (";TEXTO((A1-ENTERO(A1))*100;"00");"/100)")
De todas formas, he puesto otra nueva versión corregida 20080401
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Pacomegia eres un genio. Con tu ayuda resolví algo que no pensé que siendo un novato podía hacerlo. Muy agradecido quedó "IMPECABLE".
Re: Convertir números a texto
Coriano Soy un novato y no sé que hacer con el adjunto además me pregunto si los decimales pueden ir entre paréntesis Ejplo. 8.23 Ocho (23/100) los números que manejo van del 1 al 10 como máximo
Re: Convertir números a texto
si la función está en tu libro de macros personal, puede tener un aspecto parecido a este:
=CONCATENAR(PERSONAL.XLSB!NumLetra(A1);" (";TEXTO((A1-ENTERO(A1))*100;"00");"/100)")
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Una macro con mucha utilidad.
He probado la versión 20071004 y funciona bien, salvo para números como :
1.000.000.000 = UN MIL EUROS
2.000.000.000 = DOS MIL EUROS
1.111.111.111 = UN MIL CIENTO ONCE MILLONES CIENTO ONCE MIL CIENTO ONCE EUROS. En este caso sobraría el UN del principio.
Espero que te ayude a mejorarla.
Saludos
nueva versión
He actualizado la versión de la función para corregir estos problemas que me comentas.
la versión actual es la de la fecha de hoy 20080316
Muchas gracias por tus comentarios
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
me ahorró mucho tiempo
mi cabeza es un mar de dudas
Re: Convertir números a texto
problema con valores por defecto
No te mando a paseo, porque con los fallos que detectas la función queda cada vez mejor. Gracias.
Parece que había un problema con el valor por defecto del argumento UD_un_uno_a
He creado una nueva versión 20071004 que soluciona este problema.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
Re: Convertir números a texto
Re: Convertir números a texto
El Utilizar la preposicion UN en la oracion de "un mil docientos cincuenta" es lo correcto, otro ejemplo es "Un millon", no se dice "millon" solamente.
Re: Convertir números a texto
"un millón" es correcto. "Un mil", no.
Re: Convertir números a texto
Gracias por tu trabajo, me ha facilitado mucho las cosas.
Un saludo.
Re: Convertir números a texto
12.459.698 1048,896 15.970,452 101.596.789,45
789.985.620 75.986.100 200.000.000.000 147.125.8
0.458 1.489.369 47.896.300.000 25.000.500.000
como se escriben en letra estas cifras
Re: Convertir números a texto
¿qué número es éste: 147.125.8?
Para facilitar que Excel entienda los números, elimina los separadores de miles y deja sólo el separador decimal.
la función NumLetra convertirá en texto tus números sin problemas
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF
nueva versión
Acabo de corregir éste problema. Versión 20071003 (año mes día)
He añadido la fecha al final del nombre del archivo para identificar la versión. He hecho bastantes pruebas, pero si detectas algún otro problema no dudes en comentarlo aquí para resolverlo.
------
Ya sé Excel, pero necesito más ahora en pdf
Ya sé Excel, pero necesito más. Ahora en PDF