Ordenar alfabeticamente con fórmula.

03/04/2005 - 13:44 por javier | Informe spam
Saludos a todos:

En una columna tenía una lista de valores tipo texto tal
como éstos:

b
a
re
c
pez
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

Por medio de una fórmula, quizás matricial, quería que me
quedase ordenada alfabeticamente en otra columna.
Los valores de error #¡NUM!, no deben aparecer o deben
quedar al final. Es decir debe quedar así:

a
b
c
pez
re
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

o así:

a
b
c
pez
re

Si encontraís una solución os lo agradezco. Saludos.
Gracias.
javier.

Preguntas similare

Leer las respuestas

#1 Fernando Arroyo
03/04/2005 - 17:03 | Informe spam
Usando dos columnas auxiliares sí parece posible hacerlo.

Suponiendo que los datos empezaran en A1 y que no hubiera celdas vacías entre medias, en la fila 1 de la primera columna auxiliar iría la fórmula:

=SI(ESERROR(A1);A1;CONTAR.SI($A:$A;"<"&A1)+CONTAR.SI($A$1:A1;A1))

y en la fila 1 de la segunda columna auxiliar:

=INDICE(A:A;COINCIDIR(FILA();B:B;))

(suponiendo que la primera columna auxiliar fuera la B)

Luego tendrías que copiar ambas fórmulas y pegarlas hasta donde hubiera datos.

Yo he hecho unas cuantas pruebas y parece que sí funciona (no sólo con el error #¡NUM! sino también con #¡DIV!, si bien en ambos casos el error que aparecerá en la lista ordenada será #N/A), pero te aconsejo que tú también pruebes a fondo esta posible solución antes de confiar ciegamente en ella.

Un saludo.


Fernando Arroyo
MS MVP - Excel


PD: Complicando más la segunda fórmula sería posible incluso evitar que apareciera el error #N/A:
=SI(ESERROR(INDICE(A:A;COINCIDIR(FILA();B:B;)));"";INDICE(A:A;COINCIDIR(FILA();B:B;)))


"javier" escribió en el mensaje news:15a201c53842$7307b890$
Saludos a todos:

En una columna tenía una lista de valores tipo texto tal
como éstos:

b
a
re
c
pez
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

Por medio de una fórmula, quizás matricial, quería que me
quedase ordenada alfabeticamente en otra columna.
Los valores de error #¡NUM!, no deben aparecer o deben
quedar al final. Es decir debe quedar así:

a
b
c
pez
re
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

o así:

a
b
c
pez
re

Si encontraís una solución os lo agradezco. Saludos.
Gracias.
javier.
Respuesta Responder a este mensaje
#2 KL
03/04/2005 - 17:36 | Informe spam
Hola Javier,

Prueba la siguiente formula MATRICIAL (Ctrl+Shift+Enter):

=SI(ESERROR(INDICE(Rango;COINCIDIR(FILA()-FILA(PrimeraCelda)+1;CONTAR.SI(Rango;"<="&Rango);0)));"";INDICE(Rango;COINCIDIR(FILA()-FILA(PrimeraCelda)+1;CONTAR.SI(Rango;"<="&Rango);0)))

donde "Rango" es referencia absoluta a tu lista (p.ej.: $A$2:$A$100) y
"PrimeraCelda" es referencia absoluta a la primera celda de tu lista (p.ej.:
$A$2)

Esta formula permite que el rango se encuentre en cualquier parte de la hoja
e ignora celdas vacias, valores numericos y de error.

Me ha costado un poco :-)

Saludos,
KL

"javier" wrote in message
news:15a201c53842$7307b890$
Saludos a todos:

En una columna tenía una lista de valores tipo texto tal
como éstos:

b
a
re
c
pez
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

Por medio de una fórmula, quizás matricial, quería que me
quedase ordenada alfabeticamente en otra columna.
Los valores de error #¡NUM!, no deben aparecer o deben
quedar al final. Es decir debe quedar así:

a
b
c
pez
re
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

o así:

a
b
c
pez
re

Si encontraís una solución os lo agradezco. Saludos.
Gracias.
javier.
Respuesta Responder a este mensaje
#3 Fernando Arroyo
03/04/2005 - 18:05 | Informe spam
Al revisar la primera fórmula, veo que se puede simplificar:

=SI(ESERROR(A1);A1;CONTAR.SI($A:$A;"<"&A1)+1)

También he visto que es posible hacerlo con una fórmula matricial, pero habria que introducirla como tal en toda la columna (es decir, desde la fila 1 hasta la fila donde terminaran los datos en la columna A). La fórmula sería:

=INDICE(A:A;COINCIDIR(FILA();SI(ESERROR(INDIRECTO("A1:A"&CONTARA(A:A)));INDIRECTO("A1:A"&CONTARA(A:A));CONTAR.SI($A:$A;"<"&INDIRECTO("A1:A"&CONTARA(A:A)))+1);))

y para que no aparecieran los errores al final, sino celdas vacías:

=SI(ESERROR(INDICE(A:A;COINCIDIR(FILA();SI(ESERROR(INDIRECTO("A1:A"&CONTARA(A:A)));INDIRECTO("A1:A"&CONTARA(A:A));CONTAR.SI($A:$A;"<"&INDIRECTO("A1:A"&CONTARA(A:A)))+1);)));"";INDICE(A:A;COINCIDIR(FILA();SI(ESERROR(INDIRECTO("A1:A"&CONTARA(A:A)));INDIRECTO("A1:A"&CONTARA(A:A));CONTAR.SI($A:$A;"<"&INDIRECTO("A1:A"&CONTARA(A:A)))+1);)))

Las fórmulas matriciales "se toman su tiempo" (especialmente la segunda), así que después de todo quizás sea mejor usar las no matriciales auque requieran de una segunda columna auxiliar.

Si hubiera alguna duplicidad en los datos, el comportamiento de las fórmulas podría no ser el deseado: aparecerán celdas en blanco entre medias o errores, dependiendo de si se está usando o no la versión de las fórmulas que convierte los errores en celdas en blanco.
Un saludo.


Fernando Arroyo
MS MVP - Excel
Respuesta Responder a este mensaje
#4 javier
03/04/2005 - 22:45 | Informe spam
Increible. Han sido unas fórmulas excelentes. No me
extraña que haya costado. Yo le daba vueltas pero no me
salía nada.
Muchísimas gracias. Un saludo.


Hola Javier,

Prueba la siguiente formula MATRICIAL (Ctrl+Shift+Enter):

=SI(ESERROR(INDICE(Rango;COINCIDIR(FILA()-FILA


(PrimeraCelda)+1;CONTAR.SI(Rango;"<="&Rango);0)));"";INDICE
(Rango;COINCIDIR(FILA()-FILA(PrimeraCelda)+1;CONTAR.SI
(Rango;"<="&Rango);0)))

donde "Rango" es referencia absoluta a tu lista (p.ej.:


$A$2:$A$100) y
"PrimeraCelda" es referencia absoluta a la primera celda


de tu lista (p.ej.:
$A$2)

Esta formula permite que el rango se encuentre en


cualquier parte de la hoja
e ignora celdas vacias, valores numericos y de error.

Me ha costado un poco :-)

Saludos,
KL

"javier" wrote in message
news:15a201c53842$7307b890$
Saludos a todos:

En una columna tenía una lista de valores tipo texto tal
como éstos:

b
a
re
c
pez
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

Por medio de una fórmula, quizás matricial, quería que me
quedase ordenada alfabeticamente en otra columna.
Los valores de error #¡NUM!, no deben aparecer o deben
quedar al final. Es decir debe quedar así:

a
b
c
pez
re
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

o así:

a
b
c
pez
re

Si encontraís una solución os lo agradezco. Saludos.
Gracias.
javier.



.

Respuesta Responder a este mensaje
#5 Angelo Vernaza
04/04/2005 - 20:00 | Informe spam
KL como estas?, estoy tratando de usar tu formula, no me sale error ni nada,
pero me hacen faltan algunos datos, no me sale toda la lista. y no se que
será...!


"KL" escribió en el mensaje
news:
Hola Javier,

Prueba la siguiente formula MATRICIAL (Ctrl+Shift+Enter):




=SI(ESERROR(INDICE(Rango;COINCIDIR(FILA()-FILA(PrimeraCelda)+1;CONTAR.SI(Ran
go;"<="&Rango);0)));"";INDICE(Rango;COINCIDIR(FILA()-FILA(PrimeraCelda)+1;CO
NTAR.SI(Rango;"<="&Rango);0)))

donde "Rango" es referencia absoluta a tu lista (p.ej.: $A$2:$A$100) y
"PrimeraCelda" es referencia absoluta a la primera celda de tu lista


(p.ej.:
$A$2)

Esta formula permite que el rango se encuentre en cualquier parte de la


hoja
e ignora celdas vacias, valores numericos y de error.

Me ha costado un poco :-)

Saludos,
KL

"javier" wrote in message
news:15a201c53842$7307b890$
Saludos a todos:

En una columna tenía una lista de valores tipo texto tal
como éstos:

b
a
re
c
pez
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

Por medio de una fórmula, quizás matricial, quería que me
quedase ordenada alfabeticamente en otra columna.
Los valores de error #¡NUM!, no deben aparecer o deben
quedar al final. Es decir debe quedar así:

a
b
c
pez
re
#¡NUM!
#¡NUM!
#¡NUM!
#¡NUM!

o así:

a
b
c
pez
re

Si encontraís una solución os lo agradezco. Saludos.
Gracias.
javier.



Respuesta Responder a este mensaje
Ads by Google
Help Hacer una preguntaSiguiente Respuesta Tengo una respuesta
Search Busqueda sugerida