............ Foro Excel
Si no lo has hecho aún: REGISTRATE!!!

ORDINAL EN LETRAS A PARTIR DEL NUMERO

Ver el tema anterior Ver el tema siguiente Ir abajo

ORDINAL EN LETRAS A PARTIR DEL NUMERO

Mensaje por GalileoGali el Sáb Mayo 03, 2008 1:23 am

En este caso no se trata de convertir Numero a Letras, sino dar el Ordinal en letras, en lugar de ua macro, se me opcurrio una formula que remite a una tablita. Limitaciones solo lo arme desde 1 a 999, y varias de mis "palabrejas" pueden resultar academicamente cuestionables

DESCARGAR ARCHIVO

Hoja1

 ABCDEF
21PrimeroDécimocentésimo  
32segundovigésimobicentésimo  
43tercerotrigésimotricentésimo  
54cuartocuadragésimocuadricentésimo  
65quintoquincuagésimoquintucentésimo  
76sextosexagésimosexticentesimo  
87séptimoseptuagésimoseptuacentésimo  
98octavooctogésimooctocentésimo  
109novenononagésimononacentesimo  
110     
12      
13  236bicentésimo trigésimo sexto  
14  108centésimo  octavo  
15  2  segundo  
Spreadsheet Formulas
CellFormula
D13=SI(C13>99;BUSCARV(ENTERO(C13/100);$A$2:$D$11;4;);"")&" "&SI(C13>9;BUSCARV(ENTERO(RESIDUO(C13;100)/10);$A$2:$D$11;3;);"")&" "&SI(C13>1;BUSCARV(--DERECHA(C13;1);$A$2:$D$11;2;);SI(C13>0;"Primer";""))
D14=SI(C14>99;BUSCARV(ENTERO(C14/100);$A$2:$D$11;4;);"")&" "&SI(C14>9;BUSCARV(ENTERO(RESIDUO(C14;100)/10);$A$2:$D$11;3;);"")&" "&SI(C14>1;BUSCARV(--DERECHA(C14;1);$A$2:$D$11;2;);SI(C14>0;"Primer";""))
D15=SI(C15>99;BUSCARV(ENTERO(C15/100);$A$2:$D$11;4;);"")&" "&SI(C15>9;BUSCARV(ENTERO(RESIDUO(C15;100)/10);$A$2:$D$11;3;);"")&" "&SI(C15>1;BUSCARV(--DERECHA(C15;1);$A$2:$D$11;2;);SI(C15>0;"Primer";""))


Excel tables to the web >> [Tienes que estar registrado y conectado para ver este vínculo]

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Re: ORDINAL EN LETRAS A PARTIR DEL NUMERO

Mensaje por GalileoGali el Dom Mayo 04, 2008 10:46 am

Traigo ahora una UDF publicada por Luis Fernando, de Pereira (Colombia)
Recordemos que debe Ir dentro de un Modulo Standard, puede ser tanto en el Libro donde queramos utilizarla o el Libro Personal.xls, o en algun ADDIN.

Código:
Function Orden(ByVal inValue As Long) As String
Dim Unidades, Decenas, Cientos
Dim n As Long
Dim unit As Long, ten As Long, hund As Long

Unidades = Array("", "Primero", "Segundo", "Tercero", "Cuarto", _
"Quinto", "Sexto", "Séptimo", "Octavo", "Noveno", "Décimo")
Decenas = Array("", "Décimo ", "Vigésimo ", "Trigésimo ", "Cuadragésimo ", _
"Quincuagésimo ", "Sexagésimo ", "Septuagésimo ", "Octogésimo ", "Nonagésimo ")
Cientos = Array("", "Centésimo ", "Ducentésimo ", "Tricentésimo ", "Cuadrigentésimo ", _
"Quingentésimo ", "Sexcentésimo ", "Septigentésimo ", "Octingentésimo ", "Noningentesimo ")
Orden = ""
n = inValue

hund = n \ 100
Orden = Orden & Cientos(hund)

n = n - hund * 100


ten = n \ 10

unit = n - ten * 10
Orden = Orden & Decenas(ten) & Unidades(unit)

Orden = (Trim(Orden))

End Function

Aprovecho para comentar que he aprendido en esta ocasión del uso de "\" backslash o Barra diagonal invertida como equivalente a Int(Numero/divisor) = numero \ divisor

_________________
GalileoGali
M.A.P. 2010-2013
Microsoft Active Professional

GalileoGali
Admin

Masculino Cantidad de envíos : 1962
Edad : 61
Ciudad - Pais : QUIROGA, Argentina
Version de Excel : 2000-2003-2007-2010
Fecha de inscripción : 24/01/2008

http://excelgali.mejorforo.net

Volver arriba Ir abajo

Ver el tema anterior Ver el tema siguiente Volver arriba


 
Permisos de este foro:
No puedes responder a temas en este foro.