miércoles, noviembre 28, 2007

Ordenar texto en Excel con fórmulas.

Excel permite ordenar datos, ya sean texto o número, con facilidad y flexibilidad usando el menú Datos-Ordenar.
Pero hay situaciones en las cuales queremos realizar la tarea con fórmulas, como me consultaba uno de mis lectores hace unos días atrás.
La solución consiste en usar la función CONTAR.SI con un pequeño truco. Empecemos por plantear la situación. Supongamos esta lista de nombres que queremos ordenar alfabéticamente con fórmulas



El primer paso consiste en crear una columna auxiliar con esta fórmula:

=CONTAR.SI($A$2:$A$11;"<="&A2)

que copiamos a todo el rango de la columna B

Es importante notar que el segundo argumento de la función está formado por el texto "<=" concatenado con el operador "&" a la celda correspondiente de la columna A.



Como ven la función CONTAR.SI hace aquí las veces de la función JERARQUIA, que sólo funciona con números, no con texto.

El segundo paso consiste en crear una tabla con dos columnas. Una columna auxiliar donde ponemos los números de posición en forma ordenada y una segunda columna donde aparecerán los nombres. En esta columna ponemos esta fórmula

=INDICE($A$2:$A$11;COINCIDIR(D2;$B$2:$B$11;0))

Usamos INDICE y COINCIDIR ya que los números auxiliares en la tabla original están a la derecha de los nombres. Si estuvieran a la izquierda podríamos usar la función BUSCARV.



Como ven, tenemos nuestra lista ordenada en la tabla D1:E11.

Esta técnica tiene un serio inconveniente. Si un nombre aparece repetido, obtendremos un resultado #N/A



Para superar este problema creamos una segunda columna auxiliar. En esta columna ponemos esta fórmula relacionada a la primera columna auxiliar

=JERARQUIA(B2;$B$2:$B$11;2)+CONTAR.SI($B$2:B2;B2)-1

Ya hemos mostrado esta técnica para lograr "desempates" usando la función JERARQUIA.



Como ven, el primer Daniel recibe el número de orden 5 y el segundo, 6.

Todo lo que nos queda por hacer es aplicar la misma fórmula INDICE y COINCIDIR que usamos más arriba







Technorati Tags:

jueves, noviembre 22, 2007

Área de impresión dinámica en Excel, con macros.

La consulta que dio origen a la nota anterior sobre cómo determinar un área de impresión en forma dinámica, pedía hacerlo con macros.

Así que para saldar mi deuda con el lector mostramos aqu[i una de las formas de hacerlo con Vba.

Volviendo a nuestro ejemplo anterior,




podemos usar las celdas G2 y G3 con esta macro:

ActiveSheet.PageSetup.PrintArea = [G2] & ":" & [G3]

Cambiando los valores de las celdas G2 y G3, al correr la macro cambiará la selección del área de impresión.

Technorati Tags:

martes, noviembre 20, 2007

Área de impresión dinámica en Excel, sin macros.

En mi última nota sobre nombres en Excel vimos que Excel crea nombres "reservados" para ciertas funciones, como determinar el área de impresión.
En respuesta a una consulta, vamos a mostrar cómo crear un área de impresión dinámica en una hoja, sin usar macros.

Como vimos, al determinar el área de impresión (Archivo-Configurar Página-Hoja), Excel crea el nombre local Área_de_impresión




Este nombre contiene un rango estático, pero podemos convertirlo en dinámico con esta relativamente simple técnica como mostramos en area de impresion con nombreseste ejemplo:

1 – definimos dos celdas que contendrán las direcciones de los vértices del rango que queremos imprimir. Por ejemplo en nuestro ejemplo el vértice superior izquierdo será la celda A1 y el vértice inferior derecho E15. En la celda G2 ponemos el valor A1 y en la celda G3 el valor E15



2 – Abrimos el diálogo de definición de nombres



y cambiamos la definición del nombre Área_de_impresión por la fórmula =INDIRECTO(CONCATENAR($G$2;":";$G$3))



Ahora podemos probar cambiar los valores en las celda G2 y G3 y veremos como el área de impresión va cambiando (veremos una línea partida delimitando el área seleccionada).




Technorati Tags: