jueves, abril 22, 2010

Autofiltro en Excel 2007

La funcionalidad Autofiltro ha sido mejorada en forma significativa en Excel 2007 en comparación al Excel Clásico (97-2003). Veamos las diferencias cuando queremos filtrar una lista usando fechas como criterio.

Supongamos esta lista de fechas de nacimientos



Como ven, hemos aplicado Autofiltro. Queremos filtrar la lista para que muestre sólo los nombres de las personas nacidas entre el 01/01/1962 y el 31/12/1963 (es decir, entre los años 1962 y 1963).

Si usamos Excel 2007 la tarea es bien sencilla. El diálogo del Autofiltro nos muestra las fechas disponibles ya agrupadas por años



Haciendo clic en el año podemos ver y elegir algún mes en particular





A su vez, haciendo un clic en el mes podremos ver los días



Esto nos permite realizar con facilidad nuestra tarea de filtrar dejando visibles sólo los nacidos en los años 1962 y 1963



y ya está!

En Excel 2003 la tarea es menos trivial. La lista desplegable no nos ofrece ningún nivel de agrupación de los datos



En Excel 2003 usamos criterios personalizados



Otro aspecto interesante en Excel 2007 es que al reconocer el tipo de datos de la columna de filtrado, el menú nos ofrece las alternativas relevantes



En cambio si queremos filtrar según la columna de Nombres, veremos en el menú "Filtro de Texto" en lugar de "Filtro de Fechas"



Otra posibilidad que se ha agregado en Excel 2007 es la posibilidad de filtrar (y también ordenar) por color



Personalmente no creo que sea una buena idea utilizar colores como datos (o "meta-datos"). Colores similares pueden parecer idénticos a la vista sin serlo de hecho.

sábado, abril 03, 2010

Posición del objeto Calendario en una hoja de Excel

De vuelta mis vacaciones estoy tratando de ponerme al día con las consultas de mis lectores. Lamentablemente no podré responder a todas, pero algunas serán transformadas en notas en el blog. Como la consulta de un lector sobre cómo posicionar el objeto Calendario en una hoja de Excel.

La consulta viene a colación de la nota sobre validación de fechas en Excel que publiqué hace ya casi tres años. Allí mostré como hacer que el objeto Calendario aparezca cuando activamos una celda de un determinado rango.

La consulta de mi lector consiste en cómo lograr que el calendario aparezca siempre a la derecha de la celda activa y no en el centro del área de la hoja que aparece en pantalla. Para lograr esto tendremos que programar la propiedad Position del Userform que contiene el calendario.

Empezamos por descargar el ejemplo de la nota mencionada. Luego activamos el editor de Vba (Alt+F11) y el Userform1. En la ventanilla de las propiedades activamos la pestaña Categorized y vamos al grupo Position



Vemos que tenemos, además del tamaño (Height y Width) la posibilidad de establecer la posición inicial (StartUpPosition)



En nuestro caso vamos a usar la opción 0-Manual. Por supuesto, esto no es suficiente y tendremos que establecer la posición relativa a la celda activa programáticamente.

Activamos el Modulo1 que contiene la rutina "abrir_calendario" y ponemos este código



Sub abrir_calendario()
    With UserForm1
        .Left = ActiveCell.Left + ActiveCell.Width + 25
        .Top = ActiveCell.Top + 75
        .Show
     End With
    
End Sub


El código es bastante obvio y se puede apreciar cómo se controla la posición en relación a la celda activa. Los parámetros "+25" y "+75" nos permiten establecer el grado de desvío.

El archivo se puede descargar gratuitamente aquí.

viernes, marzo 26, 2010

JLD de vacaciones

JLD sale de vacaciones! Durante la semana entrante estaré paseando por Barcelona y sus alrededores con mis hijas.

No publicaré entradas y tampoco estaré respondiendo consultas. Prometo tratar de responder en cuanto vuelva de mis vacaciones, aunque seguramente habrá algunas que quedarán sin respuesta.