viernes, febrero 05, 2010

Uso de Estilos en Excel

Alguna vez he mencionado que estaba preparando una nota sobre el uso de estilos en Excel. Esta es una funcionalidad tan útil como ignorada, o por lo menos subestimada, por gran parte de los usuarios de Excel.

El tema volvió a mi conciencia a partir de la consulta de un lector a quien “lo mata” (sic) que no pueda controlar el formato de la fuente de los hipervínculos. Cada vez que crea un hipervínculo, Excel le pone la fuente Arial con el tamaño 10, cosa que él nunca usa ni considera usar en algún futuro cercano o lejano.

Primero veamos cómo podemos solucionar el problema de mi sufrido lector y luego nos referiremos al tema de la nota.

Como ya sabemos, podemos agregar un hipervínculo a una celda. El hipervínculo puede dirigirse a una página Web, a un archivo o a una ubicación en una hoja de Excel (y también a un párrafo específico de un documento Word, como ya hemos visto).

En Excel Clásico la tarea de cambiar el estilo de los hipervínculos es sencilla. Seleccionamos una de las celdas con hipervínculo y abrimos el menú Formato-Estilos



En la lista desplegable de nombres de Estilo, aparece Hipervínculo. Apretando el botón Modificar podemos cambiar los formatos a nuestro parecer



Al apretar Aceptar, el formato de todas las celdas que contienen hipervínculos cambiará



Al agregar un nuevo hipervínculo éste recibirá los formatos del nuevo estilo





El nuevo estilo es guardado con el cuaderno donde lo hemos creado y no se aplica a los otros cuadernos.



En Excel 2007 usamos



El menú de las opciones lo abrimos apuntando al estilo (Hipervínculo) y apretando el botón derecho del mouse. Elegimos Modificar y cambiamos los formatos a nuestro gusto.

Pero Estilos, como ya habrán entendido, no se limita a Hipervínculos. Cada Estilo es una colección de formatos que incluye los formatos de números, fuente, bordes, tramas y protección de la celda. Una vez creado el estilo lo podemos aplicar a una celda o a un rango de celdas con el menú Formato-Estilo en Excel Clásico o con Inicio-Estilo de Celdas en Excel 2007.

Podemos crear un estilo con el menú, como indicamos más arriba, o aplicando todos los formatos a una celda y luego usando la opción “según el ejemplo”



Aquí, por ejemplo, hemos creado el estilo Título 1 basándonos en las definiciones de la celda B2.

Entre Excel clásico y Excel 2007 hay algunas diferencias en los métodos de guardar los nuevos estilos que hemos definido.

En Excel Clásico el formulario tiene dos botones para guardar el estilo: Agregar y Aceptar


Si apretamos Aceptar, el todas las celdas de la selección reciben el nuevo estilo (suponiendo que hemos seleccionado más de una celda). Si usamos Agregar y luego Aceptar, se crea el nuevo estilo, pero las celdas de la selección no cambian.

En Excel 2003 podemos agregar la lista desplegable de estilos a una barra



lo que es una forma muy eficiente de usarlos.

En Excel 2007 lo podemos agregar a la barra de acceso rápido



Aplicar estilos es muy sencillo. Vamos a mostrar esto creando un nuevo estilo, EstiloNuevo, con fuente Arial 20, color de fuente azul subrayado y relleno amarillo








Para aplicar el nuevo estilo a este rango



en Excel 2007 después de seleccionar el rango abrimos el menú Estilo de Celdas; al apuntar al nuevo estilo el rango es mostrado como se verá si aceptamos la opción



En Excel Clásico seleccionamos el rango y abrimos la lista desplegable de estilo



¿Cuáles son las ventajas de aplicar estilos? Puede ser a que a primera no sean evidens. Usar estilos nos permite
  • realizar cambios a grandes cantidades de celdas con un solo clic. Todo cambio en la definición del estilo se refleja inmediatamente en todas las celdas definidas con él;
  • mantener la uniformidad en los cuadernos que creamos;
  • ayudan a considerar más a fondo el diseño de las hojas y a conservar su consistencia.

lunes, febrero 01, 2010

Hipervínculos en Excel - cambiar ubicación

Excel permite crear hipervínculos en celdas tanto a páginas Web como a archivos. Como ya hemos visto, Excel nos proporciona dos caminos:



  • con el menú Insertar-Hipervínculo en Excel Clásico o Hipervínculo en la pestaña Insertar de Excel 2007 (o con el atajo de teclado Ctrl+Alt+K en ambas versiones de Excel o con el menú contextual)



Este último método tiene la ventaja de permitirnos crear ubicación del vínculo, es decir el texto con la ruta del archivo, en forma dinámica.

Con dinámica nos referimos a que en lugar de un texto fijo, ponemos una referencia a una celda que contiene el texto. De esta manera, podemos cambiar el texto en la celda y la referencia cambiará automáticamente.

Esta técnica puede ser muy útil en ciertas situaciones. Por ejemplo, si tenemos hipervínculos a varios archivos en una carpeta y por algún motivo debemos moverlos a otra carpeta. Los hipervínculos creados con el menú no son dinámicos y al mover los archivos dejarán de funcionar. En estos casos la solución será usar macros, que mostraremos más adelante.



En este ejemplo podemos ver que la ruta del archivo se crea combinando el valor de B1 con el nombre del archivo





De esta manera, si movemos el archivo a otra carpeta todo lo que tenemos que hacer es cambiar el valor de la celda B1.

Pero la vida, como siempre, nos enfrenta a situaciones más complicadas. Como el caso de uno de mis lectores que fue creando hipervínculos a archivos guardados en una carpeta y verse necesitado a moverlos a otra carpeta. Como los hipervínculos no fueron creados con la función, sólo tenemos dos alternativas: o cambiar cada vínculo manualmente o usar una macro.




Vamos a mostrar una macro sencilla para reemplazar la ruta de todos los hipervínculos en una hoja. En esta hoja hemos creado cuatro hipervínculos a archivos en la carpeta “D:\My Documents\temp”.



Si queremos cambiar la ruta a “D:\My Documents\blog” podemos usar esta macro

Sub hipervinc_cambio()

    Dim hpVinc As Hyperlink
    Dim strOldAddress As String, strNewAddres As String
  
    strOldAddress = "D:\My Documents\blog\"
    strNewAddres = "D:\My Documents\algodistinto\"
  
    For Each hpVinc In ActiveSheet.Hyperlinks
        hpVinc.Address = Replace(hpVinc.Address, strOldAddress, strNewAddres)
    Next
  
End Sub


Esta es una macro simplificada a los solos efectos de demostrar cómo cambiar los vínculos programáticamente.
En lugar de poner las rutas en el cuerpo del código podemos ponerlas en celdas de la hoja y modificar el código de acuerdo.
Por ejemplo podemos usar las celdas E1 y E2 para alojar el texto de la ruta




y usar esta rutina

Sub hipervinc_cambio()

    Dim hpVinc As Hyperlink
    Dim strOldAddress As String, strNewAddres As String
  
    strOldAddress = Range("E1")
    strNewAddres = Range("E2")
  
    For Each hpVinc In ActiveSheet.Hyperlinks
        hpVinc.Address = Replace(hpVinc.Address, strOldAddress, strNewAddres)
    Next
  
End Sub


viernes, enero 15, 2010

Cálculo de finalización de procesos con Excel

Supongamos que tenemos una planilla en Excel donde queremos calcular la fecha de finalización de un proceso a partir de la fecha de comienzo y la duración en días. Excel permite hacer esto con facilidad sumando el número de días a la fecha de comienzo




Pero si queremos calcular la fecha de finalización del proceso tomando en cuenta los feriados (el 16/01/2010 es sábado y el 17/01/2010 domingo), tendremos que usar la función DIA.LAB




El resultado aparece en rojo para resaltar el hecho que es incorrecto. El resultado correcto es



20/01/2010 08:00


Esto se debe a que DIA.LAB calcula días enteros, sin tomar en cuenta las horas, minutos y segundos.

Para calcular el resultado correcto usamos esta fórmula



=DIA.LAB(B5;C5)+(B5-ENTERO(B5))



Como ya hemos explicado en el pasado, Excel usa una serie de números para los cálculos de fechas. La parte entera del número representa el día y la parte decimal la fracción del día (horas, minutos y segundos).
En nuestro caso 15/01/2010 08:00 está representado por el número 40193,3333333333 donde 40193 son los días transcurridos desde el 1ro. de enero de 1900 y 0.333333 (es decir, 1/3) es la tercera parte del día, 8 horas (24 x 1/3 = 8)

Lo que hacemos en nuestra fórmula es extraer la parte decimal y agregarla al resultado de DIA.LAB.

Supongamos que la duración del proceso no es un número entero de días sino, por ejemplo, 3 días, 10 horas y 20 minutos. Si ignoramos los feriados podemos esta fórmula

=B9+C9+NSHORA(D9;E9;F9)



Usamos NSHORA para convertir los parámetros de tiempo que ponemos como números enteros en el número serial correspondiente al lapso (10:20:00 es representado por el número 0,430555555555556).

Si nos gusta complicarnos la vida o le tenemos antipatía a la función NSHORA, podemos usar en su lugar la expresión

=B10+C10+(D10*3600+E10*60+F10)/86400



Convertimos las horas y los minutos a segundos y los dividimos por 86400 que es la cantidad de segundos que hay en un día (24 x 60 x 60 = 86400)

En caso que tengamos que tomar en cuenta los feriados, tendremos que usar DIA.LAB y corregir el resultado tal como hicimos en el ejemplo anterior