miércoles, diciembre 24, 2008

Fechas anteriores al año 1900 en Excel

Hagamos la siguiente prueba: en la celda A7 ponemos la fecha 01/01/1900 (el primero de enero del 1900); luego arrastramos el valor con el mouse hasta la celda A1. Supuestamente tendríamos que ver la siguiente sucesión:

A6 = 31/12/1899
A5 = 30/12/1899
A4 = 29/12/1899
A3 = 28/12/1899
A2 = 27/12/1899
A1 = 26/12/1899

Veamos que pasa en la práctica



Extraño, no? Hagamos otro experimento. En una celda ponemos esta fórmula

=FECHA(1899,12,31)

¿Cuál será el resultado? Sería de esperar 31/12/1899, sin embargo el resultado será 31/12/3799



Es decir Excel ha calculado el año en la función agregando 1900 al número 1899. Esto se debe a que Excel no sabe, o mejor dicho, no ha sido programado para calcular fechas anteriores al primero de enero del 1900. Como ya hemos explicado en más de una nota Excel usa una serie de números para las fechas donde el número 1 representa el 01/01/1900, el 2 la fecha 02/01/1900 y así sucesivamente. Es decir que si queremos calcular la edad de alguien nacido antes del 1900 o si queremos manejar una base de datos genealógicos con Excel tendremos que encontrar algún rodeo.

En esta nota veremos algunos rodeos conocidos para superar este problema.

La solución oficial de Microsoft es una UDF (user defined function – función definido por el usuario). Para usar la función (en realidad son dos funciones) deben copiar el código en la hoja del enlace y pegarlo a un módulo normal de Vba (preferentemente en el cuaderno Personal.xls).

La función tiene dos variables: fecha de comienzo (startdarte) y fecha final (enddate). Fechas anteriores a 01/01/1900 deben ser texto. Por ejemplo, si nuestro abuelo nació el 18/02/1877 y falleció el 25/04/1963, la función da como resultado 86.
El problema con esta macro es que funciona con la notación americana, mes/día/año. Si tratamos de usarlo con la notación corriente en la mayoría de los países, d+ia/mes/año, el resultado será “invalid date”.


Otra solución es descargar e instalar el complemento XDATE (eXtended Date) desarrollado por John Walkenbach. Una vez descargado e instalado, una serie de funciones son incorporadas al grupo de funciones de fechas del asistente de funciones



Ahora podemos volver al ejemplo de mi abuelito y utilizar XDATEDIF para calcular cuántos días vivió: 31476



Para calcular cuantos años usamos XDATEYEARDIF.



Este complemento agrega otras funciones como por ejemplo XDATEDOW que calcula el día de la fecha (1 = domingo).

Un problema similar existe con fechas posteriores al 31/12/9999. En otras palabras, para Excel el mundo fue creado el 1 de enero del 1900 (en la versión para McIntosh, en 1904) y tendrá su fin el 31 de diciembre del 10000.






Technorati Tags:

martes, diciembre 23, 2008

Actualización automática de gráficos con listas.

Allá por el verano del 2006 (o el invierno, dependiendo de donde resida el lector) expliqué como crear un gráfico que se actualice automáticamente a medida que le agregamos datos.

La técnica consistía en usar rangos dinámicos en la función SERIES del gráfico. La ventaja de esta técnica es que es consistente con todas las versiones de Excel. Pero si usamos la versión 2003 o 2007 de Excel podemos usar una técnica mucho más sencilla.

Supongamos que tenemos esta tabla de ventas por mes a partir de la cual creamos un sencillo gráfico de columnas




Queremos que al agregar los próximos meses el gráfico se actualice automáticamente. Para hacerlo sacaremos provecho de la funcionalidad Datos--Listas.


Empezamos por seleccionar alguna de las celdas de la tabla, por ejemplo A1 y abrimos el menú Datos-Lista-Crear Lista



Excel selecciona automáticamente todo el área de la tabla



Después de controlar que la selección es la deseada, apretamos Aceptar. Excel ha creado ahora una lista y expandirá el área de la tabla automáticamente cada vez que agreguemos (o quitemos) una fila. Excel también abre la barra de herramientas de listas donde tenemos todo tipo de herramientas para administrarla



Para agregar una fila a la lista seleccionamos alguna celda del área. Veremos que aparece un marco azul alrededor del área de la lista y una estrella azul en la primer celda libre, donde debemos poner los datos



Todo los que nos queda por hacer es agregar los datos y el gráfico se actualizará automáticamente



En Excel 2007 esta técnica funciona de la misma manera pero con, como no podía ser de otra manera, algunas diferencias funcionales:

# - La funcionalidad no se llama Lista sino Tablas y no se encuentra en la pestaña Datos como en Excel 2003 sino en la pestaña Insertar



# - Al seleccionar alguna celda de la lista/tabla no aparece una nueva línea en blanco en la tabla. De todas maneras si agregamos un mes inmediatamente debajo del último registro de la tabla, Excel expande la lista en forma automática. Otra técnica en Excel 2007 es usar la tecla Tab. Por ejemplo, si después de introducir el dato de setiembre en la celda B10 apretamos TAB, Excel selecciona automáticamente la celda A11 y expande la tabla.

Microsoft ha agregado muchas otras herramientas y funcionalidades a las tablas en Excel 2007, pero esto será tema de una futura nota.



Technorati Tags:

lunes, diciembre 22, 2008

Insertar un calendario permanente en Excel 2007.

Hace ya más de dos años publiqué la nota sobre como insertar un calendario permanente en hojas de calculo Excel con Controles ActiveX. Eran los días previos a la aparición de Excel 2007 y los controles estaban ligados a dos barras de herramientas, Formularios y Cuadros de Controles (controles ActiveX).
En Excel 2007 no hay barras de herramientas y los controles están ubicados en la pestaña Programador de la cinta de opciones




Nótese que todas las herramientas necesarias están a nuestra vista en la misma sección de la pestaña (Modo diseño, Propiedades, etc.).

Como pueden ver, al apretar Insertar vemos de hecho las mismas barras de herramientas a las que estábamos acostumbrados en las versiones anteriores de Excel.

También el modelo de validación de fechas programando un evento que muestre el calendario si se cumplen ciertas condiciones podemos usarlo en Excel 2007. Si bien la interfaz del editor de Visual Basic no ha cambiado algunos lectores me comentan que no encuentran el botón de controles adicionales. Al igual que en las versiones anteriores podemos usar el menú Herramientas-Controles Adicionales o hacer un clic con el botón derecho del mouse en cuadro de herramientas del UserForm



También podemos crear un calendario permanente en una hoja de Excel sin usar controles. Esto puede hacerse con fórmulas matriciales, como en este modelo desarrollado por John Walkenbach



Este modelo usa fórmulas matriciales de rango, es decir una fórmula que da el resultado en varias celdas simultáneamente. Para crear este modelo empezamos por introducir en la celda B2 el mes y el año del calendario. Podemos hacer esto poniendo en B2 la fórmula =HOY() y dando un formato “mmmm,aaaa” a la celda. Luego seleccionamos el rango B4:H9 asegurándonos que la celda activa sea B4, introducimos esta fórmula en la celda activa

=SI(MES(FECHA(AÑO(B2);MES(B2);1))<>MES(FECHA(AÑO(B2);MES(B2);1)-(DIASEM(FECHA(AÑO(B2);MES(B2);1))-1)+{0\1\2\3\4\5}*7+{1;2;3;4;5;6;7}-1);"";FECHA(AÑO(B2);MES(B2);1)-(DIASEM(FECHA(AÑO(B2);MES(B2);1))-1)+{0\1\2\3\4\5}*7+{1;2;3;4;5;6;7}-1)

y apretamos simultáneamente Ctrl+Mayúsculas+Enter

Podemos usar una fórmula más sencilla,

=FECHA(AÑO(B13);MES(B13);1)-(DIASEM(FECHA(AÑO(B13);MES(B13);1))-1)+{0\7\14\21\28\35}+{0;1;2;3;4;5;6}

pero que mostrará las fechas en todas las casillas del rectángulo



Como ven, estos calendarios son “gringos” con la semana comenzando en domingo. Si queremos que la primer columna de la semana sea el lunes, modificamos levemente la fórmula

=SI(MES(FECHA(AÑO(B2);MES(B2);1))<>MES(FECHA(AÑO(B2);MES(B2);1)-(DIASEM(FECHA(AÑO(B2);MES(B2);1))-1)+{0\1\2\3\4\5}*7+{1;2;3;4;5;6;7});"";FECHA(AÑO(B2);MES(B2);1)-(DIASEM(FECHA(AÑO(B2);MES(B2);1))-1)+{0\1\2\3\4\5}*7+{1;2;3;4;5;6;7})



O esta fórmula

=FECHA(AÑO(B13);MES(B13);1)-(DIASEM(FECHA(AÑO(B13);MES(B13);1))-2)+{0\7\14\21\28\35}+{0;1;2;3;4;5;6}

para el modelo sencillo







Technorati Tags:

jueves, diciembre 18, 2008

Auditoría de fórmulas en Excel - la ventana de inspección

En el pasado ya he mencionado la barra de auditoría de fórmulas. Vimos, por ejemplo, como localizar valores repetidos en una tabla o como analizar el funcionamiento de una fórmula.
Otra herramienta útil y poco conocida en esta barra es la ventana de inspección.




En Excel 2007 la ventana de inspección se encuentra en la pestaña de Fórmulas



El uso de esta ventana es muy sencillo. Supongamos un modelo con el cual calculamos descuentos en función de la cantidad. En la Hoja1 calculamos los descuentos



Como pueden ver, el descuento se calcula dinámicamente en base a una tabla de descuentos que se encuentra en la Hoja2



Si queremos investigar como influyen las distintas tasas de descuentos al resultado, tenemos que navegar a la Hoja2, cambiar las tasas, y luego volver a la Hoja1 para ver el resultado.


Una alternativa es crear referencias a las celdas de la Hoja1 en la Hoja2. Una alternativa más elegante y eficiente es usar la ventana de inspección.


En nuestro caso vamos a la Hoja1 y abrimos la ventana de inspección apretando el icono en la barra de auditoría de fórmulas



Ahora seleccionamos las celdas que queremos inspeccionar, por ejemplo B3, B4 y B5 y apretamos "agregar inspección"



Apretamos agregar. Las celdas aparecerán en la ventana.

Podemos adaptar la ventana a nuestras necesidades ocultando campos que no nos interesan y ampliando el ancho de campos relevantes. Todo esto lo hacemos arrastrando los límites del campo con el mouse.



Navegamos a la Hoja2 y vemos que la ventana sigue flotando sobre la hoja



Todo cambio que ocurra en las celdas de la ventana de inspección se reflejará inmediatamente en la ventana.


También podemos usar esta funcionalidad con celdas en hojas de otros cuadernos.


Si las celdas a inspeccionar están definidas en nombres podemos hacer que éstos aparezcan en la ventana de inspección, facilitando de esta manera la lectura de los resultados










Technorati Tags:

lunes, diciembre 15, 2008

Crear el cuaderno Personal.xls en Excel 2007

Cuando queremos que una macro esté disponible para todo cuaderno abierto en una sesión de Excel, el método más directo de hacerlo es guardar el código en el cuaderno Personal.xls. En el pasado he mostrado como crear el cuaderno Personal.xls cuando este no existe.
En Excel 2007 el proceso es similar con algunas pequeñas diferencias funcionales que mostraré en esta nota.

Como en las versiones anteriores a Excel 2007, si el cuaderno Personal.xls (en Excel 2007 el cuaderno es Personal .xlsb) no existe podemos crearlo grabando una macro y ligándola a este cuaderno. Para comenzar a grabar una macro en Excel 2007 activamos la pestaña Programador y apretamos el icono de grabar




También podemos usar el icono de grabar macros que se encuentra en el ángulo inferior izquierdo de la hoja



Como en Excel 2003 (y versiones anteriores) elegimos la opción de guardar la macro en el libro de macros personal



Para saber dónde está guardado el cuaderno, o si existe, podemos hacer una búsqueda en las carpetas del computador o usar esta técnica:

1 – Abrimos el editor de Vb (con Alt+F11 o con Visual Basic de la cinta de opciones)
2 – Agregamos la ventana Inmediate con Ctrl+G o View—Inmediate Window
3 – En la ventana Inmediate ponemos este código y apretamos Enter: ?Application.StartupPath
4 – SI el resultado es una fila en blanco, el cuaderno no existe. En ese caso empezamos la grabación, como indiqué más arriba y la cerramos inmediatamente (no hay necesidad de grabar alguna acción).



5 – Ahora que hemos creado el cuaderno, podemos ver dónde Excel lo ha guardado







Technorati Tags:

sábado, diciembre 13, 2008

Activar una macro desde la barra de acceso rápido en Excel 2007

En Excel existen varios métodos para activar una macro. Podemos asignarle una combinación de teclas, podemos ligar la macro a un objeto y en las versiones anteriores a Excel 2007 podíamos ligarlo a un icono en alguna barra de herramientas (o crear una barra de herramientas con el icono) e inclusive incluirla en un menú.

En Excel 2007 podemos, como en las versiones anteriores, ligarla la macro a objetos o asignarle una combinación de teclas. Pero no tenemos barras de herramientas donde poner el icono o menús donde incluir la macro.

Sin embargo tenemos la alternativa de poner un icono ligado a la macro en la barra de acceso rápido.

Supongamos que queremos poner un icono para correr una macro que agrega hojas a un cuaderno a partir de los valores de una lista. Los pasos son los siguientes (la macro tiene que estar en un cuaderno abierto o en Personal .xls):

1 – abrimos el menú de Opciones de Excel – Personalizar (o apretando la flecha en el extremo derecho de la barra de acceso rápido). En la ventanilla ”Comandos disponibles en” elegimos Macros




2 – En la ventanilla inferior veremos una lista de macros disponibles, ordenadas alfabéticamente



En caso de no ver el nombre completo, podemos apuntar con el señalador del mouse y después de unos instantes veremos el nombre completo de la macro. Seleccionamos la macro y apretamos el botón “Agregar”



3 – Para cambiar el icono que Excel pone por defecto seleccionamos la macro que acabamos de agregar y apretamos el botón “Modificar”



Elegimos un icono adecuado. En la ventanilla “Nombre para mostrar” cambiamos el texto que Excel a puesto por defecto (el nombre de la macro) por un texto descriptivo. Finalmente apretamos el botón “Aceptar”.

Excel agrega el icono a la barra de acceso rápido y al apuntar con el señalador del mouse podemos ver la descripción de la acción que ejecuta la macro.



Si tenemos una varias macros que usamos con frecuencia, podemos agregarlas a la barra de acceso rápido con facilidad.


Technorati Tags:

viernes, diciembre 12, 2008

Uso de barra de herramientas de acceso rápido en Excel 2007.

En las versiones anteriores a Excel 2007 era relativamente fácil personalizar la interfaz del programa. Podíamos crear barras de herramientas personales, agregar iconos a barra existentes e inclusive modificar los elementos de los menús. Las barras de herramientas podías ser flotantes, es decir, podían ser ubicadas en cualquier área de la hoja y también movidas a discreción.

Toda, o casi toda, esta flexibilidad ha desaparecido. Pero los programadores de Excel han dejado cierto margen de maniobras al usuario promedio (los usuarios avanzados pueden modificar la cinta de opciones, lo que dista de ser trivial). Para esto han agregado la barra de herramientas de acceso rápido




Se puede personalizar la barra de acceso rápido agregando aquellos comandos que usamos frecuentemente.


Para agregar comandos apretamos la flecha de personalización de la barra



Al hacerlo se abre un menú con las distintas opciones.



La parte superior del formulario muestra los comandos más populares (según Microsoft). Si queremos agregar el icono Abrir, hacemos un clic sobre el ítem



Si apretamos la opción Más comandos veremos todas las otras alternativas. En esta ventana tenemos varias alternativas.



Empezamos por elegir la colección de comandos de la cual queremos agregar el icono a la barra apretando al flecha en la ventanilla Comandos disponibles en:



Luego elegimos el icono en la ventanilla inferior. Podemos hacer un clic apretar el botón Agregar o hacer un doble clic sobre el nombre del comando.


Para quitar un comando lo elegimos en la ventanilla derecho y apretamos el botón Quitar. Una vez que hemos terminado de agregar y quitar los comandos, apretamos el botón Aceptar.
La barra de acceso rápido sólo muestra los iconos, pero si posamos el señalador del mouse unos segundos se abre una nota con una descripción del comando


Si queremos quitar algún icono de la barra podemos también señalarlo con el mouse y hacer un clic con el botón derecho. En el menú que se abre elegimos la opción eliminar de la barra



Finalmente, para eliminar todos los cambios que hayamos introducido en la barra de acceso rápido, apretamos el botón Restablecer en el menú de opciones.


Technorati Tags:

Métodos abreviados de teclado en Excel 2007.

En Office 2007 los menús e iconos de las versiones anteriores han sido reemplazados por la cinta de opciones. Algunos de los métodos abreviados (atajos de teclado) han desaparecido o han sido reemplazados por otras combinaciones.

A quien esté acostumbrado a los métodos de Excel 2003 (o versiones anteriores) y empiece a trabajar con Excel 2007, le resultará útil leer esta serie de instrucciones de esta introducción a la cinta de opciones.

Al hablar de métodos abreviados (o atajos) debemos distinguir entre métodos de acceso a la cinta de opciones y combinaciones de teclas.

Los métodos de acceso nos permiten operar con la cinta de opciones, como antes lo hacíamos con la barra de menús, desde el teclado. Para acceder a la cinta de opciones sin el mouse todo lo que tenemos que hacer es apretar la tecla ALT. Una de las mejoras en Office 2007 es que cuando apretamos ALT para acceder a la cinta de opciones aparecen en cada elemento de ella la tecla que debemos apretar para acceder a la opción.

Antes de apretar ALT la cinta de opciones aparece así




Al apretar TAB veremos



Al lado de cada elemento de la cinta de opciones han aparecido las letras del teclado que debemos apretar para realizar la acción.





Al apretar alguna de las teclas de opción, veremos las teclas opcionales de los elementos de la pestaña elegida.




Otra alternativa de navegación en la cinta de opciones sin usar el mouse es apretar la tecla TAB y luego usar las flechas del teclado y la tecla TAB para desplazarse.


Cuando usamos una combinación de teclas no activamos la cinta de opciones sino que aplicamos la acción directamente. Por ejemplo, como en las versiones anteriores, para aplicar el formato de negrita a una celda basta con apretar Ctrl+N (o Ctrl+2). En esta página de Microsoft pueden ver todas las combinaciones de teclas de Excel 2007.



Technorati Tags:

lunes, diciembre 08, 2008

Guías interactivas para la interfaz de Office 2007

En esta página de Microsoft pueden encontrar vínculos a guías interactivas para ubicar los comandos de las distintas aplicaciones del Office 2003 en el Office 2007.

En la misma hoja encontrar vínculos para descargar las guías, lo que permite usarlas también cuando no estamos conectados a la Internet.



Technorati Tags:

Formato condicional en Excel 2007

Una de las funcionalidades que más han mejorado en Excel 2007 es el formato condicional. Entre las mejoras mencionaremos:

# - no hay límite al número de reglas que se pueden definir. Anteriormente sólo era posible definir tres condiciones.

# - en las versiones anteriores no era posible usar referencias a celdas de hojas remotas al definir las condiciones (en esta nota vimos como se podía superar ese inconveniente). En Excel 2007 no existe esta restricción.

# - En Excel 2007 se puede condicionar el formato de números.

# - Además de fondos y bordes también se pueden aplicar iconos como flechas, puntos de color y barras de color. Estas últimas permiten generar gráficos "instant" basados en valores de celdas.

# - Se puede aplicar más de un formato condicional a una misma celda. Por ejemplo, si una regla pone un fondo de color y cambia el tamaño de la fuente, al cumplirse ambas condiciones los dos formatos serán aplicados. En las versiones anteriores sólo la primer condición se aplicaba.


La posibilidad de usar iconos y barras es particularmente atractivo por los efectos que se pueden lograr. Supongamos que tenemos esta tabla de ventas




Si queremos poner resaltar con flechas de color aquellos departamentos que han vendido más de 30000 (superaron el plan), los que están entre 15000 y 30000 (cumplen el plan) y aquellos que no han superado los 15000, seleccionamos el rango de las celdas a formar, en la pestaña Inicio de la cinta apretamos Formato condicional-Nueva Regla





El resultado



Es de notar que sólo definimos dos valores, 30000 y 15000 y Excel define los límites de las tres condiciones mostrándolas en la parte izquierda del formulario.

También podemos usar barras de color para dar una idea gráfica del tamaño relativo de cada número. Seleccionamos el rango de número y aplicamos Formato Condicional - Barra de datos. Al señalar alguna de las opciones Excel nos muestra como se verán las barras en el rango formado



La barra es aplicada como fondo a la celda que contiene el valor. Podemos mejorar el efecto visual de esta opción aumentado el ancho de las columnas creando así este este efecto



Una opción mejor es crear una tercera columna con una referencia las celdas y usar la opción "mostrar sólo la barra"









Technorati Tags: