Raúl:
Sólo un número, ¿qué tipo de número?
Algún rango?
No se si te he entendido. Quieres convertir numeros a letras pero en ingles? Es esto lo que quieres? Si he acertado, echale un
vistazo a esto:
http://support.microsoft.com/default.aspx?scid=KB;EN-US;Q213360
http://www.ozgrid.com/VBA/ValueToWords.htm
Tambien puedes instalar el complemento de Laurent Longre morefunc.xla y usar la funcion NBTEXT() que maneja varios idiomas:
http://xcell05.free.fr/english/ (Ojo - la funcion solo funcionara en un PC que tenga instalado el complemento - es el problema de
todos los complementos)
Saludos,
KL
"Raul" <Ra...@discussions.microsoft.com> wrote in message news:2D68FA0A-3EDD-4518...@microsoft.com...
"Hernandez, Roberto" escribió:
> ... en una celda hago una multiplicacion y el resultado lo necesito en otra celda pero en letras en ingles
si de la multiplicacion resulta un numero NO -muy- grande...
es posible que pudieras 'ahorrarte' la necesidad de funciones personalizadas ;)
comentas ?
saludos,
hector.
"Héctor Miguel" escribió:
"KL" escribió:
> ... el numero no es muy grande, considero que lo que necesito es menor de 1000 y ademas son numeros enteros.
el siguiente procedimiento requiere definir 4 nombres con las matrices de los numeros en ingles...
y una formula 'kilometrica' [+/- 350 caracteres] :-( pero [probablemente] lo encontraras 'rapida' y 'versatil' :))
para 'traducir' numeros enteros en ingles de 0 a 999:
solo toma en cuenta que mi sistema usa como separador de argumentos a la coma ',' NO al punto y coma ';' :D
y que 'mi' separador de filas en matrices constantes ES la barra inversa '\' [tu configuracion regional pudiera usar otro -?-
si cualquier duda [o informacion adicional]... comentas ?
saludos,
hector.
=====
1) define los siguientes 4 nombres [menu] insertar / nombre / definir...
nombre: se rfiere a:
_1 ={""\"one"\"two"\"three"\"four"\"five"\"six"\"seven"\"eight"\"nine"}
_2 ={"ten"\"eleven"\"twelve"}
_3 ={""\""\""\"thir"\"four"\"fif"\"six"\"seven"\"eigh"\"nine"}&"teen"
_4 ={"twen"\"thir"\"four"\"fif"\"six"\"seven"\"eigh"\"nine"}&"ty "
2) suponiendo que el resultato de la multiplicacion lo obtienes en la celda 'A1'... usa la siguiente -kilometrica' formula:
OJO: que debe ser en una sola linea...
=si(a1>0,indice(_1,1+izquierda(texto(derecha(entero(a1),3),"000"),1))&si(--texto(derecha(entero(a1),3),"000")>99," hundred ","")
&si(--derecha(a1,2)>19,indice(_4,extrae(texto(derecha(entero(a1),3),"000"),2,1)-1)
&indice(_1,1+derecha(a1,1)),si(--derecha(a1,2)>9,indice(si(--derecha(a1,2)>12,_3,_2),1+derecha(a1,1)),indice(_1,1+derecha(a1,1)))),"zero")
si estas seguro de que nunca excederas de 3 digitos en el resultado, puedes 'ahorrar' +/- 35 caracteres modificando en la formula:
de -> &si(--texto(derecha(entero(a1),3),"000")>99," hundred ","")
a -> &si(a1>99," hundred ","")
3) [personamente] 'prefiero' manejar todos los textos en minusculas y si tu requieres un 'formato de salida' diferente... prueba p.e.
=nompropio(<aqui_la_formula>) o... =mayusc(<aqui_la_formula>)
nota: si requires 'segmentos adicionales' [mas de 3 digitos / 0-999] sera necesario aumentar 'pasos intermedios'
y seguramente agregar nombres-formula-funciones que [definitivamente] volveran 'de riesgo' la conversion si se copia a otros libros :-(( <= OJO