sábado, diciembre 30, 2006

JLD Excel en Castellano – Balance del primer año

Llegando el fin de año, aprovecho la circunstancia para elaborar el balance del primer año de este blog.

El origen fue el JLD Excel Blog, en inglés. La idea me fue sugerida por un compañero de trabajo, como recurso de consulta para la empresa donde trabajamos. Dado que la empresa cuenta con filiales en Europa, en Asia y en Sudamérica, parecía natural que el idioma del blog fuera el inglés.
Después de seis meses y 82 notas, decidí dejar de publicar en el blog en inglés y concentrarme en el blog en español.

Este blog surgió de la sugerencia de uno de mis lectores que tradujera las notas al español.
Desde el comienzo, el 17 de enero de este año, hasta hoy he publicado 148 notas y he recibido varios cientos de comentarios, lo cual siempre me alegra aún cuando se trata de críticas.
La cantidad de visitas se ha ido incrementando mes tras mes, aunque en los dos últimos meses se ha dado una caída importante que no se explicar.
El gráfico de estadísticas de Sitemeter para este blog




muestra como crecieron las visitas al blog hasta llegar al punto máximo en octubre, 10000 visitantes en un mes, para caer luego hasta la mitad de esa cantidad en diciembre.

Los casi 58000 visitantes hasta este momento han visto cerca de 163 mil páginas, lo que hace un promedio cercano a las 3 páginas por visita.




De acuerdo a Feedburner, este blog tiene en 33 suscriptores, numero que ha ido creciendo con el tiempo



Entre los planes para el futuro pienso reunificar el blog de gráficos y presentación de datos en este blog, crear un sitio independiente que de solución a la descarga de archivos con ejemplos (en lo sitios gratuitos casi no so ven los enlaces de tanta propaganda), mejorar la interfaz del blog y empezar a publicar una serie de guías prácticas en castellano.

A todos mis lectores, mis mejores deseos de un feliz 2007!



Technorati Tags:

martes, diciembre 19, 2006

Formato Condicional en Excel – CONTAR.SI

El más escaso de mis recursos en estos días es el tiempo. El proyecto de reemplazo del sistema informativo en mi empresa entra en "la recta final", así que pasamos días y noches dando los últimos toques, que tienden a ser innumerables.

Les cuento todo esto para explicar por qué no estoy publicando casi nada en este blog (y tampoco en el blog sobre gráficos y presentación de datos).

Pero como para despuntar el vicio, les cuento aquí sobre una consulta de uno de mis lectores. La solución a su consulta se basa en el uso de Formato condicional con la función CONTAR.SI y creo que puede ser de interés general.

La pregunta es la siguiente: tengo un rango con números, que llamaremos "grupo_A" (que aquí aparece ya con la solución)




Y en otro lugar de la hoja, otro rango con números, el "rango_B"



Queremos que, fila por fila, cada número que aparece en la fila correspondiente del rango_B aparezca en negrita y con fuente de color rojo en el rango_A.

El primer paso consiste en definir un nombre que contenga el rango_B adaptado a la fila que estamos evaluando. Seleccionamos la celda A2 y abrimos el menú Insertar—Nombres para definir



Hay que prestar atención a las referencias "semi-absolutas" =Hoja1!$AK2:$AO2

Luego, seleccionamos el rango A2:AI21 (rango_A) y abriendo el menú de formato condicional definimos el siguiente:



con los formatos correspondientes



La fórmula =CONTAR.SI(grupo_b,A2)>0 evalúa cada uno de los números en cada fila del rango_A (A2, B2, C2, etc) y da como resultado VERDADERO si el número existe en la fila correspondiente del rango_B.

Mi lector no me aclara para qué necesita este modelo, pero podría se útil para controlar los números que han salido en un sorteo del Loto con los números que hemos jugado.

Technorati Tags:

viernes, diciembre 15, 2006

Excel – Sombras y efectos 3D en objetos

Excel viene provisto con posibilidades gráficas muy por encima de lo que el usuario promedio pueda querer utilizar.
Tal vez por eso solemos pasar por alto ciertas posibilidades, como agregar sombras y efectos tridimensionales a objetos.
Empecemos por un simple cuadro de texto



Ahora, si se fijan en el extremo derecho de la barra de dibujo, verán dos iconos que suelen pasar inadvertidos



El de la izquierda es el icono de estilo de sombra y el de la derecha el de estilo 3D. Con estos iconos aplicaremos efectos a nuestro cuadro de texto.

Empecemos con las sombras. Abrimos la barra de estilo de sombra



Al pulsar el icono de la izquierda, activamos el efecto de sombra



Si no estamos satisfechos con la elección de Excel, podemos cambiarla usando los distintos iconos. Por ejemplo, cambiar la ubicación de la sombra en relación al objeto usando los iconos con la flechas



o cambiar el color y la transparencia de la sombra



Para aplicar los efectos 3D abrimos la barra correspondiente



El icono de la izquierda nos permite aplicar o cancelar los efectos 3D



Como en el caso anterior, podemos cambiar el aspecto del efecto con los distintos iconos en la barra, como la profundidad



la dirección



la "iluminación"



y el color



Usuarios Excel con vocación estética sabrán sacar provecho a estas posibilidades.



Technorati Tags:

viernes, diciembre 08, 2006

Numeros romanos en Excel

Convengamos que los números romanos han caído en desuso. Sin embargo, todavía puede sucedernos que tengamos que expresar algún número arábigo en notación romana.
Excel cuenta con una función para traducir números romanos a arábigos: NUMERO.ROMANO

Por ejemplo, si en la celda A1 tenemos el número 1953 la fórmula =NUMERO.ROMANO(A1) da como resultado MCMLIII.

Esta función admite un segundo argumento opcional, que puede ser un número entero entre 1 y 4.
Si se omite el segundo argumento, como en nuestro ejemplo, el resultado se da en la notación clásica.

Si ponemos como segundo argumento el número 1, obtenemos una forma más concisa
La fórmula =NUMERO.ROMANO(A1,1) da como resultado MLMIII (también 1953, pero utiliza 6 letras en lugar de 7).
De ser posible, a medida que incrementamos el valor del argumento, obtenemos una forma aún más concisa.

Una vez traducidos, no podemos realizar operaciones aritméticas, ya que Excel ve los resultados como texto y no como números.

Excel no cuenta con una función inversa, que traduzca número romanos a arábigos


Technorati Tags:

miércoles, diciembre 06, 2006

Contando dias entre fechas con Excel

Esta nota viene a colación de una consulta de un colega de trabajo. Él necesitaba calcular la cantidad de días entre dos fechas, pero tomando en cuenta sólo días de trabajo (días hábiles).
Excel cuenta con funciones que permiten hacer estos cálculos con facilidad: NETWORKDAYS y WORKDAY. Estas funciones están disponibles sólo si tenemos instalado el complemento Analysis ToolPak.

Veamos un ejemplo cómo usar estas funciones.
Supongamos estas fechas de comienzo y final de un período:




Podemos calcular la cantidad de días transcurridos fácilmente, restando B2-B1, lo que nos dará 91 días




Si queremos excluir los fines de semana (sábados y domingos) de nuestra cuenta, usamos la función NETWORKDAYS




Esta función cuenta con un tercer argumento que nos permite incluir feriados en nuestra cuenta. En el rango E2:E4 ponemos esta lista de feriados (Argentina)




Nuestra función será ahora =NETWORKDAYS(B1,B2,E2:E4) y el resultado 62 días




La función WORKDAY nos permite calcular la fecha de finalización, si sabemos la fecha de comienzo y la cantidad de días requeridos. Esta función, como NETWORKDAYS, toma en cuenta los fines de semana. También cuenta con un tercer argumento opcional para agregar listas de feriados.
Por ejemplo si empezamos nuestro proyecto el 1ro. de noviembre de 2006 y necesitamos de 10 días hábiles para concluirlo, le fecha de terminación será el 15 de noviembre del 2006 (hay 2 fines de semana en el período).

La función es =WORKDAY(B12,B13,E2:E4)



Categorías: Funciones&Formulas_

Technorati Tags:

lunes, noviembre 27, 2006

Crear varias hojas en un cuaderno de Excel en una operacion

Si tenemos un cuaderno Excel con varias hojas y queremos borrar algunas de ellas, podemos hacerlo en una sola operación. Sencillamente, elegimos las hojas a ser borradas (clic mientras apretamos la tecla Ctrl) y luego en el menú contextual elegimos Eliminar.

En cambio, Excel no tiene ningún método para crear varias hojas en una sola operación. Por ejemplo, si queremos crear un cuaderno con 12 hojas, una para cada mes del año; o peor aún, uno con 52 hojas, una para cada semana.

Una solución bastante exótica sería definir el número de hojas en un nuevo libro (Opciones—General—Número de hojas en un nuevo libro) a 100, o algo así. Luego podríamos borrar de una vez las hojas excedentes.

Una solución más razonable es crear una macro que automatice la tarea de agregar hojas al cuaderno.

En un módulo del editor de Vba ponemos este código


Sub add_sheets()
Dim nbrSh As Integer, Counter As Integer

nbrSh = Application.InputBox(prompt:="Cuantas hojas agregar?", _
Title:="Agregar Hojas", Type:=1)

Counter = 0

While Counter < nbrSh
Sheets.Add After:=Sheets(Sheets.Count)
Counter = Counter + 1
Wend

End Sub


O esta otra, mas sintetica

Dim NrSh As Integer

On Error Resume Next

NrSh = Application.InputBox(prompt:="Cuantas hojas agregar", Title:="Agregar Hojas", Type:=1)

Sheets.Add after:=Sheets(Sheets.Count), Count:=NrSh


Esta macro la podemos guardar en el Personal.xls, de manera que esté disponible cada vez que trabajemos con Excel. También podemos asociarle una combinación de teclas (método abreviado) como Ctrl+Mayúsculas+A, para facilitar su uso.




Categorías: Varios_

Technorati Tags:

sábado, noviembre 25, 2006

Excel – Comentarios ocultos en celdas.

Excel permite incluir comentarios en las celdas. Esta utilidad es muy práctica, en especial cuando queremos dejar indicaciones o explicaciones relacionadas con el contenido de la celda (o de un rango que contiene a la celda).

En ciertas situaciones Excel hace difícil ver el comentario.

Por ejemplo en esta tabla





El pequeño triángulo rojo en el ángulo superior derecho de la celda nos indica que incluye un comentario. Este comentario se hace visible en el momento que apuntamos a la celda con el mouse o la seleccionamos



No todo el contenido del comentario es visible (ver más adelante el cuadro de texto completo).

Una de las formas de solucionar este problema es volver el comentario visible con el menú Mostrar Comentario




y luego cambiar el tamaño del cuadro de texto que contiene el comentario



Luego volvemos a ocultar el comentario y más tarde, cuando seleccionemos la celda, veremos el comentario en un su totalidad.

Sin embargo existe otro problema. Supongamos que queremos que los encabezamientos de las columnas queden fijos. Para eso seleccionamos la fila 2 y aplicamos Inmovilizar Paneles del menú Ventana.
Ahora supongamos que nos movemos a la fila 50 y seleccionamos la celda A1 para ver que dice el comentario. Lo que veremos es esto



El comentario queda oculto!!

Para solucionar este problema usaremos una macro sencilla. En un modulo de macro del editor de Vba ponemos


Sub show_comm()

On Error Resume Next
MsgBox ActiveCell.Comment.Text
On Error GoTo 0

End Sub


Para facilitar el uso de esta macro le hemos asociado la combinación de teclas Shift+Ctrl+M



Ahora podemos seleccionar la celda con el comentario, apretar la combinación de teclas lo que producirá un mensaje en el centro de la pantalla con el contenido del comentario








Categorías: Varios_

Technorati Tags:

domingo, noviembre 19, 2006

Operadores de Excel – Interseccion (Espacio)

Operadores son las herramientas que le permiten a Excel saber que tipo de operación queremos realizar. Por ejemplo, el operador "+" indica la operación suma.

Excel define cuatro tipos de operadores: aritméticos, de comparación, texto y referencia.

Los dos primeros son los más conocidos, como el ya mencionado suma (+) o multiplicación (*) entre los aritméticos y mayor que (>) o menor que (<) entre los de comparación. Existe un único operador de texto, el "&", que nos permite unir cadenas de texto. Los operadores de referencia son los menos conocidos. Incluyen - los dos puntos (":"), el operador de rango que crea una referencia a todas las celdas incluidas entre dos referencias (por ejemplo SUMA(A1:A10) suma todos los valores entre las celdas de referencia, ellas incluidas). - La coma (","), o punto y coma (";") dependiendo de las definiciones del sistema, que es el operador de unión. Este operador combina referencias múltiples en una referencia (por ejemplo SUMA(A1,C1,D1). - El espacio que es el operador de intersección y genera una referencia a celdas comunes a dos rangos. Este último es el menos conocido, y utilizado, de los operadores de Excel. Supongamos esta tabla



La fórmula en la celda A5 es "=B1:B3 A2:C2". La intersección entre ambos rangos, es decir la celda común a ambos, es B2 cuyo valor aparece en la celda A5.

Veamos ahora una aplicación más o menos práctica. Supongamos esta tasas.xlstabla de cotizaciones del peso argentino



Con las funciones INDICE y COINCIDIR podemos construir una tabla de cotizaciones cruzadas



En la celda B9 ponemos la fórmula

=INDICE(cambio,COINCIDIR($A9,monedas,0))/INDICE(cambio,COINCIDIR(B$8,monedas,0))

Que luego copiamos al resto de la tabla. Como pueden ver hemos definidos los distintos rangos como nombres:

cambio =Hoja1!$B$2:$B$5
monedas =Hoja1!$A$2:$A$5

Como se puede ver en la tabla, la relación entre el euro y la libra esterlina aparece en la intersección de los rangos C9:C12 y B11:E11. Es decir, la fórmula

=(C9:C12 B11:E11)

da como resultado 1.4759, la cotización del euro respecto a la libra. El operador de esta fórmula es el espacio entre los dos rangos.

Ahora podemos crear un modelo dinámico que nos ayude a calcular las tasas de cambio entre las distintas monedas. Para ello definimos nombres que contengan los rangos "verticales" y los rangos "horizontales" de cada moneda

Dolar_H =Hoja1!$B$9:$E$9
Dolar_V =Hoja1!$B$9:$B$12
Euro_H =Hoja1!$B$10:$E$10
Euro_V =Hoja1!$C$9:$C$12
Libra_Esterlina_H =Hoja1!$B$11:$E$11
Libra_Esterlina_V =Hoja1!$D$9:$D$12
Real_H =Hoja1!$B$12:$E$12
Real_V =Hoja1!$E$9:$E$12

Creamos esta tabla, donde en las celdas B16 y B17 ponemos una lista desplegable usando Validación de Datos—Lista—monedas






En la celda B18 escribimos esta fórmula:

=INDIRECTO(B16&"_V") INDIRECTO(B17&"_H")

INDIRECTO toma la cadena de texto formada por la moneda escogida a la que le agregamos _V y _H para generar el nombre del rango. Ambas funciones INDIRECTO están separadas por un espacio que funciona como operador de intersección. El resultado es la celda común a los dos rangos definidos por las funciones INDIRECTO.

Ahora podemos agregar una funcionalidad más a nuestro modelo, usando macros de tipo eventos, tal como hicimos en la nota de ayer sobre como ingresar fechas con separadores

.
En este caso queremos que cuando seleccionamos una tasa de cambio en la tabla, esta reciba un fondo de color celeste y los nombres de las monedas (los encabezamientos de la columna y la fila) un fondo de color gris.



Para esto usamos un evento Worksheet_SelectionChange. Abrimos el editor de Vba (Alt+F11). Seleccionamos la Hoja1 (Sheet1) y en el área de código escribimos esta rutina:


Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim rngTabCurr As Range


Set rngTabCurr = Range("A8:E12")

If Union(Target, rngTabCurr).Address = rngTabCurr.Address Then
Application.EnableEvents = False

rngTabCurr.Interior.ColorIndex = xlNone

Range(Target.Address).Interior.ColorIndex = 20
Cells(Target.Row, 1).Interior.ColorIndex = 15
Cells(8, Target.Column).Interior.ColorIndex = 15

Application.EnableEvents = True
End If


End Sub


Esta técnica puede ser muy útil en tablas de cierto tamaño.





Categorías: Funciones&Formulas_, Varios_

Technorati Tags:

sábado, noviembre 18, 2006

Importar datos de la Web a Excel

Estoy preparando una nota para mi blog sobre gráficos y presentación de datos. La idea es mostrar un gráfico que refleje el ranking de los jugadores de tenis, tal como lo muestran en las transmisiones de torneo de Masters de Shanghai (espantosa derrota de Nalbandian a manos de Blake ).

Estaba por empezar a tipear manualmente los nombres de los primeros diez clasificados del ranking, cuando me acordé que Excel permite importar datos de tablas de la Web fácilmente.

Supongo que muchos de mis lectores conocen esta funcionalidad, pero para aquellos que no aquí un pequeño ejemplo.

Encontré el ranking de la ATP en la página del torneo de Masters.




Para importar los datos de esta tabla (o cualquier otra que Excel reconozca en el sitio), hacemos lo siguiente:

1 – Abrimos la página donde se encuentra la tabla y copiamos el URL al clipboard.

2 – En una hoja de Excel abrimos el menú Datos—Obtener Datos Externos—Nueva Consulta Web



3 – En la ventanilla dirección pegar el URL de la página que contiene la tabla de datos



4 – Navegar en la ventana hasta encontrar la tabla. Excel marca las tablas que reconoce con una flecha sobre un fondo amarillo



5 – Hacer clic sobre la flecha para marcar la tabla. Es posible marcar más de una tabla. Después de marcar la tabla, apretar Importar



Señalamos dónde queremos ubicar los datos y apretamos Aceptar

Excel crea un vínculo con la tabla de origen, de manera que podemos renovar los datos sin necesidad de abrir la página.




A veces conviene crear referencias a los datos en otra hoja, para poder controlar mejor el formato. En nuestro ejemplo, Excel ha dejado dos columnas vacías entre cada columna importada. Si eliminamos las columnas vacías, al renovar los datos volverán a aparecer.



Categorías: Manejo de Datos_

Technorati Tags:

Ingresar fechas en Excel sin separadores

A veces tenemos que entrar manualmente una larga lista de fechas en Excel. Para que Excel reconozca las entradas como fechas, tenemos que usar los separadores de fechas aceptados por Excel ("/", "-" o "." dependiendo de las definiciones del sistema).
Cómo hacemos para escribir fechas sin usar separadores, lo que nos permite agilizar el trabajo?

La idea es que entramos el número 18112006 en una celda y que Excel lo convierta en la fecha 18/11/2006 (día/mes/año).

Veamos las distintas posibilidades.

1 – Usando fórmulas

En este tipo de solución entramos el número en una celda y lo transformamos en fecha en una celda contigua.




En esta tabla, entramos los números en la columna A. En la columna B escribimos la fórmula
=SI(LARGO(A2)=8,FECHA(DERECHA(A2,4),EXTRAE(A2,3,2),IZQUIERDA(A2,2)),FECHA(DERECHA(A2,4),EXTRAE(A2,2,2),IZQUIERDA(A2,1)))

La fórmula básica es FECHA(DERECHA(A2,4),EXTRAE(A2,2,2),IZQUIERDA(A2,1))

Pero dado que el número del cual partimos puede tener 7 u 8 cifras, usamos la función SI.

La ventaja de este método es que los resultados de la fórmula son interpretados por Excel como fechas. Esto nos permite ordenar la lista en orden descendiente o ascendiente de acuerdo a las fechas.
La desventaja es que debemos agregar una columna a nuestro modelo.
También conviene notar que luego de las primeras cuatro entradas, Excel copia la fórmula en la columna B automáticamente.
Otra posibilidad es utilizar la funcionalidad Formulario del menú Datos, después de haber escrito la primer línea



Al usar Formulario Excel no sólo copiará las fórmulas, sino también los formatos.

2 – Usando formato personalizado

En el menú de formato de celdas elegimos la opción Personalizada. En la ventanilla Tipo anotamos lo siguiente:

##\/##\/####




El símbolo "\" lo usamos para forzar a Excel a exhibir "/" como separador en el formato.




Como pueden ver, en la barra de fórmulas aparece el número tal como lo entramos, 21102006, pero Excel lo exhibe en la celda de acuerdo al formato personalizado.

La ventaja de este método es que no hay necesidad de agregar una columna auxiliar a nuestro modelo.
La desventaja es que no podemos ordenar nuestra lista en orden creciente (o decreciente) de acuerdo a la fecha, ya que Excel no convierte nuestras entradas en fechas, como en el método anterior.

3 – Usando Eventos (macros).

Hasta ahora he tocado sólo tangencialmente el tema de las macros en este blog. Pero si queremos un método que reúna las ventajas de los dos anteriores, tenemos que echar mano a las macros (Vba).
Eventos son un tipo especial de macros que, como su nombre lo indica, entran en acción cuando sucede algún evento en el objeto al que se refieren.
En nuestro caso usaremos el evento Worksheet_Change ligado a la hoja de cálculos específica (que hemos llamado Evento).
Para acceder a este módulo apuntamos a la pestaña con el nombre de la hoja y con un clic del botón derecho del mouse abrimos el menú, donde seleccionamos Ver Código.
Otra posibilidad es abrir el editor de Vba (Alt+F11) y activar la hoja correspondiente en el panel Vba Project:



En el módulo de VBa copiamos esta rutina


Private Sub Worksheet_Change(ByVal Target As Range)
Dim rngData As Range

Set rngData = Range("A2:A65536")

On Error Resume Next

If Union(Target, rngData).Address = rngData.Address Then

Application.EnableEvents = False

Target.ClearFormats

Select Case Len(Target)
Case 8
Target = DateSerial(Right(Target, 4), Mid(Target, 3, 2), Left(Target, 2))
Case 7
Target = DateSerial(Right(Target, 4), Mid(Target, 2, 2), Left(Target, 1))
Case Else
MsgBox "Entrada Incorrecta"
End Select

Application.EnableEvents = True

End If


On Error GoTo 0

End Sub


Este rutina hace que cada vez que escribimos algo en una celda del rango A2:A65536 (dejamos la celda A1 disponible para el encabezamiento de la columna), Excel evalúe si es un número de 7 u 8 cifras. De serlo, lo convierte en fecha tomando los últimas cuatro cifras par el año, las dos del medio para el mes y la primera o las dos primeras para el día.
La ventaja de este método es que usamos sólo una columna y que tenemos un control cuando ingresamos un número incorrecto.
La desventaja es que se requiere ciertos conocimientos de macros (Vba) para implementarlo.




Categorías: Varios_

Technorati Tags: