Los Mejores Trucos de Excel Hawley David
Los Mejores Trucos de Excel Hawley David
Introducción 17
¿Por qué los mejores trucos de Excel? 17
Cómo obtener y utilizar los trucos 18
Cómo utilizar este libro 18
Cómo está organizado este libro 19
Usuarios de Windows y Macintosh 20
Convenciones utilizadas en este libro 21
79. Trucar mega fórmulas que hagan referencia a otros libros 227
80. Trucar una de las funciones de base de datos de Excel para que haga
el trabajo de muchas funciones 228
JExcelApi 307
Glosario 315
índice alfabético 323
CAPÍTULO 1
Reducir la frustración
en los libros y en las hojas
de cálculo
Trucos 1 a 15
Los usuarios de Excel saben que los libros son un concepto m u y potente. Pero
igualmente, muchos usuarios son conscientes que trabajar con estos libros pue-
de provocar un gran n ú m e r o de inconvenientes. Los trucos de este capítulo le
ayudarán a evitar algunos de esos inconvenientes a la vez que sacarán provecho
de algunos métodos más efectivos, pero en ocasiones desconocidos, con los que
puede controlar sus libros de trabajo.
Antes de profundizar en dichos trucos, merece la pena echar un vistazo rápi-
do a algunos conceptos básicos que harán mucho más sencillo crear trucos efec-
tivos. Excel es u n a aplicación m u y potente de hojas de cálculo, con la que se
pueden hacer cosas increíbles. Por desgracia, muchas personas diseñan sus hojas
de cálculo de Excel con poca previsión, haciendo difícil que puedan reutilizarlas o
actualizarlas. En este apartado, proporcionaremos numerosos trucos que puede
utilizar para asegurarse de que crea hojas de cálculo lo más eficaces posibles.
La regla 80/20
Quizá la regla más importante a seguir cuando se diseña u n a hoja de cálculo
es tener u n a visión a largo plazo y nunca presuponer que no necesitará añadir
más datos o fórmulas a la hoja de cálculo, ya que la probabilidad de que ocurra
esto es alta. Teniendo esto en mente, deberá dedicar alrededor del 80% de su tiem-
po en planificar la hoja de cálculo y alrededor del 20% en implementarla. Aunque
esto pueda parecer extremadamente ineficiente a corto plazo, podemos asegurar
que a largo plazo será u n a gran ventaja, además de que después de haber hecho
varias planificaciones, luego será mucho más sencillo. Recuerde que las hojas de
24 Excel. Los mejores trucos
Al final del día, sino recuerda nada más acerca del diseño de la hoja de cálculo,
recuerde que Excel funciona mucho mejor cuando todos los datos relacionados
están distribuidos en u n a tabla continua. Eso hará que la utilización de los t r u -
cos sea mucho más sencilla.
A veces, trabajando con Excel, puede que necesite tener más de un libro abier-
to en la pantalla, lo que permite utilizar visualizar los datos de múltiples libros
de forma fácil y rápida.
En los siguientes párrafos describiremos cómo hacer esto de u n a forma orga-
nizada y ordenada. Abra todos los libros que desee utilizar.
Desde cualquiera de los libros de Excel (no importa cuál), seleccione la opción
de menú Ventana>Organizar. Si está activada la casilla de verificación Ventanas
del libro activo, desactívela y luego seleccione la organización que prefiera. Para
terminar, haga clic en el botón Aceptar.
Si eligió la opción Mosaico, se le presentarán los libros como un mosaico en la
pantalla, tal y como puede verse en la figura 1.1.
Si selecciona la opción Horizontal, se distribuirán los libros de arriba a abajo
ocupando todo el ancho de la pantalla, tal y como se muestra en la figura 1.2.
Si eligió la opción Vertical, se distribuirán los libros u n o al lado del otro, de
izquierda a derecha, como puede verse en la figura 1.3.
Por último, como muestra la figura 1.4, seleccionando la opción Cascada se
mostrarán las ventanas unas encima de otras desde la parte superior izquierda a
la parte inferior derecha. Una vez que los libros se muestran de la forma que más
prefiera, puede copiar, pegar, arrastrar, etc. información entre ellos fácilmente.
Si cree que más adelante querría volver a utilizar esta vista que acaba de crear,
puede guardar la configuración de la distribución de las ventanas como un espa-
cio de t r a b a j o . Para ello, s i m p l e m e n t e seleccione la o p c i ó n de m e n ú
Archivo>Guardar área de trabajo, introduzca el nombre de archivo en el cuadro
28 Excel. Los mejores trucos
Cuando necesite volver a abrir los mismos libros, bastará con abrir el archivo
.xlw, con lo que mágicamente se mostrarán con la misma distribución con la que
fueron guardados. Si solamente necesita abrir u n o de los libros, hágalo de la
forma habitual. Cualquier modificación que haga en alguno de los libros que
forman parte del área de trabajo se guardará automáticamente cuando cierre el
área de trabajo como conjunto, aunque también puede guardar cada libro de
forma individual.
Si dedica u n a pequeña parte de tiempo a configurar algunas vistas personali-
zadas para realizar tareas repetitivas que requieren de múltiples libros abiertos,
encontrará que esas tareas serán más fáciles de gestionar. Quizá decida utilizar
diferentes vistas para diferentes tareas repetitivas, dependiendo de cuál sea la
tarea o cómo se sienta ese día.
1. Reducir la frustración en los libros y en las hojas de cálculo 29
El mecanismo que incorpora Excel para hacer que los datos se introduzcan en
múltiples lugares al mismo tiempo es u n a función llamada "Grupo", la cual fun-
ciona agrupando las hojas de cálculo de forma que todas estén vinculadas con el
libro de Excel.
Macintosh) mientras hace clic en las pestañas de las hojas de cálculo en las que
desea insertar simultáneamente los datos. Cuando introduzca datos en cualquie-
ra de las celdas de la hoja de cálculo, se introducirán automáticamente en el resto
de hojas de cálculo agrupadas. Misión completada.
Para desagrupar las hojas de cálculo, bien seleccione u n a hoja de cálculo que
no sea parte del grupo o bien haga clic con el botón derecho del ratón en cual-
quiera de las pestañas de las hojas de cálculo agrupadas y seleccione la opción
Desagrupar hojas.
Aunque este método es fácil, necesita que recuerde agrupar y desagrupar las
hojas cuando necesite, corriendo el riesgo de sobrescribir datos en cualquier otra
hoja de cálculo si se olvida de desagruparlas. También significa que se producirán
entradas de datos simultáneas independientemente de la celda en la que esté si-
tuado. Por ejemplo, quizá solamente desee introducir datos simultáneamente
cuando se encuentre en un cierto rango de celdas en particular.
Este código también necesita estar incluido dentro del módulo privado del ob-
jeto Sheet. Siga los pasos que describimos anteriormente en este mismo truco
para poder llegar a dicho módulo.
Se pueden gestionar las interacciones de los usuarios con las hojas de cálculo
monitorizando y respondiendo a los eventos. Los eventos, como su nombre indi-
ca, son acciones que ocurren a medida que se trabaja con los libros y las hojas de
cálculo. Algunos de los eventos más comunes incluyen abrir un libro, guardarlo
y cerrarlo cuando el usuario desee. Se le puede indicar a Excel que ejecute cierto
código Visual Basic cuando cualquiera de estos eventos se produzca.
Para insertar el código, abra el libro de Excel, haga clic con el botón derecho
del ratón en el icono de Excel situado justo a la izquierda del m e n ú Archivo y
seleccione la opción Ver código, como puede verse en la figura 1.6.
Figura 1.6. Menú de acceso rápido al módulo privado del objeto Workbook.
1. Reducir la frustración en los libros y en las hojas de cálculo 35
entonces verá un mensaje que le indica que no tiene permiso para guardar este
libro con otro nombre diferente.
Observe que hemos especificado las hojas Hojal y Hoja2 como las que tienen
prohibido ser impresas. Por supuesto, puede cambiar esos nombres por el de cual-
quier otra hoja que desee bloquear. También puede añadir más hojas a la lista,
simplemente escribiendo una, seguida del nombre de la hoja entre dobles comi-
llas. Si sólo desea impedir la impresión de u n a sola hoja, incluya su nombre entre
dobles comillas detrás de la sentencia Case y elimine la coma sobrante.
veces, sin embargo, deseará impedir simplemente que se puedan añadir nuevas
hojas de cálculo, permitiendo que se realicen el resto de acciones.
El siguiente código le permitirá hacer esto:
Cuando graba u n a macro, Excel inserta un módulo de Visual Basic que con-
tendrá los comandos y las funciones. Por ello, cuando se abre un libro, Excel
comprueba si existe algún módulo, este vacío o no. Cuando se eliminan las macros
de un libro, sólo se elimina el código, pero no el módulo en sí (es algo así como
beberse toda la leche pero dejarse el bote vacío dentro de la nevera). Para impedir
que se muestren este tipo de mensajes innecesarios, deberá eliminar también el
módulo. Así es como puede hacerse esto: Abra VBE seleccionando la opción
Herramientas>Macro>Editor de Visual Basic (o pulsando A l t / C o m a n d o - F l l ) y
luego seleccionando la opción Ver>Explorador de proyectos (en Macintosh, la ven-
tana de proyectos siempre está abierta, por lo que no necesitará abrir el explora-
dor de proyectos). A continuación podrá ver una ventana como la que se muestra
en la figura 1.8.
Figura 1.8. Módulos del Explorador de proyectos con la carpeta Módulos abierta.
Este código debe residir en el módulo privado del libro del libro de macro per-
sonal. Para llegar ahí desde cualquier libro, seleccione la opción Ventana>Mostrar,
seleccione Personal.xls y luego haga clic en Aceptar. Luego abra VBE e introduz-
ca el código anterior. Finalmente, pulse Alt/Comando-Capara volver a la venta-
na principal de Excel cuando haya terminado. Por supuesto, si dispone de u n a
función imprevisible que quiere que sea recalculada y por tanto guardar los cam-
bios que haya realizado, entonces introduzca el siguiente código:
Prívate Sub workbook_Open( )
Me.Save
End Sub
1
MiMacro Macro
1
Elimina la hoja de cálculo actual
i
Application.DisplayAlerts = False
ActiveSheet.Delete
Application.DisplayAlerts = True
End Sub
Observe que al final del código volvemos a activar los mensajes de confirma-
ción para que Excel los muestre cuando estemos trabajando normalmente. Si se
olvida de activarlos, Excel no mostrará ninguna alerta, lo cual puede ser peli-
groso.
Para revertir el proceso, simplemente siga los pasos anteriores, pero esta vez
seleccionando la opción 1 - xISheetVisible.
42 Excel. Los mejores trucos
0
H! EuroTool (EUROTOOL.XLA)
§í VBAProject (Libro 1)
- • v Microsoft Excel Objetos
Ü3 Hojal (Hojal)
iQ Hoja2 (Hoja2)
Q ThisWorkbook
* Módulos
«í£ Módulo 1
<s!£ Módulo2
iiffiffffmftfii
íHojal Worksheet
"3
Alfabética | p o r categorías 1
(Ñame) Hojal
DisplayPageBreaks False
DisplayRightToLeft False
EnableAutoFilter False
EnableCalculation True
EnableOutlining False
EnablePivotTable False
EnableSelection 0 - xlNoRestrictions
Ñame Hojal
ScrollArea
Standard Width 10,71
Figura 1.9. Ventana de propiedades de una hoja con la propiedad Visible establecida
en 2 - xlSheetVeryHidden.
Imagínese que tiene u n a hoja de cálculo que contiene los días del año y fór-
mulas que resumen diversas informaciones para esos días. Ha formateado esta
hoja de cálculo cuidadosamente con los colores de su empresa, el logotipo y con
las fórmulas necesarias, todo ello para utilizarla con frecuencia. En vez de tener
que reinventar la rueda (o copiar y eliminar las cosas que no necesita) cada día,
puede ahorrar un m o n t ó n de tiempo y de problemas creando u n a plantilla.
Las plantillas para libros y hojas de cálculo le proporcionan un p u n t o de par-
tida para los siguientes proyectos, permitiéndole saltarse la configuración ini-
cial, el proceso de dar formato, la construcción de fórmulas, etc. Guardar u n a
plantilla de u n a hoja de cálculo simplemente significa abrir un libro nuevo, b o -
rrar todas las hojas excepto u n a y luego crear u n a plantilla básica que será la
1. Reducir la frustración en los libros y en las hojas de cálculo 43
mente con un libro. Por tanto, resulta pesado tener que abrir Excel y luego b u s -
car el libro que se desea abrir. Si desea configurar Excel para que automáticamente
se inicie con un cierto libro abierto, siga leyendo.
iá ¡ J 1
Libro l.xlt Libro2.XLT
RüW W W F S l f i l W W i ' l f » ^
¿ j Archivo Edición Ver Insertar Formato Herramientas Datos Ventana l - S X:
Al * f*
A | B C D E F G H —'
1
2
I i
3
4
5
6
7
8
$M Tareas para hoy
•¡
in i
Figuras de esta semana
11;
12; Hojal j
13 j
Hoja2 i
14¡
15l Hoja3
16|
17 j
18Í
Hoja4
HojaS
:
—1
119 i Hoja6 <r i
Figura 1.11. Menú con las hojas disponibles que se muestra al hacer clic con el botón
derecho sobre los botones de desplazamiento entre hojas.
1. Reducir la frustración en los libros y en las hojas de cálculo 47
Para vincular ese m e n ú con el hecho de hacer clic con el botón derecho del
ratón en cualquier celda, escriba el siguiente código en VBE:
Prívate Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal
Target As Range, Cancel As Boolean)
Dim cCont As CommandBarButton
On Error Resume Next
Application.CommandBars("Cell").Controls("índice de hojas").Delete
On Error GoTo 0
Set cCont = Application.CommandBars("Cell").Controls.Add _
(Type:=msoControlButton, Temporary:=True)
With cCont
.Caption = "índice de hojas"
.OnAction = "IndexCode"
End With
End Sub
Sub IndexCode( )
Application.CommandBars("workbook Tabs").ShowPopup
End Sub
H
Limitar el rango de desplazamiento de la hoja
de cálculo
Si se desplaza a menudo por la hoja de cálculo o si tiene datos que no
desea que sean visualizados por los lectores, puede ser útil limitar el área
visible de la hoja de cálculo sólo al rango que actualmente tiene datos.
Todas las hojas de Excel creadas a partir de Excel 97 disponen de 256 colum-
nas (de la A a la IV) y de 65.536 filas. En la mayoría de los casos, las hojas sólo
utilizarán un pequeño porcentaje de todas las celdas disponibles. Existe la posibi-
lidad de establecer el área por el que se puede desplazar el usuario de forma que
sólo pueda ver los datos que desee. Luego, puede colocar datos que no deben ser
48 Excel. Los mejores trucos
vistos fuera de esa área. Esto también puede hacer más sencillo desplazarse por
u n a hoja de cálculo y que los usuarios no se encuentran en la fila 50.000 para
tener que empezar a buscar los datos que desea.
La manera más sencilla para establecer los límites es simplemente ocultar t o -
das las columnas y filas que no se utilizan. Estando en u n a hoja, localice la últi-
ma fila que contiene datos y seleccione la fila entera que está debajo de ella haciendo
clic en el selector de fila. Mantenga pulsadas las teclas Control y Mayús mien-
tras pulsa la tecla Flecha abajo para seleccionar todas las filas hacia abajo. Se-
leccione entonces la opción Formato>Fila>Ocultar para ocultarlas todas. Haga
esto mismo para las filas no utilizadas: busque la última columna, seleccione
toda la columna siguiente y manteniendo pulsadas las teclas Control y Mayús,
pulse la tecla Flecha derecha hasta seleccionar todas las columnas. Luego selec-
cione la opción Formato>Columna>Ocultar. Una vez hecho esto, el rango de cel-
das útiles quedará rodeado de u n a zona gris por la que no se puede desplazar.
La segunda alternativa para establecer los límites es especificar un rango vá-
lido en la ventana de propiedades de la hoja. Haga clic con el botón derecho en la
pestaña de la hoja que está situada en la parte inferior izquierdo de la ventana y
luego seleccione la opción Ver código. Entonces, seleccione la opción Ver>Explorador
de proyectos (Control-R en Windows o Comando-R en Mac OS X) para mostrar
la ventana de proyectos. Si la ventana de propiedades no está visible, pulse la
tecla F4. Seleccione la hoja adecuada y busque la propiedad ScrollArea en la ven-
tana de propiedades (véase figura 1.12).
Introduzca entonces en el cuadro de texto de dicha propiedad los límites para
la hoja (por ejemplo, $A$1:$G$50).
Una vez hecho esto, no podrá desplazarse fuera del área que haya especifica-
do. Por desgracia, Excel no guarda esta configuración después de cerrarse. Esto
significa que necesitamos u n a simple macro que automáticamente establezca el
área de desplazamiento al rango deseado, escribiendo el código para el evento
worksheet_Activate.
Para ello, haga clic con el botón derecho sobre la pestaña de la hoja en la que
desea limitar el desplazamiento y seleccione la opción Ver código, introduciendo
a continuación:
?
;'^X]|
J J 0
Jg$ EuroTocJOEL^
¿ VBAProject (Libro7)
j $ VBAProject (LibroS)
\ Microsoft E • cel übietos
S ] H o i a l (Hoial)
H] Hoia2 (Hoia2)
IT] Hoia3 (Ho]a3)
Q ThisWorlbool
Hoja3 Worksheet
Alfabética j p o r categorías ]
(Ñame)
DisplayPageBreaks
DisplayRightToLeft
EnableAutoFilter
EnableCalculation
EnableOutlining
EnablePivotTable
EnableSelection
Ñame
StandardWidth
Visible
ActiveSheet.ScrollArea = ""
ActiveSheet.ScrollArea = "$A$1:$G$50"
ActiveSheet.ScrollArea = ""
Range("Z100").Select
Selection.Font.Bold = True
ActiveSheet.ScrollArea = "$A$1:$G$50"
Sheets("Presupuesto diario").Select
ActiveSheet.ScrollArea = ""
Range ("T500").Select
Selection.Font.Bold = False
ActiveSheet.ScrollArea = "$A$1:$H$25"
End Sub
Sub ResetScrollArea( )
ActiveSheet.ScrollArea = ""
End Sub
1. Reducir la frustración en los libros y en las hojas de cálculo 51
haga clic en Aceptar. Una vez estén seleccionadas las celdas con las fórmulas,
vaya a Formato>Celdas>Proteger y active la casilla de verificación Bloqueada.
Haga clic en Aceptar. Ahora seleccione la opción Herramientas>Proteger>Proteger
hoja para proteger la hoja de cálculo y utilizar u n a contraseña si es requerida.
iHgiaiafl—i
Seleccionar
^ Comentarios <"" Diferencias entre filas j
<"*" Constantes f Diferencias entre columnas (1) j
!
'*" iCeldas con fórmulas i <~ Celdas precedentes j
í¡? Números (" Celdas dependientes j
f? Texto r
f? Valores lógicos c
f? Errores '"* Última celda
^ Celdas en blanco f~" Sólo celdas visibles (2)
r
Región actual '• ' Celdas con formatos condicionales
f l
' Matriz actual '"" Celdas con validación de datos
''" Obietos r
r
1 Aceptar J Cancelar ] j
Para ver a qué nos referimos, seleccione cualquier celda, seleccione la opción
Edición>lr a y luego haga clic en el botón Especial. Ahora seleccione la opción
Celdas con fórmulas en el cuadro de diálogo y, si es necesario, especifique que
tipos de fórmulas desea buscar. Haga clic en el botón Aceptar.
Ahora que sólo tenemos seleccionadas las celdas con fórmulas, seleccione la
opción Datos>Validación y en la pestaña Configuración seleccione la opción Per-
sonalizada en el cuadro de lista desplegable, y en el cuadro de texto Fórmula es-
1. Reducir la frustración en los libros y en las hojas de cálculo 53
criba ="", tal y como se muestra en la figura 1.14. Luego haga clic en el botón
Aceptar.
MBHIMSS^^^^^^^- • 2SJ
Configuración j Mensaje entrante j Mensaje de error j
Criterio de validación
Permitir:
| Personalizada jrj P? Omitir blancos
Datos:
1
Fórmula:
J
k i
! r . . .
Borrar todos j | Aceptar j Cancelar j ;
=CONTAR.SI($A$1:$H$100;A1)>1
=CONTAR.SI($A$1:$H$100;A2)>1
En la celda A3 se leería:
=CONTAR.SI($A$1:$H$100;A3)>1
y así sucesivamente.
Si necesita identificar datos que aparecen dos o más veces, puede utilizar el
formato condicional con tres condiciones diferentes y códigos de color para cada
u n a de las condiciones, todo ello para conseguir u n a identificación visual. Para
hacer esto, seleccione la celda Al (la celda que está situada en la parte superior
izquierda de la tabla) y arrastre el cursor del ratón hasta la celda H100. De n u e -
vo, es importante que la celda Al sea la celda activa en la selección.
Ahora seleccione la opción Formato>Formato condicional y seleccione la op-
ción Formato en el cuadro de lista desplegable. En el cuadro de texto situado a su
derecha, introduzca el siguiente código:
=C0NTAR.SI($A$1:$H$100;A1)>3
Haga clic en el botón Formato... y luego vaya a la pestaña Tramas para selec-
cionar el color que desee aplicar para identificar los datos que aparecen más de
tres veces. Haga clic en Aceptar, luego haga clic en el botón Agregar y en el
cuadro de lista desplegable para la Condición 2, seleccione la opción Fórmula y
luego escriba el siguiente código en el cuadro de texto situado a su derecha:
=CONTAR.SI($A$1:$H$100;A1)=3
mente tres veces. Haga clic en A c e p t a r y luego haga clic en Agregar. En el cua-
dro de lista desplegable de la Condición 3, seleccione la opción Fórmula y escriba
lo siguiente en el cuadro de texto situado a su derecha:
=CONTAR.SI($A$1:$H$100;A1)=2
tes razones, la mayoría de las veces por mover o copiar gráficos, hojas de gráficos
u hojas a otros libros. Aún así, saber dónde están no siempre le ayudará a encon-
trarlos. A continuación le mostramos algunas alternativas para solucionar el
problema de los vínculos fantasmas.
Primeramente, debe comprobar si realmente tiene vínculos externos (que no
son fantasmas), de los cuales nos olvidaremos. Si no está seguro, si tiene víncu-
los externos reales, comience buscando en el lugar más obvio: las fórmulas. Pue-
de hacer esto asegurándose de que no hay otros libros abiertos y entonces buscando
por [*] dentro de las fórmulas de cada hoja. Cierre todos los demás libros para
asegurarse de que cualquier vínculo de fórmula incluirá [*], donde el asterisco
representa el carácter comodín de búsqueda.
Una vez que haya encontrado los vínculos de fórmula, simplemente cambie
la fórmula de forma adecuada o bien elimínela. Cambiar o eliminar la fórmula
depende de la situación y debe ser usted el que decida qué hacer. También puede ir
al centro de descargas de Microsoft Office, ubicado en http://office.microsoft.com/
Downloads/default.aspx y desde la categoría de complementos, seleccionar el
Asistente de eliminación de vínculos. Este asistente está diseñado para encontrar
y eliminar vínculos tales como vínculos de nombres definidos, vínculos de n o m -
bres ocultos, vínculos a gráficos, vínculos a consultas de Microsoft y vínculos a
objetos. De todas formas, por nuestra experiencia, no es capaz de encontrar vín-
culos fantasmas. Una vez que esté seguro de que no hay vínculos de fórmula,
debe asegurarse de que no tiene ningún otro vínculo que no sea fantasma. Para
ello, solemos comenzar desde el libro de Excel que contiene los vínculos fantas-
mas. Seleccione la opción lnsertar>Nombre>Definir. Desplácese a lo largo de la
lista de nombres seleccionando cada u n o de ellos y mirando en el cuadro de texto
Se refiere a situado en la parte inferior. Asegúrese de que ninguno de estos n o m -
bres está haciendo referencia a un libro diferente.
En vez de tener que hacer clic en cada nombre, puede insertar una
nueva hoja y seleccionar la opción lnsertar>Nombre>Pegar. Luego,
desde el cuadro de diálogo, haga clic en Pegar vínculo. Esto creará
una lista de todos los nombres de libro, con sus rangos referenciados
en la columna correspondiente.
60 Excel. Los mejores trucos
Antes de hacer estos arreglos, haga siempre una copia del libro por
seguridad.
/
Para asegurarse de que no se pierde nada, muestre todas las hojas que puedan
estar ocultas seleccionando la opción Formato>Hoja>Mostrar. En caso de que la
opción esté desactivada, es que no tiene hojas ocultas por las que preocuparse.
Teniendo todas las hojas visibles, comience por la hoja que esté más a la izquier-
da y vaya recorriendo u n a a u n a hacia la derecha. Para cada u n a de ellas, elimí-
nela, guarde el libro y anote el tamaño del mismo a través de Archivo>Propiedades>
General. Si el t a m a ñ o del archivo se reduce drásticamente considerando la canti-
dad de datos que había en dicha hoja, entonces es que probablemente haya en-
contrado el p u n t o de corrupción.
Para reemplazar una hoja corrupta de un libro, cree u n a nueva hoja, seleccio-
ne manualmente los datos situados en la hoja corrupta, corte (no utilice nunca
copiar) y pegue dichos datos en la nueva hoja. Entonces elimínela hoja corrupta,
guarde y repita el proceso.
Aveces los libro se corrompen sin ninguna razón aparente. Esto puede provo-
car todo tipo de problemas, especialmente si el libro es vital y por cualquier ra-
zón no tiene u n a copia de seguridad. Lección 1: siempre haga u n a copia de
seguridad de los datos en algún otro lugar. Siendo realistas, esto no siempre ocu-
rre y puede que la corrupción se produzca justo antes de que se realizase u n a
copia de seguridad regular. Para añadir más frustración, aunque un libro este
corrupto, a veces es posible abrirlo e incluso realizar ciertas acciones en él.
Trucos
sobre las características
incorporadas en Excel
Trucos 16 a 38
En este truco proporcionaremos dos métodos que puede utilizar para validar
datos basándose en u n a lista que está situada en otra hoja. El primer método
hace uso de los rangos con nombre que ofrece Excel (que veremos con más deta-
lle en el capítulo 3) y el segundo utiliza u n a llamada a u n a función.
Asegúrese de que está activada la casilla de verificación Celda con lista desple-
gable y entonces haga clic en el botón Aceptar. En ese momento debería aparecer
la lista ubicada en la Hojal en la lista desplegable de validación.
Si el nombre de la hoja en la que está ubicada la lista contiene espacios en
blanco, necesita utilizar la función INDIRECTO de la siguiente forma:
=INDIRECTO("'Hoja 1'!$A$1:$A$8")
MWWIWfflffl jxj
Condición i
Fórmula _ j Ü
Valor de la celda
| - H q u e desea usar
Sin formato establecido Formato,.,
^BSTv-erdadera:
Para entender de lo que estamos hablando, pruebe este sencillo ejemplo, que
oculta los datos utilizando el formato condicional y u n a casilla de verificación.
Utilizaremos el rango $A$1 :$A$10, que está rellenado consecutivamente con los
números del 1 al 10. Para insertar u n a casilla de verificación desde la barra de
h e r r a m i e n t a s F o r m u l a r i o s , seleccione la opción de m e n ú Ver>Barras de
herramientas>Formularios y luego haga clic en el icono de casilla de verificación.
A continuación haga clic cerca de la celda Cl situada en la hoja para insertar la
casilla de verificación. Haga clic con el botón derecho del ratón en la casilla de
verificación y seleccione la opción Formato de control. Luego vaya a la pestaña
Control y escriba Cl en el cuadro de texto Vincular con la celda, tal y como se
muestra en la figura 2.2, y finalmente haga clic en Aceptar.
Cuando seleccione la casilla de verificación que está sobre la celda Cl, devol-
verá VERDADERO o FALSO a dicha celda. Como no tenemos interés en ver dicho
valor en la celda, cambie el color de la fuente a blanco. Ahora seleccione las celdas
$A$1:$A$10, comenzando por A l . Seleccione Formato>Formato condicional y
luego elija la opción Fórmula en el primer cuadro de lista desplegable. En el cua-
dro de texto de la derecha, escriba = $ C $ 1 . A continuación, haga clic en el botón
Formato..., luego seleccione la pestaña Fuente y cambie el color de fuente a blanco.
Finalmente, haga clic en A c e p t a r y de nuevo en Aceptar.
Seleccione la casilla de verificación para activarla, y entonces el color de la
fuente de las celdas en el rango $A$1 :$A$10 cambiará automáticamente al color
blanco. Si desactiva la casilla de verificación, entonces volverá a su color normal.
II •Il'lll xjl
Colores y líneas j Tamaño Proteger | Propiedades ¡ Web Control
Valor
(• Sin activar
{
~~ Activado
£"" Mixto
i"" Sombreado 3D
Aceptar J Cancelar
1 •* (ilíffililffflB^^ •
lU archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? - - fl x
=Y($A2>=PrimerNum;$A2<=SegundoNum;CheckBoxLink)
I J 1 W B Illlill MI 1 1 1 1 ' ! Mi
MBEZm^: x|;
Condición I
El código VBA para esta función personalizada (también llamada función de-
finida por el usuario) le permite identificar las celdas que contienen fórmulas sin
necesidad de tener que hacer clic en 10.000 celdas y examinarlas u n a a una. Para
crear un cazador inteligente de fórmulas, comience seleccionando la opción
Herramientas>Macro>Editor de Visual Basic ( A l t / O p c i ó n - F l l ) y luego seleccione
lnsertar>Módulo. Entonces introduzca la siguiente función:
Function IsFormula(Check_Cell As Range)
IsFormula = Check_Cell.HasFormula
End Function
B
M Contar o sumar celdas que se ajustan al criterio
W del formato condicional
^H Después de ver los resultados del formato condicional, quizá desee crear
fórmulas que hagan referencia solamente a los datos que han sido
formateados condicionalmente. Este no entiende bien este tipo de cálculos,
pero puede aprender a hacerlo.
Normalmente los usuarios de Excel se preguntan: "¿Cómo puedo hacer cálcu-
los solamente en las celdas que tienen un color de fondo en especial?". Esta cues-
2. Trucos sobre las características incorporadas en Excel 77_
tión surge a menudo porque Excel no dispone de u n a función estándar para lle-
var a cabo esta tarea. Sin embargo, se puede hacer utilizando u n a función perso-
nalizada, como ya veremos posteriormente en otro truco.
El único problema que surge al utilizar u n a función personalizada es que no
utiliza cualquier formato que se haya aplicado mediante el formato condicional.
Sin embargo, pensando un poco más, podrá obtener los mismos resultados sin
tener que utilizar u n a función personalizada.
Digamos que tiene u n a larga lista de n ú m e r o s en el r a n g o de celdas
$A$2:$A$100. Ha aplicado un formato condicional a estas celdas de forma que
cualquier número que esté entre 10 y 20 esté marcado. Entonces tiene que aña-
dir el valor de las celdas que se ajusten al criterio que acaba de establecer y luego
realizar la suma de dichos valores utilizando el formato condicional. No tiene
que preocuparse por el formato condicional que ha aplicado a esas celdas, pero
necesita conocer el criterio que fue utilizado para marcarlas (en este caso, aque-
llas celdas cuyos valores están entre 10 y 20).
Puede utilizar la función SUMAR. SI para añadir un rango de celdas que se
ajusten a un cierto criterio, pero sólo a uno. Si necesita utilizar más de un factor
en el criterio, puede utilizar u n a fórmula matricial.
Puede utilizar u n a fórmula matricial de esta forma:
=SUMA(SI($A$2:$A$10 0>10;SI($A$2:$A$10 0<20;$A$2:$A$10 0)))
Una alternativa
Como alternativa, puede utilizar u n a columna de más (por ejemplo, la co-
lumna B) para hace referencia a las celdas de la columna A. Las referencias devol-
verán resultados en la columna B sólo si el valor cumple las condiciones que
haya establecido, por ejemplo,>10 y < 2 0 . Para hacer esto, siga estos pasos:
Seleccione la celda B l e introduzca la siguiente fórmula:
=SI(Y(A2>10;A2<20);A2;"")
78 Excel. Los mejores trucos
Propague esta fórmula a cada celda, llegando a la B100. Después debe rellenar
los valores, debería tener los valores en la columna B que estén entre 10 y 20.
BDSUMA es el método preferido y más eficaz para trabajar con celdas que de-
ben cumplir un cierto criterio. A diferencia de las matrices, las funciones de base
de datos incorporadas están diseñadas específicamente para este propósito, e in-
cluso cuando hacen referencia a un rango m u y amplio y se utilizan con grandes
números, los efectos negativos que provocan en el rendimiento son mucho me-
nores que los provocados por las fórmulas matriciales.
Figura 2.5. Cuadro de diálogo del formato condicional con la fórmula RESIDUO,
para especificar un formato a cada fila par.
Haga clic en el botón Formato... y elija el formato que desee aplicar a cada
fila par, haga clic en Aceptar y luego haga clic otra vez en Aceptar. Entonces el
formato que haya especificado debería aplicarse a cada fila par situada en el
rango Al :H100. Con esto ya puede reservarse parte de su paciencia para el resto
del día.
Si desea utilizar este método con las columnas en vez de con las filas, utilice
esta fórmula:
=RESIDUO(COLUMNA();2)
Aunque este método aplica el formato especificado a cada fila o columna par
de forma rápida y sencilla, no es dinámico. Las filas que no contengan datos
seguirán teniendo el formato especificado. Esto puede no resultar ideal y hacer
que la lectura de la hoja de cálculo sea algo más difícil. Hacer que el resaltado de
filas o columnas sea dinámico, requiere de un truco un poco más sofisticado.
Nuevamente, seleccione el rango A1:H100, asegurándose de que la celda Al
sea la activa. Entonces vaya a Formato>Formato condicional y seleccione la op-
ción Fórmula en el cuadro de lista desplegable. Luego, en el cuadro de texto de la
derecha, introduzca la siguiente fórmula:
=Y(RESIDUO(FILA();2);CONTARA($A1:$H1))
80 Excel. Los mejores trucos
nado el segundo borde más grueso, por lo que esta vez haga clic en los otros dos
bordes que quedan por seleccionar en la celda, es decir, el izquierdo y el superior.
Vaya a la pestaña Tramas y seleccione el sombreado gris para la celda. Haga clic
en Aceptar y quite la selección de la celda D5. Ahora debería ver cómo la celda
D5 tiene un efecto relieve que le da un aspecto de botón. Todo ello lo hemos
conseguido utilizando los bordes y el sombreado.
Si, por diversión o por dar variedad, desea dar a u n a celda la apariencia de
estar presionada, seleccione por ejemplo la celda E5 (porque es la que está j u n t o a
la D5 y hace que funcione este ejemplo). Vaya a Formato>Celdas>Bordes, selec-
cione el segundo borde más grueso para los estilos de línea y asegúrese de que el
color elegido es el negro.
Aplique el formato a los bordes superior e izquierdo de la celda. Seleccione el
color blanco y aplique la línea blanca a los bordes derecho e inferior de la celda.
Haga clic entonces en la pestaña Tramas y cambie el formato de la celda a gris.
Haga clic en Aceptar y podrá ver cómo la celda aparece con el efecto de estar
presionada. Este efecto es más impresionante si se contrasta con el efecto de la
celda D5, que está en relieve.
i C : D E F G H i J p-^7~^
SlllliMñSí l É l i l l l l ^
SiliiiiliSiSII^
MM^IM ^SSimWM&MB
Normalmente permitirá que los usuarios introduzcan datos, que de otra for-
ma no podrían, desactivando el formato condicional o la validación de datos para
dichos celdas. De todas formas, existe u n a forma sencilla para hacer esto: puede
combinar u n a simple casilla de verificación con la validación de datos.
Para este ejemplo, aplicaremos un formato condicional a un rango de celdas
de forma que cualquier dato que aparezca más de u n a vez quedará resaltado
para su fácil identificación. Supondremos que la tabla de datos se extiende por el
rango $A$1 :$H$100. Para aplicar un formato condicional a este rango de forma
que se puedan identificar los duplicados, hacen falta unos cuantos pasos.
Primeramente seleccione la celda Kl y déle el nombre CheckBoxLink escri-
biendo dicho nombre en el cuadro de nombres de la parte superior izquierda de la
pantalla. Si la barra de herramientas Formularios no está visible, muéstrela. En-
tonces haga clic en el icono correspondiente a la casilla de verificación. Luego
2. Trucos sobre las características incorporadas en Excel 83
haga clic en cualquier lugar de la hoja de cálculo que esté fuera del rango ante-
riormente citado para añadir la casilla de verificación.
Haga clic con el botón derecho en la casilla de verificación y seleccione la op-
ción Formato de control. Luego vaya a la pestaña Control y escriba, en el cuadro
de texto, "CheckBoxLink" y haga clic en Aceptar. Seleccione la celda A l , y sin
soltar el botón del ratón, seleccione un rango hasta la celda H100. Es importante
que la celda Al sea la activa en la selección. Vaya a Formato>Formato condicio-
nal, seleccione la opción Fórmula en el cuadro de lista desplegable e introduzca la
siguiente fórmula en el cuadro de texto situado a su derecha (tal y como se muestra
en la figura 2.7):
=Y(CONTAR.SI($A$1:$H$10 0 ; A 1 ) > 1 ; C h e c k b o x L i n k )
2S¡\
Condición i
| Fórmula j * | | = V(CONT AR. 5I($ A$ 1: $H$ 100.; A1) > 1.; CheckboxLink) 1¡
Vista previa del formato que desea usar
cuando la condición sea verdadera:
áÉÜkC&&* ' 'y |[Formato... jj j
Figura 2.7. Cuadro de diálogo de formato condicional con la fórmula que da formato
resaltando los valores duplicados.
B C
1 1 Lunes Enero Esta celda contendrá los números f-
2 2 Martes Febrero 1, 2 ó 3, dependiendo del botón
3 3 Miércoles Marzo [de opción seleccionado
4 4 Jueves Abril Esta celda reflejará el elemento
5 5 Viernes Mayo elegido en el cuadro de lista
6 6 Sábado Junio $C$1:$C$? I desplegable., y se puede usar-
7 Domingo Julio corno el argumento necesario
7
para la fórmula de búsqueda
3
9 Mayo
10 l
11
12 I Esta dirección cambiará con cada
13 O Números selección realizada en los botones de
opción, provocando que la lista del
14
O' Días de la semana cuadro desplegable cambie
15
16 '$• Meses
17
13
19
20
Hi • •! Hojal / Hoja2 / Hoja3 / ¡D
Figura 2.8. Cuadro de lista desplegable con múltiples listas controlado por botones
de opción.
=INDIRECTO($E$6)
Haga clic en A g r e g a r y luego en Aceptar. Haga clic con el botón derecho del
ratón en el cuadro de diálogo que añadimos anteriormente y seleccione la opción
Formato de control. En la pestaña Control escriba "MiRango" en el cuadro de texto
Rango de entrada y la celda $G$1 como vínculo. Pulse entonces el botón Acep-
t a r . Ahora debería ser capaz de seleccionar u n o de los botones de opción, con lo
que la lista contenida en el c u a d r o de lista desplegable debería reflejar
86 Excel. Los mejores trucos
_A_ B p=f
LU
['•v^^g^:;. i-=..-;-:-| D F
í í
2 i
La tote eofecWM co« la Mi efe
Seleccione un objeto tí/cfto objeto que se encuentra
3 | e#i ta ho¡ja "Listas**
"4 i
15 1 Sofá
I H
• • • |
! 6 !
7 ;
8 !
9 i
10]
H < • • l \ Hoja! XHoja2/Hojas'/ ~ ""' • üJ J •ir
Listo NUM
Puede forzar a que la validación de datos haga referencia a u n a lista que está
situada en otra hoja, existiendo para ello dos posibles aproximaciones: rangos
con nombre y la función INDIRECTO.
utilizar esta característica para hacer referencia a la hoja en la que reside la lista.
Supongamos que la lista está situada en la Hojal en el rango $A$1 :$A$10. Haga
clic en cualquier celda de otra hoja en la que desee tener esta lista de validación.
Entonces seleccione Datos>Validación y seleccione la opción Lista del cuadro de
lista desplegable.
En el cuadro de texto Origen escriba la siguiente función:
= INDIRECTO("Hoj a l ! $ A $ 1 : $ A $ 1 0 " )
Recuerde que los números en Excel están alineados a la derecha de forma pre-
determinada, mientras que los textos se alinean a la izquierda. Una forma senci-
2. Trucos sobre las características incorporadas en Excel 91
=IZQUIERDA(Al;ENCONTRAR(" ";A1)-1)
Esto obligará a que el valor devuelto sea un verdadero número, por lo que
quedará alineado a la derecha de forma predeterminada. Todo lo que queda por
hacer ahora es dar formato a la celda de forma adecuada. Otro de los problemas
que pueden surgir en relación con los textos y números es cuando mezcla texto y
números en u n a misma celda, pero sin haber u n a forma de extraer la parte n u -
92 Excel. Los mejores trucos
mérica (como ocurría en el caso anterior). En este caso, tendremos que utilizar
u n a función personalizada que extraiga la parte numérica de la cadena de texto.
Para crear dicha función personalizada, pulse A l t / O p c i ó n - F l l , seleccione
lnsertar>Módulo e introduzca el siguiente código:
Function ExtraerNumero(rCell As Range)
Dim ICount As Long, L As Long
Dim sText As String
Dim lNum As String
sText = rCell
ExtraerNumero = CLng(lNum)
End Function
Salga del editor y vuelva a la ventana principal de Excel. La función que aca-
bamos de crear aparecerá en la categoría de funciones definidas por el usuario.
Utilícela tal y como se muestra en la figura 2.10.
A B C
1 dfgd878sdd77dd 87877 =ExtraerNumero(A1)
2 jtjt330dfll33 33033 =ExtraerNumero(A2)
3 ¡fdkfjk332kki9Ü2 332902 =ExtraerNurnero(Á2i
% ÉP
:
Configuración de sombra.,,
Una última cosa que puede hacer con los comentarios de celdas es extraer el
texto que contienen y hacer que aparezca dentro de u n a celda. Para ello, tendre-
mos que crear una sencilla función personalizada en un módulo estándar. Vaya
al Editor de Visual Basic ( A l t / O p c i ó n - F l l ) e inserte un n u e v o m ó d u l o
(lnsertar>Módulo). A continuación escriba el siguiente código:
Para este ejemplo, supondremos que tiene datos relacionados en las columnas
A, B, C, D y E, y que desea ordenar estos datos por ese mismo orden. Para poder
2. Trucos sobre las características incorporadas en Excel 95
hacer esto, debe poder ordenar de atrás a adelante, es decir, ordenar por el último
campo primero y luego ir hacia atrás hasta el primer campo.
Seleccione desde la c o l u m n a A h a s t a la c o l u m n a E y entonces v a y a a
Datos>Ordenar. Seleccione el criterio de ordenación para que primero se ordene la
columna C, luego D y luego E. Haga clic en Ordenar. Ahora seleccione desde la
columna A a la columna E y vaya a Datos>Ordenar. Esta vez ordene primero por
la columna A y luego por la B. Haga clic en Ordenar. Con esto hemos conseguido
que Excel ordene las columnas por cinco campos en vez de por tres.
Si desea automatizar esta tarea, puede utilizar u n a macro que ordene la selec-
ción y que reconozca si los datos poseen encabezados de columna, en base al
formato de la primera fila de la selección. Si los encabezados están en negritas,
Excel sabrá que son encabezados de columna y no los ordenará. Por otro lado,
ordenará primero por la columna que esté más a la izquierda y así sucesivamen-
te para el resto de columnas, hasta llegar a un máximo de 256.
El código de la macro que necesitamos debe ser colocado en un módulo estándar.
Para ello, vaya a la opción Herramientas>Macro>Editor de Visual Basic, luego
vaya a lnsertar>Módulo e introduzca el siguiente código:
Sub OrdenarPorX( )
Dim L As Long
End Sub
Para volver a Excel, cierre de esta ventana o bien pulse Alt/Comando-(X Ahora
ya podrá realizar ordenaciones mucho más complicadas que las que ofrece Excel.
n Ordenación aleatoria
E ^H Puede hacer que Excel escoja los tres primeros ganadores, elegidos
^H aleatoriamente de una lista de una hoja de cálculo. El método más sencillo
^™ y rápido para hacer esto es utilizar la función ALEATORIO de Excel, en
combinación con las funciones de ordenación.
Supongamos que tiene u n a tabla con tres columnas en la hoja de cálculo,
comenzando por la columna B, y que contienen en este orden: Nombre, edad y
N° de Id. Coloque la función ALEATORIO en la celda A2 y propagúela hacia abajo
tantas filas como necesite.
Cuando haga esto, cada u n a de las celdas de la columna A devolverá un n ú -
mero aleatorio por el cual puede ordenar la tabla. En otras palabras, si ordena las
96 Excel. Los mejores trucos
_ 1 _ A I §. C \ . P... ! E I F
1 ; Nombre Edad N° Id Posición Escoger Ganadores
!
2 ; David 32 11343 1
3 lAlex 30 11543 2
4 ;Ana 23 11345 3
5 \ Marta 36 11234
6 Juan 25 11321
7 !Santos 30 11545
8 Laida 31 11656
9 Mar 30 11451
10 Luis 28 11331
11
12'
-Inl 1
•ájjj Archivo Edición Ver Insertar Formato Herramientas Datos Ventana
A B C D E | F G H 1 T
1
2
Nombres ¡Tasa
¡>16,00
—
3 ¡< 15J30
11 ipiíwraffiM^v •?' - J<l
4 | Acción
5 Nombres Tasa Edad f* Filtrar la lista sin moverla a otro lugar
6 David $ 17,00 32 <""" Copiar a otro lugar
7 Alex $ 12,25 30
Rango de la lista: j$A$5:$C$14
8
9
Ana
Marta
$ 21,20 23
3
10 Juan
$ 18,00
% 16,50
36
25
Rango de criterios: j^B$l:$B$3
31
11 Santos
12 Laida
$ 21,00
$ 10,80
30
31
1 "3
f~ Sólo registros únicos
13 Mar $ 15,50 30
14 Luis $ 13,20 28
1 Aceptar j Cancelar
15
16
17 —
18
w
M 4 • H \ Hojal X Hoja2 / HojaS X Hoja4 X HojaS XHoja6/ |< | •ir
A5
A B C D E | F G H 1 —
1
2
Nombres
D*
Nombres
L*
~~~
3 lilHPJl¡!¿i^1.: 2<j
4 Acción
5 Nombres Tasa Ed ad (• Filtrar la iista sin moverla a otro lugar
_ , David % 17,00 32* r
" Copiar a otro lugar-
Laida % 10,80 31 ¡
15 Rango de la lista: |$A$5:$C$14
3d
16
17
Rango de criterios: j$A$l:$B$2 "3
18 1 31
19
f Sólo registros únicos
70
21
1 Aceptar j Cancel ar
22
23
24 —
25
w
H 4 • •! \ Hojal X Hoja2 X Hoja3 X Hoja4 X H ° í a 5 XHoja6\Hoja7/' j«| 1 •ir
Los dos ejemplos anteriores muestran algunos de los usos simples que se pue-
den hacer de la herramienta de filtrado avanzado y que también se podrían rea-
lizar utilizando la función de filtrado a u t o m á t i c o , si fuera necesario. A
continuación presentaremos algunos ejemplos de la utilización del filtro avanza-
do en los que no sería posible utilizar el Autofiltro.
Una vez que aplique el filtro avanzado a esto y utilice la opción Copiar en otra
ubicación, la recién creada lista contendrá todos los nombres que aparecen más
de u n a vez en la lista original (véase figura 2.16). Muchos de estos nombres
estarán repetidos numerosas veces, pero puede filtrar fácilmente esta nueva lista
de nuevo utilizando el filtro avanzado, aunque esta vez seleccionando la opción
Sólo los registros únicos (véase figura 2.17).
Esto le proporcionará un listado de nombres que aparecen en la lista más de
u n a vez.
100 Excel. Los mejores trucos
Ojx]
¿áj Archivo Edición Ver Insertar Formato Herramientas Datos Ventana fi> x
4) '••'"'• - ^ g
A2 f* =CQNTAR.SI($At5:$A$2Q;AB)>1
H
1 Criterio
2 IVERDADEROl
3 J£Í
4 Nombres Nombres Acción
5 David David f Filtrar la lista sin moverla a otro lugar
6 Alex Alex (• ¡Copiar a otrolugar]
7 Ana Marta
8
9
Marta
Juan
Juan
Mar
Rango de la lista: j$A$4:$A$500
"3
Rango de criterios: ]$A$1:$A$2
10 Santos Marta
Copiar a: |$C$4
11 Laida David
12 Mar Juan
* Sólo registros únicos
13 Luis Mar
14 Marta Alex
Aceptar
15 David
16 Juan
17 Antonio
18 Mar
19 Alex
H 4 • H / Hoja2 / Hoja3 / Hoja4 /.Hoja5 / Hojaó / Hoja? X H o J a 8 / ir
Figura 2 . 1 6 . Usar el filtro avanzado para extraer los nombres de u n a lista en la que
aparecen más de u n a vez.
A B C D E F | G H 1 "d
1 Criterio
2 FALSO
3
4 Nombres Nombres Nombres
lliWiiiliSIE^^ Xj
Antes de probar estos trucos, es importante que entienda cómo Excel mira los
formatos de u n a celda. Lo hace tomando las siguientes secciones (de izquierda a
derecha): Números positivos, números negativos, valores cero y valores de tipo
texto. Cada u n a de estas secciones está separada por un p u n t o y coma (;).
Cuando cree un formato de número personalizados, no necesitará especificar
las cuatro secciones. Es decir, si sólo incluye dos secciones, la primera será utili-
zada tanto para los números positivos como para los valores cero, mientras que
la segunda se utilizará para los números negativos. Si sólo incluye u n a sección,
todos los tipos de n ú m e r o utilizarán ese formato. Los textos se verán afectados
por el formato personalizado sólo cuando se incluyen las cuatro secciones (utili-
zando la última de ellos).
Si desea que los números negativos aparezcan en rojo, utilice este formato:
0 . 0 0_ ; [Rojo] ( - 0 . 0 0 )
Observe el uso del *. Esto hace que se repita el siguiente carácter en el formato
para rellenar el ancho de la columna, de forma que los textos "Bajo", "En la m e -
dia" o "Alto" se alinearán forzosamente a la derecha, mientras que el n ú m e r o
quedará a la izquierda.
2. Trucos sobre las características incorporadas en Excel 107
H
Crear listas personalizadas
Sí añade una lista personalizada a Excel, podrá escribir el primer elemento
de la lista, arrastrarlo utilizando el recuadro de propagación y ver cómo la
lista se rellena automáticamente.
Una de las funciones más populares que tiene Excel para ahorrar trabajo es la
posibilidad de incrementar no solamente números, sino también algunos textos
automáticamente. Normalmente, cuando utiliza el recuadro de propagación, es-
cribe el primer elemento y luego lo utiliza para rellenar las celdas con los si-
108 Excel. Los mejores trucos
Cuando está trabajando con u n a hoja de cálculo que contiene subtotales crea-
dos a partir de la opción Datos>Subtotales, éstos pueden ser m u y difíciles de iden-
tificar, haciendo que la hoja de cálculo no pueda leerse con facilidad. Esto es
especialmente cierto cuando utiliza esos Subtotales en u n a tabla de datos que
tiene muchas columnas.
Normalmente, los subtotales resultantes aparecen en la parte derecha, mien-
tras que sus encabezados asociados se sitúan en la primera columna. Dado que
los valores de esos subtotales no aparecen en negritas, puede ser difícil de alinear-
los visualmente con sus encabezados de fila. Puede hacer que sea mucho más
sencillo leerlos sí aplica un formato negritas a esos valores.
Para probar este problema, introduzca algunos datos de forma similar a los
que se muestran en la figura 2.19.
Ahora a ñ a d a los subtotales seleccionando la opción Datos>Subtotales,
aceptando los valores predeterminados del cuadro de diálogo y haciendo clic en
Aceptar.
En la figura 2.20, los encabezados de los subtotales están en negritas, pero
sus resultados asociados no. Dado que esta tabla sólo tiene dos columnas, no
resulta t a n difícil leer y encontrar las cantidades correspondientes a dicho subto-
tales.
2. Trucos sobre las características incorporadas en Excel 109
A B C
1 Trimestre Coste
2 Primero $10,00
3 Primero $20,00
4 Segundo $10,00
5 Segundo $10,00
6 Segundo $10,00
7 Tercero $15,00
8 Tercero $10,00
9 Tercero $25,00
í 10
11
Figura 2.19. Datos de una hoja de cálculo antes de añadir los subtotales.
r 2 3 ' - ' A ; a C
I" • 1 Trimestre Coste
1 [" • • 2 Primero $10,00
I J • 3 Primero $20,00
1 - 4 Total trimestrel $30,00
5 Segundo $10,00
6 Segundo $10,00
7 Segundo $10,00
1 -. 8 Total trimestre2 $30,00
9 ¡Tercero 1*15,00 |
• 10 Tercero $10,00
• 11 Tercero $25,00
1 - 12 Total trimestre3 $50,00
13 Total fin*il $110,00
14
15
Figura 2.20. Datos de la hoja de cálculo después de que se hayan aplicado los subtotales.
Sin embargo, cuantas más columnas tenga la tabla, más difícil será encontrar
visualmente esos subtotales. Puede solucionar este problema utilizando el for-
mato condicional de Excel. Usando la tabla de la figura 2.19 como ejemplo, prue-
be esto antes de añadir los subtotales. Seleccione las celdas Al :B9, asegurándose
de que la celda Al sea la activa. Entonces seleccione Formato>Formato condicio-
nal, luego elija la opción Fórmula del cuadro de lista desplegable y añada la si-
guiente fórmula:
= DERECHA ($A1;5)="Total"
Ahora añada los subtotales y verá cómo se parecen a los que se muestran en
la figura 2.21.
I 1 2 3 '• A B 1 C |
1 Trimestre Coste
2 Primero $10,00
3 Primero $20,00
4 Total tiimestiel $30,00
5 Segundo $10,00
6 Segundo $10,00
7 Segundo $10,00
8 Total trimestre2 $30,00
9 Tercero $15,00
10 Tercero $10,00
11 Tercero $25,00
12 Total tr¡mestre3 $50,00
13 Total final $110,00
| 15 |
Figura 2.21. Datos de la hoja de cálculo después de haber dado formato a los subtotales.
Una última cosa que debe recordar es que si elimina los subtotales, no se
volverá a aplicar la fuente en negrita.
_ " _ A B l C 1
[* • 1 Trimestre Coste
[ • 2 Primero $10,00
IM • 3 Primero $20,00
- 4 Total trimestrel $30.00
I" • 5 Segundo $10,00
|| | • 6 Segundo $10,00
NI • 7 Segundo $10,00
- 8 Totaí trimestrel $30.00
[ • 9 Tercero $15,00
• 10 Tercero $10,00
NI • 11 Tercero $25,00
j - 12 Total trimestre! $50.00
13 Total final $110,00
14
l 15 I
Figura 2.22. Datos de la hoja de cálculo con un total final más resaltado.
B
SE1 Convertir las fórmulas y funciones de Excel a valores
! ^ H La mayoría de las hojas de cálculo de Excel contienen fórmulas. Pero a
^H veces deseará que solamente el resultado de una fórmula quede
almacenado en una celda, en vez de dejar la fórmula, que hará que los
resultados se modifiquen cada vez que las celdas a las que haga referencia
lo hagan.
derecho del ratón (o haciendo clic mientras mantiene pulsada la tecla Control en
Macintosh), arrastre la selección a su destino, suelte el botón del ratón y selec-
cione, en el menú contextual que aparece, la opción Copiar aquí sólo valores.
También puede sobrescribir las fórmulas originales con sus propios valores. Para
ello, seleccione el rango de fórmulas y haga clic con el botón derecho del ratón
sobre el borde derecho o izquierdo de la selección (de nuevo, en cualquier lugar
excepto en el recuadro de propagación). Mientras mantiene pulsado el botón del
ratón, arrastre la selección u n a columna hacia la derecha o hacia la izquierda y
luego vuelva al rango original, soltando el botón del ratón y seleccionando la
opción Copiar aquí sólo valores, tal y como se muestra en la figura 2.23.
A1 ^.
- 10 - U M i ^ M m ~j$ -?| % ooo € *o§ •- * * - - ^i
f* =B1*C1
A B C D E i F ;
G H -^1
I 1 2 1 2
•\ 2 4 2 2
i 3 8 3 2
4 8 4 2
5 10 5 2
8 ,.10 .L-: .i
7 Mover aquí
8 Copiar aquí
9
10 I Copiar aquí sólo como valores
f
11 Copiar aquí sólo como formatos
12 Crear vínculo aquí
13
Crear hipervínculo aquí
14
15
16
17 —1
18
19 !
Cancelar
Hojall/ |<|
i •ir
Arrastre ias celdaspra :icr™„m™.™J Suma=42 NUM
[ A B I
! 1 Carlos Martínez
2 Antonio García
3 Mana Solans
4 Sergio Velase o
5 Silvia Rodríguez
6 Ángel Blanco
7 Esther Carrasco
8 Javier Pérez
9 Ana Rebollo
10 Guillermo Ortega
11
12
I 13
Figura 2.24. Configuración del libro de Excel para la lista de validación.
114 Excel. Los mejores trucos
A B
1 Carlos Martínez
2 Antonio García
3 María Solaris
4 Sergio Velasco
5 Silvia Rodríguez
6 Ángel Blanco
7 Esther Carrasco
i 8 Javier Pérez
9 Ana Rehollo
10 Guillermo Ortega
11 X
12 x
13 x
14 x
15 x
16 x
17 x
18 x
19 x
20 x
21
Figura 2.25. Lista junto con la fórmula añadida a las filas Al 1 :A20.
Nombres en el libro:
~J
Agregar
J
Se refiere a:
| =DESREF(Ho ja 1! $A$ 1.; 0.; 0; CONTAR, SI(Ho ja 1! $A; $A;" < »::").; 1) ~3
Figura 2.26. Hacer que la lista sea dinámica.
! A B C D | E
1 |Carlos Martínez ||Columna1 • ]
¡ 2 Antonio García 1* 1
3 María Solans
4 Sergio V'elasco
5 Silvia Rodríguez
6 Ángel Blanco
7 Esther Carrasco
8 Javier Pérez
9 Ana Rebollo
10 Guillermo Ortega
11 x
12 x
13 x
1 14 *
Figura 2.27. La lista con la validación añadida a la celda DI.
Haga clic con el botón derecho en la pestaña con el nombre de la hoja y selec-
cione la opción Ver código.
Entonces introduzca el siguiente código:
Prívate Sub Worksheet_Calculate( )
On Error Resume Next
Application.EnableEvents = False
Range("MisNombres") = Range("MisNombres").Valué
Application.EnableEvents = True
On Error GoTo 0
End Sub
Cierre esta ventana para volver a Excel y guardar los cambios. Ahora seleccio-
ne la celda D I , escriba cualquier nombre que no exista en la lista y pulse Intro.
Seleccione de nuevo la celda DI y observe la lista: verá como el nombre ha sido
añadido automáticamente, como puede verse en la figura 2.28.
Si desea añadir más de diez nombres a la lista, simplemente copie la fórmula
hacia abajo, a partir de la fila 20.
116 Excel. Los mejores trucos
I \ ~A : B c D E
I uanos Martínez Isitvia Rodríguez ^
¿ lAntonio García l|^ J
I 3 María Solans
4 Sergio Velasco
5 Silvia Rodríguez
I 6 Ángel Blanco
I 7 Esther Carrasco
8 Javier Pérez
9 Ana Rebollo
10 Guillermo Ortega
11 X
12 x
13 x
14 x
Figura 2.28. La lista después de añadir una nueva entrada en la celda DI.
60
60 minutos o 60 segundos
3600
60 segundos * 6 0 minutos
24
24 horas
1440
60 minutos * 24 horas
86400
24 horas * 60 minutos * 60 segundos
Sabiendo esto, encontrará mucho más sencillo manipular las horas y las fe-
chas. Eche un vistazo a los siguientes ejemplos para ver a qué nos referimos
(suponiendo que la hora este en la celda A l ) . Si tiene el número 5,50 y lo que
realmente quiere es 5:30 o 5:30 a.m., utilice esto:
=Al/24
y aplique el formato que sea necesario. Si tuvieron que ser las 17:30 o las
5:30 a.m., utilice esto:
=(Al/24)+0,5
o bien
=RESIDU0(A1;1)
Igualmente, cuando trabaje con horas, quizá desee contar desde u n a hora
inicial a u n a hora final, por ejemplo, conteniendo la celda Al el valor 8:50 p.m. y
la celda A2 el valor 9:50 a.m. Si calcula la resta de la hora final y la hora inicial
(=A2-A1), obtendrá # # # # # # # , ya que Excel, de forma predeterminada, no puede
trabajar con horas negativas. Para solucionar este problema, puede usar u n o de
estos dos métodos:
=MAX(A1;A2) -MIN ( A l ; A2 )
o bien
A1-A2 + IF (A1>A2;1)
También le puede decir a Excel que añada cualquier número de días, meses, o
años a u n a fecha en particular:
=FECHA(AÑ0(A1)+valorl;MES(Al)+valor2;DÍA(Al)+valor3)
Excel también ofrece algunas funciones adicionales que forman parte del pa-
quete de análisis. Para acceder a ellas, seleccione la opción Complementos del
menú Herramientas. Luego haga clic en la casilla de verificación Herramientas
para análisis para activarla y, cuando se le pregunte, responda que sí para insta-
larlas. A partir de entonces dispondrá de funciones adicionales, tales como
DIA.LAB, FIN.MES, NUM.DE.SEMANA, etc.
2. Trucos sobre las características incorporadas en Excel 119
Encontrará todas estas funciones dentro de la categoría Fecha y hora del asis-
tente para funciones. En realidad estas funciones son fáciles de utilizar. Lo que es
difícil es saber que están disponibles y cómo activarlas.
=Al + 0
o bien
=A1*1
puede ser utilizado otra vez para representar un rango que esté en otra hoja. Sin
embargo, existe u n a forma de solucionar esto.
Supongamos que tiene un libro que contiene tres hojas, cuyos nombres son
Hojal, Hoja2 y Hoja3. Desea tener un rango con el nombre "MiRango" (podría
ser cualquier otro nombre) que haga referencia al rango A1:A10 de la Hojal en
caso de estar situados en ella, al rango Al :A10 de la Hoja2 en caso de estar situa-
dos en ella, etc.
Para conseguir esto, active la Hojal, seleccione el rango Al :A10 y luego haga
clic en el Cuadro de nombres, como hicimos en el t r u c o anterior. Escriba
"Hojal IMiRango" y luego pulse la tecla Intro. Haga lo mismo para la Hoja2 y
Hoja3, escribiendo "Hoja2 IMiRango" y "Hoja3IMiRango" respectivamente. Ahora
active cualquier hoja y haga clic en la lista desplegable del Cuadro de nombres.
Debería ver tan sólo un elemento con el nombre MiRango. Selecciónelo y verá
como se selecciona directamente el rango A1:A10. Ahora active cualquier otra
hoja y haga lo mismo.
Observará como se selecciona automáticamente el rango A1:A10 de la hoja
que tenga activa. Esto es posible porque hemos introducido el nombre de la hoja
seguido del signo de a d m i r a c i ó n a n t e s del n o m b r e del r a n g o . Si va a
lnsertar>Nombre>Definir, sólo verá un nombre: aquel que se refiere a la hoja que
se encuentra activa en este momento.
En caso de que el nombre de la hoja incluya espacios, no podrá hacer la refe-
rencia simplemente escribiendo "Hoja 1 IMiRango". Tendrá que escribir "'Hoja
1'IMiRango", es decir, escribiendo comillas simples antes y después del nombre de
la hoja. De hecho, podría utilizar esas comillas simples aunque el nombre de la
hoja no contuviese espacios, lo cual siempre es u n a buena idea para usar siempre
la misma nomenclatura.
También puede utilizar un nombre de rango con referencias relativas. De for-
ma predeterminada, los nombres de rango son absolutos, pero no tiene porqué
ser así. Intente lo siguiente:
Seleccione la celda A l l de cualquier hoja y luego vaya a lnsertar>Nombre>
Definir. En el cuadro de texto Nombres en el libro, escriba "MisNúmeros". En el
cuadro de texto Se refiere a, escriba =A$1: A$10 y luego haga clic en Agregar y
en Aceptar. Ahora introduzca el número 1 en la celda A l . Selecciónela y coloque
el cursor del ratón sobre el pequeño recuadro situado en la esquina inferior dere-
cha, que se utiliza para propagar. Haga clic en él y, mientras mantiene pulsada la
tecla Control, arrastre el cursor hasta la celda A10.
Al mantener pulsada la tecla Control mientras que se propaga u n a celda con
un único número, Excel incrementa dicho n ú m e r o de 1 en 1.
Ahora introduzca un 1 en la celda Bl y propagúela hasta la celda B10, pero
esta vez sin mantener pulsada la tecla Control.
126 Excel. Los mejores trucos
> El signo del dólar ($) obliga a que cualquier rango sea absoluto.
Obtendrá los mismos resultados que la vez anterior, pero esta vez sin que sea
necesario utilizar la función SUMA. Mezclar las referencias absolutas que relati-
vas y j u n t a n d o algunas funciones puede ser m u y útil para ahorrarse gran canti-
dad de trabajo.
3. Trucos sobre nombres 127
Supongamos que tiene un impuesto del 10%, que se necesita utilizar a lo lar-
go de todo el libro para algunos cálculos. En vez de tener que introducir el valor
10% (0,1) en cada u n a de las fórmulas que aplican este impuesto, podría intro-
ducir la palabra "Impuesto" y que Excel supiese automáticamente que debe susti-
tuirlo por el valor 0 , 1 . Veamos cómo puede hacerse esto.
Seleccione lnsertar>Nombre>Definir. En el cuadro de texto Nombres en el libro
escriba "Impuesto" y en el cuadro de texto Se refiere a introduzca = 0 , 1 . Luego
haga clic en Aceptar.
Ahora, puede introducir cualquier fórmula en u n a celda y en vez de añadir
10% como parte del cálculo, puede sustituirlo por la palabra Impuesto. Probable-
mente u n a de las grandes ventajas de utilizar este método es que si tiene que
incrementar o de incrementar el impuesto y las fórmulas deben reflejar dicho
cambio, simplemente basta con ir a lnsertar>Nombre>Definir, seleccionar el n o m -
bre Impuesto y luego modificarlo convenientemente.
Para dar un paso más allá en este concepto, puede utilizar las fórmulas con
los rangos definidos en Se refiere a en vez de utilizar direcciones de celdas o
valores constantes. Supongamos que desea crear un nombre que, cuando se in-
troduzca en u n a celda, devuelva automáticamente la SUMA de las 10 celdas que
se encuentran por encima. Seleccione la celda Al 1 de cualquier hoja y luego vaya
a lnsertar>Nombre>Definir. En el cuadro de texto Nombres en el libro escriba "To-
tal" y en el cuadro de texto Se refiere a escriba lo siguiente:
=SUMA(A1:A10)
=Total
mmmmmmmmmmmmmm
sj Archivo Edición Ver Insertar Formato Herramientas Datos Ventana l - S x
£
j JS y 3 J J A ^ a á -¿ ¿> - / «o - --. a * - ü ti M # 1
Arial » 10 ^ [Ñ] ^ S E M M -g S| % 000 € *o8 1^ _¿ * 3» * A ' §1
A1 • ^ Nombre empleado
B .F.-_T:
Nombre empleado Tarifa Hora Puesto
Carlos Martínez 17,25 Jefe de proyecto
Antonio García 12,4 Consultor Júnior BSCEiSSl-' .; *J
María Solans 12 Analista sénior
Crear nombres en
Sergio Velasco 13,25 Comercial
I¡7 Ma superior]
Silvia Rodríguez 9,8 Administrativo
W Columna igquierda
Ángel Blanco 11,85 Programador sénior
f" Ría inferior
Esther Carrasco 15,45 Representante
18,1 Jefe de proyecto V Columna ¿erecha
Javier Pérez
Ana Rebollo 14 Coordinador
¡Guillermo Ortega 14,3 Consultor sénior j Aceptar § Cancelar
J
Una vez que cree los nombres para la tabla, observará que Excel coloca
automáticamente un símbolo de subrayado en los espacios situados entre dos o
más palabras. Esto es debido a que los nombres de los rangos no pueden contener
espacios. Seleccione lnsertar>Nombre>Definir, introduzca "TarifaHoraAntonio" en
el cuadro de texto Nombres en el libro y "=Antonio_García Tarifa_Hora". Luego
haga clic en Agregar, tal y como se muestra en la figura 3.3.
Ahora, en cualquier celda fuera de la tabla, introduzca lo siguiente:
=TarifaHoraAntonio
Para entender cómo funcionan los rangos con nombre, debería, en primer
lugar, familiarizarse con la función DESREF (si es que no lo ha hecho todavía),
u n a de las funciones de búsqueda de referencia de Excel.
130 Excel. Los mejores trucos
|=Antonio_García Tarifa_Hora
M i • •l\Hojal/Hoja2/Hoja3/ l«l ir
Figura 3.3. Búsqueda de nombre creada.
Comenzaremos con el rango dinámico con nombre más simple, aquel que se
expandirá hacia abajo u n a única columna, pero solamente tanto como entradas
contenga la columna. Por ejemplo, se la columna A contiene 10 filas continuas
de datos, el rango dinámico con nombre incorporará el rango Al :A10. Siga estos
pasos para crear dicho rango.
Vaya a lnsertar>Nombre>Definir, introduzca "MiRango" en el cuadro de texto
Nombres en el libro y en el cuadro de texto Se refiere a, introduzca lo siguiente:
=DESREF($A$1;0/0;CONTARA($A$1:$A$10 0);1)
Teniendo ahora los datos en la columna A, este rango con nombre incorpora-
rá todos los datos que se encuentren en filas contiguas, comenzando por la celda
A l . Si desea comprobar el rango dinámico con nombre, puede hacerlo de diferen-
tes formas.
Por desgracia, los rangos dinámicos con nombre no están accesibles a través
del Cuadro de nombres estándar de la parte superior izquierda de la ventana de
3. Trucos sobre nombres 131
Excel. Pero sí puede hacer clic en dicho cuadro, escribir el nombre "MiRango" y
pulsar Intro. Excel seleccionará automáticamente el rango. Por supuesto, t a m -
bién puede utilizar el cuadro de diálogo Ir a yendo a Edición>lr a (Control/Co-
mando-I), escribiendo "MiRango" en el cuadro de texto y haciendo clic en Aceptar.
El rango dinámico con nombre que acaba de crear en el ejemplo anterior con-
tiene la función CONTARA como parámetro de la función DESREF.
Si tiene u n a lista que sólo contiene datos numéricos y al final de ella desea
almacenar un texto, pero no quiere que dicho texto quede incluido como parte
del rango dinámico con nombre, puede reemplazar la función CONTARA con la
función estándar de Excel CONTAR, función que sólo cuenta las celdas que con-
tienen datos numéricos.
El siguiente ejemplo, utilizaremos el rango dinámico con nombre para definir
u n a tabla de datos que deseamos sea dinámica. Para ello, escriba la siguiente
función en el cuadro de texto Se refiere a:
=DESREF($A$1;0;0;CONTARA($A$1:$A$10 0);CONTARA($1:$1))
Aquí, el rango dinámico con nombre se expandirá hacia abajo tantas entradas
como datos haya que la columna A, y a lo largo de tantas filas como encabezados
haya en la fila 1. Si está seguro de que el número de columnas para la tabla se va
a mantener estable, puede reemplazar la segunda función CONTARA por un n ú -
mero fijo, como pueda ser 10.
El único problema al utilizar rangos dinámicos con nombre para u n a tabla de
datos, es que presupone que la columna A establecerá la longitud máxima para
la tabla. En la mayoría de los casos, esto será cierto, pero a veces, puede que la
columna más larga sea otra diferente. Para evitar este problema, puede utilizar
la función MAX de Excel, que devuelve el número más alto en un rango de cel-
das. Como ejemplo, configure u n a tabla de forma similar a la que se muestra en
la figura 3.4.
Utilice la fila 1 para almacenar un n ú m e r o de las funciones CONTARA que
están haciendo referencia a la columna y, por tanto, devolviendo el n ú m e r o de
entradas en cada columna. Utilice la función MAX para el argumento "alto" de la
función DESREF. Esto asegura que el rango dinámico con nombre para la tabla
siempre se expandirá tanto como la columna más larga. Por supuesto, puede
ocultar la fila 1, ya que el usuario no necesita verla.
132 Excel. Los mejores trucos
En todos estos ejemplos, hemos supuesto que los datos siempre estarán en
filas contiguas sin celdas en blanco entre medias. Aunque este es el método co-
rrecto para configurar u n a lista a u n a tabla de datos, a veces no se tiene control
sobre esto. En el siguiente ejemplo, el listado de números de la columna A t a m -
bién contiene celdas en blanco. Esto significa que si intenta utilizar las funciones
CONTAR o CONTARA, el rango dinámico con nombre no funcionará correcta-
mente, como puede verse en la figura 3.5.
En este caso, aunque el último n ú m e r o en el rango está en la fila 10, el rango
dinámico se está expandiendo solamente hasta la fila 6. Esto es debido a que
hemos utilizado la función CONTAR para contara desde la celda Al a la celda
Al 00. Sin embargo, sólo hay 6 datos numéricos en la lista, por lo que el rango se
expande solamente 6 filas.
Para evitar este problema, utilizaremos la función de Excel COINCIDIR. Esta
función se utiliza para devolver la posición relativa de un elemento en u n a m a -
triz, de aquel que coincida con un valor específico en un orden específico. Por
ejemplo, se utiliza esta función COINCIDIR:
=COINCIDIR(6;$A$1:$A$100;0)
Agregar |
Qiminar
Se refiere a:
=DE5REF(Hoja2!$A$l;0;0;CONTAR(Hoja2!$A$l :$A$100); 1)| 31
=COINCIDIR(1E+306;$A$1:$A$100;1)
Para crear un rango dinámico con nombre que se expanda hasta la última fila
que contenga un número (independientemente de que haya celdas entre medias),
escriba esta fórmula en el cuadro de texto Se refiere a del cuadro de diálogo
Definir nombre, tal y como se muestra en la figura 3.6:
=DESREF(Hoja2!$A$l;0;0;COINCIDIR(lE+3 0 6 ; H o j a 2 ! $ A $ l : $ A $ 1 0 0 ; l ) ; 1 )
El siguiente tipo lógico de rango dinámico con nombre que podrían surgir de
esto es aquel que se expanda hasta la última entrada de texto, independiente-
mente de que haya celdas en blanco en la lista o en la tabla.
134 Excel. Los mejores trucos
üj
Aceptar j
O
Agregar
9
10;
11 J
12
13 Se refiere a:
14 j =DESREF(Hoja2! $A$ 1; 0; 0; COINCIDIRÁ E+306; Ho ja2!$A$1: $A$ 100; 1); 1 )| 5
15
16
17
18
19
20
4 4 • H\ Hojal \ H o j a 2 / H o j a 3 / X ¡D
Figura 3.6. Un rango dinámico que se extiende hasta la última entrada numérica.
•.Jal -1
- ^ j Archivo Edición Ver Insertar Formato Herramientas Datos Ventana _ fi" x
±£ 1
12: Definir nombre
Nombres en el libro:
3 Mi Listn Aceptar i
4 Daniel
5 Carlos
6 100¡
Z3
Agregar
7 ¡Javier
8 Fernando
9 500!
10
11 J
12 antos
13 ¡Jorge
14
15
300' =DE5REF(Ho ja2! $ A $3; 0; 0; FilaMax; 1)
_ _ _ _ _
"3
16
17
18
19
20
l< < • •iX.Hojal >,Hoja2,( Hoja3 / HT
Señalar
Figura 3.7. Lista dinámica con entradas numéricas y de texto conteniendo celdas en blanco.
La siguiente lista muestra otros tipos de rangos dinámicos con nombre que
puede encontrar útiles. Para todos estos ejemplos, necesitará rellenar la columna
A con u n a mezcla de entradas de texto y numéricas. Para ello, seleccione la op-
ción lnsertar>Nombre>Definir, introduzca en el cuadro de texto Nombres en el
libro cualquier palabra (por ejemplo "MiRango"). La única parte que va a cambiar
es la fórmula que introduciremos en el cuadro de texto Se refiere a.
Si espera un número mayor que 1E+306 (un 1 con 306 ceros), cámbielo por
u n n ú m e r o mayor aún.
Esta última requiere que el paquete de análisis esté instalado. Para ello, debe
seleccionarlo en la opción Herramientas>Complementos.
Por ejemplo, es posible crear un rango con nombre llamado "NombresJ", que
se refiere a todos los nombres de u n a lista ordenada que comienzan con la letra J.
Comenzamos con la lista de nombres de la columna A, como la que se muestra
en la figura 3.8, en donde la celda Al es un encabezado y la lista está ordenada.
Seleccione lnsertar>Nombre>Definir. En el cuadro de texto Nombres en el libro,
introduzca "Nombres" y en el cuadro de texto Se refiere a introduzca la siguiente
fórmula:
=DESREF($A$2;0;0;CONTARA($A$2:$A$1000);1)
3. Trucos sobre nombres 137
16 Tama
17
l< 4 • H \ H o j a l / H o j a 2 / Hoja3 / J_
Figura 3.8. Un rango dinámico con nombre con otro rango dinámico dentro de él.
Si lo desea, puede crear un rango con nombre para cada letra del alfabeto,
pero quizá u n a opción mejor sería que el rango con nombre cambiase en función
de la letra que escribiésemos en u n a celda de la hoja. Para poder hacer esto, sim-
plemente introduzca cualquier letra en u n a celda que no esté utilizando y luego
déle el nombre "Letra" a dicha celda. Ahora, seleccione Datos>Validación y en el
cuadro de lista desplegable seleccione la opción Lista. En el cuadro de texto Origen
introduzca "A*;B*;C* ...", es decir, cada u n a de las 26 letras del abecedario, como
puede verse la figura 3.9. Al terminar, haga clic en Aceptar.
Seleccione lnsertar>Nombre>Definir e introduzca "Nombres" en el cuadro de
texto Nombres en el libro. Luego, introduzca la siguiente fórmula en el cuadro de
texto Se refiere a y haga clic en Agregar:
= DESREF($A$ 2;0;0;CONTARA($A$ 2:$A$10 0 0) /1)
=DESREF(INDIRECTO(DIRECCIÓN(COINCIDIR(Letra;Nombres;0)+1;1));0;0;
CONTAR.SI(Nombres/Letra);1)
fflfffflfflWTWff
i Configuración i J Mensaje entrante ] Mensaje de error ]
Criterio de validación
Permitir:
¡Lista •j Jv' Omitir blancos
Datos: P Celda con lista desplegable
1 13
Origen:
JA*jB*jC*jD*;E*jF*;G* ;H*;I*;J*jK*;L*;M^J
Aceptar j Cancelar
Figura 3.9. Una lista de validación de letras, seguidas de los caracteres comodines.
dJ
*^|] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana l -fl X
4) w ~
A9 £ L*
A
1 [Nombres
2 Al ex
3 Ana Definir nombré
4 David Nombres en el libro:
Aceptar
5 Guadalupe
NombresDeLetra
6 Jaime
7 Javier
Letra
Nombres U
8 Juan Agregar
9 laida
10 l u i s Eliminar
11 Maí
12 Marta
13 Sandra J
14 Santos
Se refiere a:
15 Sonia
| hDESREF(INDIRECTO(DIRECCION(COINCIDIR(Letra; Nombres; 0)+1.; 1).).;0;C *¡j
16 Tania
17 " "~~
H i • w\Hoial/Hoja2/Hoja3/ •ir
Señalar
Figura 3.10. Un rango dinámico con nombre controlado por el contenido de otra celda.
3. Trucos sobre nombres 139
No tiene que reescribir las fórmulas desde cero para los rangos
*S^ dinámicos con nombre. En vez de ello, mientras esté trabajando con el
cuadro de diálogo Definir nombre, puede hacer clic en cualquier rango
dinámico de nombre, sobrescribir el nombre que aparece en el cuadro
de texto Nombres en el libro, ir al cuadro de texto Se refiere a,
modificarlo de forma adecuada y luego hacer clic en Agregar. Esto no
reemplazará el rango dinámico de nombres original, sino que añadirá
uno totalmente nuevo que tendrá el nuevo nombre que le haya dado.
Método 1
Un método m u y rápido para identificar rangos referenciados es seleccionando
la opción lnsertar>Nombre>Pegar o pulsar la tecla F3. En el cuadro de diálogo
Pegar nombre, haga clic en Aceptar, como se muestra en la figura 3.11, y Excel
mostrará u n a lista de todos los nombres en filas, comenzando por la celda activa
y mostrando los nombres que corresponden a cada referencia en la otra colum-
na. Esto le proporcionará un listado de todos los nombres del libro de Excel acti-
vo. Aunque esto pueda ser m u y útil para identificar rangos específicos, todavía
requiere que tenga que seleccionar manualmente un rango con nombre específi-
co, o quizá utilizar el cuadro de diálogo Ira. Sin embargo, u n a vez que tenga la
lista de rangos con nombre, puede eliminar todas las direcciones de celdas
referenciadas que se corresponden con los nombres, y reemplazarlas con u n a
función de vínculo m u y simple.
Todo esto le permitirá crear una lista de todos los rangos con nombre. Hacien-
do clic en cualquier elemento de dicha lista le llevará automáticamente al rango
especificado. Por ejemplo, suponiendo que la lista de nombres se encuentre la
columna A, comenzando por la celda A l . Sitúese en la celda B l e introduzca esta
fórmula:
=HIPERVINCULO("[Librol.xls]"&A1;A1)
140 Excel. Los m e j o r e s trucos
^ I I H H I H I
ÍSj¡ ArcNvo Edición Ver Insertar Formato Herramientas Datos Ventana ? . ff x
Si
RA
N <
• w\Hojal/Ho¡tó/Ho3@3/ líJ
NUM
l >ir
Figura 3.11. El cuadro de diálogo Pegar nombre.
Copie esta fórmula hacia abajo tantas filas como sean necesarias y reemplace
Libro 1 por el nombre real del libro.
J J J Í J J Í ^ Ü j i ^ - ' i ^ í - í i k 39%
Arial
- 10 - N X S ^ M ^ ^ ~§ % 000 € Ip _ ~ ¿»
N20 ^ £
VZl. M"I".
M,,. ¿Miembros
s(/> O
Q)
;$*"
CD m
(/)
Figura 3.12. Zoom de la hoja que proporciona los nombres de rangos para su fácil
identificación.
3. Trucos sobre nombres 141
Método 2
Este método es m u y sencillo pero raramente conocido. Todo lo que tiene que
hacer es establecer el zoom de la hoja Excel a un número inferior a 40% (es decir,
39% o menos). Observará como se muestran todos los nombres de rangos en la
hoja para su fácil identificación, tal y como se muestra en la figura 3.12.
CAPÍTULO 4
Las tablas dinámicas son u n o de los atractivos más potentes de Excel, a pesar
de que mucha gente no sabe qué es lo que pueden hacer. Las tablas dinámicas
muestran y extraen gran variedad de información a partir de u n a tabla de datos
que se encuentra en Microsoft Excel o bien en otro tipo de base de datos compa-
tible. Las tablas dinámicas se utilizan con frecuencia para extraer información
estadística a partir de datos almacenados en serie. Luego, podrá desplazarse por
los diferentes campos de la tabla dinámica para ver sus datos desde perspectivas
diferentes.
Los datos en serie para una tabla dinámica deben estar organizados en
v
"\v un formato clásico de tabla. La fila u n o debe contener los encabezados
w\ y los datos relacionados debajo de ellos. Los datos no deberían contener
filas o columnas en blanco. Incluso aunque no tenga planeado utilizar
tablas dinámicas, mantener los datos en este formato hará posible
que otras personas puedan analizarlo utilizando dicha característica.
Si necesita separar, segmentar y hacer informes de los datos, las tablas diná-
micas se convertirán en u n a herramienta critica para su trabajo.
Si sigue estas directrices de la forma más estricta posible, verá que utilizar las
tablas dinámicas será una tarea relativamente sencilla. En la figura 4.1 puede
ver u n a tabla con datos que está bien organizada, j u n t o a u n a tabla dinámica
que se está generando. Observe que la mayoría de las fechas que son iguales
están repetidas en la columna Fecha. Por delante de estos datos está el paso en el
4. Trucos sobre tablas dinámicas 147
c
Cantidad Comisión Venta
Mié 3 Mió 2004 18,50 € Comisión
X ] U o 2004 13,25 € Comisión
julio 2004 12,25 € Comisión
UZ2 Construya el informe de tabla dinámica
julio 2004
julio 2004
9,00 ^ Comisión
8,50 € Comisión
arrastrando los botones de campo de la julio 2004 75,36 € Comisión
derecha sobre el diagrama a la izquierda. julio 2004 45,00 € Comisión
blio 2004 12,68 € Comisión
julio 2004 74,00 € Comisión
kgosto 2004 45,21 € Comisión
I Producto I hgosto 2004 13,40 € Comisión
kgosto 2004 26,32 € Comisión
| Fecha l
kgosto 2004 12,00 € Comisión
¡Cantidad j
kgosto 2004 5,63 € Venta
hgosto 2004 9,90 € Comisión
Comisión/I kgosto 2004 18,75 € Comisión
jigosto 2004 65,30 € Venta
fegosto 2004 14,00 € Comisión
kgosto 2004 75,36 € Comisión
kgosto 2004 45,00 € Comisión
agosto 2004 12,68 € Comisión
kgosto 2004 74,00 € Comisión
fegosto 2004 45,21 € Comisión
j kgosto 2004 13,40 € Comisión
Ayuda Aceptar
!L_J kgosto 2004 26,32 € Venta
wmrxagosto 2004 12,00 € Comisión
! < < • • ! "XHojal / Hoja2 / Hoja3 / JiL •in
Figura 4.1. Tabla dinámica generada a partir de una tabla de datos bien distribuida.
Existen otros pasos que se pueden seguir para manipular la tabla dinámica,
pero la mayoría de los usuarios encuentran más sencillo hacer esto después de
decir a Excel dónde colocarla.
Excel 2000 y las versiones posteriores tienen una gran ventaja sobre
Excel 97: le permiten elegir cómo configurar los datos después de que
el asistente haya finalizado.
Ahora que ya sabe algo más sobre las tablas dinámicas y sus funciones, ha
llegado el momento de conocer algunos trucos útiles que pueden hacer que esta
característica sea todavía más potente.
Es posible que necesite enviar tablas dinámicas a otras personas para que las
visualicen, pero por alguna razón, no desea enviar los datos subyacentes que
están asociados a ella. Quizá desee que los demás sólo vean ciertos datos por
motivos de confidencialidad, por ejemplo. Si este fuese el caso, puede crear u n a
copia estática de u n a tabla dinámica y permitir que los destinatarios sólo vean lo
que necesitan ver.
Y lo mejor de todo es que el t a m a ñ o del archivo con la copia estática será
mucho menor que el del archivo original.
Suponiendo que tenga u n a tabla dinámica en un libro de Excel, todo lo que
necesita hacer es seleccionar la tabla dinámica por completo, copiarla y, en u n a
hoja en blanco, ir a Edición>Pegado especial y luego seleccionar la opción Valo-
res. Entonces ya podrá mover esta hoja a otro libro o quizá utilizarla tal cual.
El único inconveniente de este método es que Excel no pega los formatos de la
tabla dinámica j u n t o con los valores. Esto puede hacer que la copia estática sea
más difícil de leer y quizá sea menos impresionante. Si también desea incluir el
formato, puede tomar u n a imagen estática (en vez de u n a copia estática) de la
tabla dinámica y luego pegarla en u n a hoja en blanco, lo que le proporcionará
u n a copia a todo color y con formato de la tabla dinámica original, a la que
podrá aplicar cualquier tipo de formato que desee, sin tener que preocuparse de
que el formato se perderá cuando la actualice. Todo esto ocurre gracias a que la
imagen no está vinculada de ninguna forma con la tabla dinámica original.
Para crear u n a imagen estática, aplique el formato que desee a la tabla diná-
mica y luego seleccione cualquier celda que se encuentre dentro de ella. Desde la
4. Trucos sobre tablas dinámicas 149
A | B C j D I E i... .F . i ...G . . . t í
1 Nombre H N° de nombres
2
T i Ana HiHlM^»
T i David ^J^^p^S
5 Guadalupe ^HH|j|¡gj||
6 |
Apariencia
7 Javier pyl^ig^pipi
*•" iComo en pantalla]
8 Juan IBiÜüigi^K
<"* Como en impresora
9 Laida jH^BIBBB
10 LUÍS Pff^yy^PJ Formato
11
Mar ^ ^ ^ ^ ^ H (* Imagen
12 Marta R S S B ^ ^ C Mapa de bits
113 Sandra tÍ8Í^^8iMI
14 Santos BiS^^^^S I Aceptar | Cancelar I
PT Sonia io|SSg^^K
F T Tañía gEHfflB
¡17 Vanesa JiBi^^^püy
M8~ WiHiam .JSiiBS
FT
H 4 • M \ Hoja i XHoja2 / Hoja3 / H
Figura 4.2. Cuadro de diálogo Copiar imagen.
dicho rango. Cualquiera que fuera el formato o los datos que tuviese el rango
original, queda reflejado automáticamente en la imagen.
c
A 6 TD E F G —
1 Tabla dinámica original Imagen ele la tabla dinámica
s
2 Horahrfe N de nombres 1 Nombre H N° de nombres I ^ ^ ^ ^ H
3 Al ex Al ex
4 Ana Ana
5 David David
6 Guadalupe Guadalupe
7 Jaime Jaime
8 Javier Javier
9 Juan Juan
10 Laida Laida
11 Luis 1 '- "Luis 1o
12 Mar- Mar
13 Marta Marta
14 Sandra Sandra
15 Santos Santos
16 Sonia Sonia
17 Tan i a Tania
18 Vanesa Vanesa —
19 William William
20 Total general _ Total general if
H < •
M
» i \ Hojal / H 3ja2 ),,Hoja3/
_J ±¡ñ
Figura 4.3. Tabla dinámica original contrastada con su imagen.
A B C D E I F G H
1 Nombres
2 Alex t;;/-T 2<¡
1 Ana
I Construya el informe de tabla dinámica
4
5
David
Guadalupe
6 Jaime
7 ¡Javier
-1 arrastrando los botones de campo de la
derecha sobre el diagrama a la izquierda,
8 Juan
9 Laida 1 Nombres |-
10 Luis | PAGINA | COLUMNA
11 Mar 1 Nombres
Luenta de Nombres
•<J
FILA DATOS
14 _ampo ae origen: Nombres 1 Aceptar ]
15 hombre: j dlfjiUAtJJMi'ilJfcU
16 • Cancelar
Para terminar, seleccione la opción Hoja de cálculo nueva como destino del
informe de tabla dinámica y haga clic en el botón Finalizar. Al hacer esto debería
152 Excel. Los mejores trucos
ver la tabla dinámica en u n a nueva hoja con teniendo los elementos únicos de la
lista, j u n t o con el cálculo de cuántas veces aparece cada elemento (nombre) en la
lista.
¿Qué ocurre si desea tener u n a macro que realizase todos estos pasos, creando
la tabla dinámica a partir de u n a columna que especifique? Si simplemente gra-
ba u n a macro, se encontrará que a menudo sólo funciona si los datos tienen el
mismo encabezado. Para evitar este inconveniente, puede crear u n a simple macro
almacenada en el libro o en el libro personal de macros (lo veremos en el capítulo
7), y que puede utilizar para crear u n a tabla dinámica sobre cualquier lista de
elementos. Esto requerirá que escriba algo de código genérico en VBA e introdu-
cirlo en un módulo estándar dentro del libro de macros personal o en cualquier
otro libro de trabajo.
Para empezar, v a y a a Herramientas>Macro>Editor de Visual Basic ( A l t / O p -
ción-Fl 1) y luego vaya a lnsertar>Módulo. A continuación introduzca el siguiente
código:
Sub ObtenerCuenta( )
Dim Pt As PivotTable
Dim strField As String
strField = Selection.Cells(1,1).Text
Range(Selection, Selection.End(xlDown)).Ñame = "Elementos"
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, _
SourceData:="=Elementos").CreatePivotTable TableDestination:="", _
TableName:="ListaElementos"
Set Pt = ActiveSheet.PivotTables("ListaElementos")
ActiveSheet.PivotTableWizard TableDestination:=Cells(3, 1)
Pt.AddFields RowFields:=strField
Pt.PivotFields(strField).Orientation = xlDataField
End Sub
Para volver a la ventana principal de Excel, cierre esta ventana o pulse Alt/
Comando-CLy grabe el libro de trabajo. Antes de ejecutar este código, seleccione
el encabezado de la lista y asegúrese de que ésta no contiene celdas en blanco.
Este código creará automáticamente un rango con nombre para la lista, lla-
mado "Elementos", para a continuación crear u n a tabla dinámica en u n a nueva
hoja, basándose en este rango. La próxima vez que tenga u n a larga lista con
datos, le bastará con seleccionar su encabezado y ejecutar esta macro. Todo el
4. Trucos sobre tablas dinámicas 153
o así:
IMPORTARDATOSDINAMICOS ( " C a n t i d a d " ; $ B $ 5 )
[Producto j.
| PAGINA | COLUMNA
Producto
Suma de Cantidad
| Cantidad I
\l° de veces vendido
FILA DATOS [Comisión í
I Meses |:
1 Años}
Ayuda ...Aceptar |¡
Figura 4.5. El campo "Cantidad" utilizado dos veces, con el nombre "Suma
de Cantidad" en un caso y "N° de veces vendido" en otro.
=SI(A1="M;"";A1)
Este acceso directo no está disponible para Macintosh. Tendrá que abrir
el editor de Visual Basic pulsando Opción-Fll o bien yendo a
Herramientas>Macro>Editor de Visual Basic. Luego haga clic mientras
pulsa la tecla Control en ThisBook, situado en la ventana de proyectos.
Para volver a la ventana principal de Excel, cierre esta ventana o bien pulse
Alt/Comando-a
Excel. Los mejores trucos
El código anterior sólo incluye 1000 filas con datos. Dicho n ú m e r o siempre
debería ser superior al número de filas que cree que necesitará. En otras palabras,
si la tabla en el otro libro contiene 500 filas, añada unos cientos más para así
dejar espacio por si la tabla original crece.
Evite utilizar un número muy alto de filas (como por ejemplo 10.000,
a menos que tenga esa cantidad de datos), ya que esto afectará a la
/ velocidad con la que se ejecute el código y se actualicen los datos.
: i A B C ; D i E • F ' G ! - j . . _ _^
1 j Circular
2 ,A 1
3 B 1 Circular
4 C 1
5 -D 1
6. /-^ ^ \
7 !
8
/ \
1 \
9
{ \
10
11"
12
13
14
\
s
m
HF
~v ^ _ _ g ^
BB
DC
DD|
J5J
16
17
18
19
?n <r|
H 4 • •! \Hojal / MI
i »in
Figura 5.1. Gráfico circular simple configurado a partir de los datos de una hoja.
:
A FJ ; C D 1 É F ' G ] H ; ¡ J -H
1 Circular "*^j
2 A
3 B
4 C
5 D
6
7 '
8
9
10
11
12
13
14
15
16
17
18
19
|M Í • • i \ H o j a i / ; |jj i »in
A B C D E F G H I J "z
1 Circular
2 A 1
3 B 1 Circular
4 C 1
5 D 1
6
7
8
9
10
JU
12
13 _
14
15
16
17
18
19
Resulta un poco complicado hacer que se puedan ver dos series de valores
representados en ejes separados dentro de un único gráfico, pero el esfuerzo me-
rece la pena para ver el efecto resultante. Para ver cómo funciona esto, primero
cree un gráfico circular básico. Coloque algunos datos en el rango de celdas Bl :C5,
seleccione dicho rango y haga clic en el botón Asistente para gráficos de la barra
de herramientas. En el paso 1, bajo el apartado Tipo de gráfico, seleccione el pri-
mer gráfico circular. Ahora haga las modificaciones pertinentes en el resto de
pasos del asistente hasta llegar al paso 4. Al llegar ahí, asegúrese de colocar el
gráfico como un objeto en la hoja actual.
A continuación seleccione el gráfico, haga clic con el botón derecho del ratón
sobre él y vaya a Origen de datos>Serie. Haga clic en A g r e g a r para añadir otra
serie. Seleccione la celda DI para el nombre y las celdas D2:D5 para los valores, y
luego haga clic en Aceptar. Obtendrá un gráfico como el que se muestra en la
figura 5.4.
162 Excel. Los mejores trucos
:
* A I B ! C D E F G H —
1 l 1 Gráfico 1 Gráfico 2
2 A 0,049619 0,76617"7
3 B 0,416347 0,835703
4 C 0,157347 0,650905
5 ,D 0,514901 0,744752
6 j
7 Gráfico 1
8
9 ^^r^^
10
/ ^ aW
1
11
12
/ AfaV lA
BB
13
DC
14
15" ( DD
16
17 v /
• ^
W
^
18
19
• •I \ Hoja 1 / ~~
H 4 ' "™~ |4 1 i >ir
Figura 5.4. Un gráfico circular configurado a partir de los datos de una hoja.
A I B ; C D E F G H I i Ti
1I IGi.ifico 1 Gráfico 2 I
2 A 0,049619 0,766177
3 B 0,416347 0,835703
4 'C 0,157347 0,650905
5 D 0,514901 0,744752
6
7
8 *"""*
9 • ^^—I
10,
11 '
/ ^
12 i r
"13" D Gráfico 2
14
D Gráfico 11
[ ABBW
W l^m
15"
16"
17:
18'
V / ^ ^
19
20
^JLJ^
21 •
H 4 • H ^vHolal/ M I •ll""
Figura 5.5. Gráfico circular con el eje secundario separado.
Al separar el gráfico circular, no solamente está separando los dos ejes (con lo
que se ve el segundo gráfico circular), sino que también está comprimiendo el
5. Trucos sobre gráficos 163
gráfico circular situado en el eje secundario, con lo que puede ver ya ambos grá-
ficos.
Ahora, seleccione cada u n a de las porciones del gráfico y arrástrelas de nuevo
hacia el centro del mismo, con lo que obtendrá un gráfico como el que se mues-
tra en la figura 5.6. Recuerde que si hace dos clics lentamente se marcará u n a
porción individual del gráfico.
A B C I D E —
1 Fechas Temper aturas
2 1/10/2003 10
3 2/10/2003 12
4 3/10/2003 13
5 4/10/2003 13
6 5/10/2003 12
7 6/10/2003 14
8 7/10/2003 15
9 8/10/2003 13
10 9/10/2003 12 —
11 10/10/2003 11
12' 11/10/2003 10
13
14 ^
H 4 • l
H \,Hojal / Hoja2 / Hoja3 / •ir j <
Cree un rango dinámico con el nombre "FECHAS_TEMP" para las fechas si-
tuadas en la columna A. Para ello vaya a lnsertar>Nombre>Definir y escriba la
siguiente fórmula:
=DESREF($A$1;1;0;CONTARA($A:$A)-1;1)
Ahora ya puede crear el gráfico utilizando los rangos dinámicos con nombre
que hemos creado, en vez de utilizar referencias a celdas. Seleccione el área de
datos (el rango $A$1:$B$11) y luego haga clic en el icono Asistente para gráficos
5. Trucos sobre gráficos 165
Complete los datos que se solicitan en el resto de pantallas del asistente, reali-
zando los cambios que sean necesarios. El resultado debería parecerse al que se
muestra en la figura 5.8.
-t
Archivo Edición Ver Insertar Formato Herramientas Datos Ventana l * - 0 X
JÜit
Rango de datos Serie
A1 fx Fechas
B
A T
Fechas Temperaturas
!__
1/10/2003 101
2/10/2003 12
— laTcmpcraturaJ
3/10/2003 13
4/10/2003 13 u
5/10/2003 12
6/10/2003 14
7/10/2003 15
8/10/2003 13
9/10/2003 12|
10/10/2003 11
11/10/2003 101 M M B » „ j Nombre: j=Hojal!$B$l
3
_J Valores: |=Hojal!LECTURAS_TEMP ü
Agregar Quitar |
• M \ H o j a l / Hoja2 / Hoja3 /
MT r
Figura 5.8. Rangos dinámicos con nombre en vez de referencias estáticas a rangos.
166 Excel. Los mejores trucos
Una vez configurado este gráfico, cada vez que añada u n a nueva entrada, ya
sea en la columna A (Fechas) o en la columna B (Temperatura), se incluirá
automáticamente gráfico.
Para las lecturas de la columna B, configure otro rango dinámico con nombre
llamado LECTURAS_TEMP_1 ODIAS e introduzca lo siguiente:
= DESREF(Hoj al!$A$1;CONTARA(Hoj al51$A:$A) -10;1;10;1)
1
2
3
Producto
Mes XYZ
Ventas 2003
4
5 JAN 505
6 FEB 943
7 MAR 500
8 APR 624
9 MAY 894
10 JUN 612
[11 JUL 526
12 AUG 629
13 SEP 665
14 ÜCT 954
15 NOV 893
16 DEC 954
17 1
18
1
H 4 • • l \ H o j a l /Hoja2 / Hoja3'/
_ili
Figura 5.9. Datos de la hoja para un gráfico dinámico vinculado a una barra
de desplazamiento.
=DESREF($B$5;0;0;$C$5;1)
Si no desea que el usuario pueda ver la celda C5, puede ir más allá y
H^ ocultar el contenido de $C$5, haciendo clic con el botón derecho del
^\ ratón sobre ella y seleccionando la opción Formato de celdas. Luego,
seleccione la categoría Personalizado e introduzca el formato ;;;. Haga
clic en Aceptar y el contenido de la celda C5 quedara oculto, tal y
como puede verse en la figura 5.9.
Ahora cree un gráfico (un gráfico de líneas o de columnas serían los ideales).
Cuando llegue al paso 2 del asistente, vaya a la pestaña Serie y cambie la fórmu-
la que aparece en el cuadro de texto Valores de forma que quede así: < Nombre
del libro.xls>!PERIODO_VENTAS. Con esto, el gráfico será dinámico.
Una vez haya creado gráfico, deberá insertar u n a barra de desplazamiento a
través del cuadro de herramientas Formularios.
La forma más sencilla para hacer esto es hacer clic con el botón derecho del
ratón en el área gris de la parte superior de la pantalla (donde están situadas las
barras de herramientas, pero en u n a parte que esté vacía) y luego seleccionar la
opción Formularios. Con ello aparecerá el cuadro de herramientas Formularios en
la pantalla.
Ahora haga doble clic en el icono Barra de desplazamiento. Una vez insertada,
selecciónela y muévala hasta el gráfico. Luego haga clic con el botón derecho
sobre ella y seleccione la opción Formato de control.
Cambie el valor mínimo a 1 y el valor máximo a 12 y luego establezca el
vínculo con celda a $C$5. El gráfico resultante debería quedar como el que se
muestra en la figura 5.10.
L T
11
2
Producto XYZ
Ventas 2003
3
Producto XYZ 1000 -i
4
5
Mes
JAN
Ventas 2003
505 750 -
A\ ,/..X
\ 6 FEB 943 -y
7
8
MAR
APR
500
624 500 • ¿ /" "V ^A X_
9 MAY 894
10 JUN 612
526 250 -
11 JUL
12 AUG 629
13 SEP 665 0-
14 OCT 954 JAN FEB MAR APR MAY JUN JUL
15 NOV 893
16 DEC 954
17 A . _1 . ±J
18
|n 4 • n \ H o j a l / Hoja2 / ÜJJ
Figura 5.10. Gráfico dinámico vinculado a una barra de desplazamiento.
5. Trucos sobre gráficos 169
A F
LLI;
C D G
4 §" ±.
1l 1
2
3
4
5 Ex ti ni A Exam B Exam C Exam D Exam E
6 Andrés 54 89 90 74 56
7 Carlos 48 72 67 85 47
8 Carolina 44 39 43 68 45
9 David 81 93 42 47 64
10 Esther 37 58 62 67 72
11 Frank 46 69 55 41 57
12 Promedio 52 70 60 64 57
13
14
15 -
16
17
T
H < • H\ Hojal \Hoja2/Hoja3 / H _J •ir
Figura 5.11. Gráfico dinámico vinculado a un cuadro de lista desplegable.
B C D E
Resultólos |»<tia Esthei
Exam A Exam B Exam C Exam D
Andrés 54 89 90 74 56
¡Carlos 48 72 67 85 47
(Carolina 44 39 43 68 45
¡David 81 93 42 47 64
¡Esther 37 58 62 67
¡Frank 46 69 55 41 57
¡Promedio 52 70 60 64 57
100
90
Exam A Exam D
• H¡\ Hojal\Hoja2/
tara decidir cómo debe tratar los datos, lo que significa que puede que añada la
información a u n a serie ya existente cuando en realidad lo que queríamos era
crear u n a nueva. Sin embargo, podemos hacer que Excel muestre un cuadro de
diálogo que nos permita elegir qué acción queremos realizar. Introduzca algunos
datos como los que se muestran en la figura 5.13.
A B C D |
1 2001 2002 2003
2 Enero 7,43 7 3
3 Febrero 1 3 10
4 Marzo 21,3 2 4
5 Abril 11,6 1 9
6 Mayo 10 3 4
7
8
9
| 10
25 -.
jHi,-J M ariun
Enero Febrero Marzo Abril
observará que en la barra de fórmulas aparece la función que Excel utiliza para
la serie.
B C D F G
2001 2002 2003
Enero
Febrero
7,43
1
BBS
Agregar celdas como Valores (Y) en
Marzo 21,3 Aceptar J
Abril 11,6 (" Nueva serie <"* Blas
Majo "10" f* Nuevos puntos & i¿olumnasj Cancelar I
25 -,
P Categorías (rótulos de X) en ta p/irnera columna
20
D 2CL
r
15
ü 2002
10
D 2003
5 -H
0 1£L
Enero Febrero Marzo Abril
Así, u n a función SERIES válida podría ser de la siguiente forma (véase figura
5.17):
= SERIES(Hoj al!$B$1;Hoj al!$A$2:$A$5;Hoj al!$B$2:$B$5;1)
5. Trucos sobre gráficos 173
M»MI*f H
^ ¡ j Archivo Edición Ver Insertar Formato Herramientas Gráfico Ventana ?
-ID) x|
-ff x
J J A _J _ j j J* J l C* -j^, gU M
Sem< "2004 • ft =SERIES(Hoja2!$B$1;Hoja2!$A$2:$A$5;Hoja2!$B$2:$B$5;1)
A B C D E F G H J T
1i { 2004 *¡
2 Enero T 7,43
3 ÍFebrero 1
4 iMarzo 21,3
5 yAbnl 1 11,6,
6 ;
7 ¡
2004
-Q-j
_ 25 -i
11 ;
12! 20 -
13;
14! 15 -
"151 IQ 20041
16 • 1
'
17 ]
18 5- «
19 lis!
20 fara
21"";
Enero Febrero Marzo Abril
23
H 4 • n ' \ Hoja 1>,H aja?./*lHoja3/ H| i >ir
Utilizando este método puede crear o actualizar un gráfico sin tener que al-
macenar los datos en celdas.
J j J i j .J J i t? ¿x ^ " 5ü kg I
Serie "A" Pun. . * £ =SERIES(Hoja3!$B$1;Hoja3!ÍAÍ2:$A$5;Hoja3!JB$2:$B$5;1)
I
A B c D ; H I
B C
,a ^ 7 3
b 11 3 10
c 4,2! 2 4
d 9J 1 9
DA
HB
tJr^i HWl DC
• "w\_Hojal . / . H o j a 2 \ H o j a 3 / .•jr
N"Él»Archivo
i M iEdición
f l t «VerB Insertar
l Formato Herramientas - S x
GráFico
J J A 3 _jl
_ " > - ¿^ -
Serie "A" Pun... • A =5ERIES(HQja3!$B$1;HQJa3!$A$2:$A$5;HQJa3!$B$2:$B$5;1)
A B D H
1
2 h ^ 3
3 10
4 4
5 9
6
7
12
8
9 10
10 8
11
DA
12 6 — HB
13 4 DC
14
15 2
16 0 ^
17
13
19
20
^1
H i • w\Hojal/Hoja2\Hoja3/
ir
Figura 5.19. Borde de una serie seleccionado, después de ser expandido.
D E F G H
• m •
1
2 120 n
3 Caso 100
4 40. 100 -
[Temperatura
5 80 -
6 o Caso
7 60 -
8 • Temperatura |"
40 -
9
10
11
12
13
20 •
•
14 • • •
1C
H 4 • w\Termómetro/ JID
JJLL
Figura 5.20. Datos de la serie y creación de un gráfico básico de columnas agrupadas.
A B C D E F G H
1 • • i
2 120 -j
: T45
3
4
5
| Caso
[Temperatura^
i oo'
40J 100 -
•Bw• -40
-35
—.
H :
b 80 - -30
7
8 -25
60 -
9 • - 20 •
10
40 - - 15
Hi :
11
12 - 10
13 20 -
14 -5
15 0 \ HWHIÍIIIBIÍ8II I- 0
16 1
17 • • •
18
14 4 • w\ Termómetro/ I«I i »ir
Figura 5.21. Dos series dibujadas en el eje Y2.
Establezca el color para la serie con los casos en blanco, la serie para las tem-
peraturas en rojo y el área de dibujo en blanco. Llegados a este punto, el t e r m ó -
metro debería empezar a tomar forma.
Reduzca el valor de la propiedad Ancho del rango que encontrará en la pestaña
Opciones del cuadro de diálogo que aparece al hacer clic con el botón derecho del
ratón sobre las serie y elegir la opción Formato de serie de datos. Por último,
elimine el eje X (seleccionándolo y pulsando Supr) y luego cambie el t a m a ñ o y la
5. Trucos sobre gráficos 177
A B C D E F G H I J Ti
i • • _j
1
2
3 ; CasoT loo" 90 - -90
4 ¿Temperatura^ 40,
5 80 - • 80
6 70 - -70
7
8 60 - -60
9
i 10 50 - -50
•
•
11 40 - : - 40
12 30 - ¡¡•Sillll¡¡ill||| - 30
13
14
15
20 -
10 -
- 1111111 : [iiiiiiiiiiilaailBiij
-20
. - - 10
16 _ •
17 U -
18
19 • • •1
911
\\4 4 • M \Termómetro/ M __i üd
Figura 5.22. Serie con los casos en el eje Yl y serie con las temperaturas en el eje Y2,
ambos con formato idéntico.
A B C D E F G H 1 ~Z\
1 • •
1
2
3 Caso icio'
4 ^Temperatura^ 40, 90 - - 90
5
6 80 - - 80
7
8
9 70 - • 70
10
11 60 - • 60
12 H
13 - 50 •
• 50 -
14
15
40 - - 40
16
17 iiiwi^^Ma -
18
19
30 -
- ^ ^ H ! H | - - 30
20
iMH^^SI -
20 - - 20
21
EHBB
- |§||1|! -
22
10 - - 10
23
24
25 0 -L ' PiPíiSilil
M a H S ±' 0
26
|H 4 • M \ Termómetro / " M 1 >ir
Figura 5.23. Gráfico estilo termómetro completada.
178 Excel. Los mejores trucos
A B C D E F G H 1 J K
1 Columnas de ancho variable X Y Supr. I nfe r. Arriba EtiqEscala X EtiqEscala Y Texto EtiqEscala
2 %Comp. Coste (€) 0 =C3 =E2 =C3-E2
3 Gas 0,2 150 =B3+D2 =C3 =D3-D2 =E3 =C4-E3 =f(D3-D2)/2)+D2 0 =B3
4 'Electricidad 0,15 112,5 =B4+D3 =C4 =D4-D3 =E4 =C5-E4 =((D4-D3)/2)+D3 0 =B4
5 Agua 0,12 90 =B5+D4 =C5 =D5-D4 =E5 =C6-E5 =((D5-D4)/2)+D4 0 =B5
6 Comida 0,3 225 =B6+D5 =C6 =D6-D5 =E6 =C7-E6 =(YD6-D5)/2)+D5 0 =B6
7 Viajes 0,07 52,5 =B7+D6 =C7 =D7-D6 =E7 =C8-E7 =((D7-D6)/2)+D6 0 =B7
8 "¡ Otros 0,16 120 =B8+D7 =C8 =D8-D7 =E8 !l !=((D8-D7)/2)+D7 0 =B8
r
0 250 -,
1
•
2 200 -
Í3:
14
15 & 150 •,
Í6
17 1 • • : • Serie!
18": •
19
u 100 -
201
21
22 : 50 -
23:
24; c 0,2 0,4 0,6 0,8 1 1,2
25' n -
j¿'l • M \Hojal L
I 4
j.«l 1 •
in
Figura 5.24. Gráfico XY de dispersión configurado para el rango D2:E8.
Para crear este gráfico, introduzca algunos datos como los que se muestran
en la figura 5.24 y, utilizando el asistente para gráficos, seleccione el rango D2:E8.
En el paso 1 seleccione el tipo de gráfico XY de dispersión. Acepte los valores
5. Trucos sobre gráficos 179
predeterminados para este gráfico, que muestran solamente los puntos, y haga
clic en Siguiente. En el paso 2, asegúrese de que la opción Columnas está selec-
cionada. Haga clic en Siguiente y en el paso 3 del asistente, en el cuadro de texto
Valor (Y) escriba "Coste ($)". Haga clic en el botón Siguiente y asegúrese de que el
gráfico será generado como un objeto, no en u n a nueva hoja. Para terminar,
haga clic en el botón Finalizar para ver el gráfico resultante.
A B C D F H J K
Columnas «le ancho variable Supr. Infer. Arriba i EtiqEscala X EtiqÉscala Y Texto EtiqEscala
J
/oComp. Coste (€) 0 =C3 =E2 =C3-E2
Gas 0,2 150 =B3+D2 =C3 =D3-D2 =E3 =C4-E3 =((D3-D2)/2)+D2 0 =B3
Electricidad 0,15 112,5 =B4+D3 =C4 =D4-D3 =E4 =C5-E4 =((D4-D3)/2)+D3 0 =B4
Agua 0,12 90 =B5+D4 =C5 =D5-D4 =E5 =C6-E5 =((D5-D4)/2)+D4 0 =B5
Comida 0,3 225 =B6+D5 =C6 =D6-D5 =E6 =C7-E6 =((D6-D5)/2)+D5 0 =B6
Viajes 0,07 52,5 =B7+D6 =C7 =D7-D6 =E7 =C8-E7 =({D7-D6)/2)+D6 0 =B7
[Otros 0,16 120 =B8+D7 =C8 =08-07 =E8 ¡I =((D8-D7V2)+D7 0
250
200 -I
$ 1 50 4
o?
w 100
50
4 • n\Hojal/
LÍO
Figura 5.25. Gráfico de dispersión modificado.
A B C G H
Columnas <le ancho variable Supr. Infer. Arriba EtiqEscala X EtiqEscala Y Texto EtiqEscala
%Comp. Coste (€) 0 =E2 =C3-E2
Gas 0,2 150 =B3+D2 : =03-02 =E3 =C4-E3 =((D3-D2)/2)+D2 =B3
Electricidad 0,15 112,5 =B4+D3 : =04-03 =E4 =C5-E4 =((D4-D3)/2)+D3 =B4
Agua 0,12 90 =B5+D4 = =D5-D4 =E5 =C6-E5 =((D5-D4)/2)+D4 =B5
Comida 0,3 225 =B6+D5 : =06-05 =E6 =C7-E6 =((D6-D5)/2)+D5 =B6
Viajes 0,07 52,5 B7+D6 = =07-06 =E7 =C8-E7 =((D7-D6)/2)+D6 =B7
Otros 0,16 120 =B8+D7 =C8 =D8-D7 =E8 =((D8-D7)/2)+D7
^ • n\Hojal /
X
Figura 5.26. Gráfico de dispersión manipulado para producir un gráfico con columnas
de ancho variable.
co, haga clic con el botón derecho sobre él y seleccione la opción Datos de origen
y luego vaya a la pestaña Serie. Haga clic en A g r e g a r para añadir u n a nueva
serie. En el cuadro de texto Valores X, seleccione el rango 13:18 y en el cuadro de
texto Valores Y, seleccione el rango J3:J8. De formato a la nueva serie de forma
que no tenga marcador: para ello abra el cuadro de diálogo Formato de serie de
datos, vaya a la pestaña Tramas y luego, en el apartado Marcador, seleccione la
opción Ninguno. Ahora llega el momento de utilizar el componente. Asegúrese de
que tiene seleccionada la serie 2 y vaya a Gráfico>JWalk Chart Tools. Cuando se
abra el cuadro de diálogo, haga que el rango de la etiqueta de datos sea K3:K8.
Para añadir u n a nueva serie de datos para proporcionar las etiquetas de la
columna, seleccione el gráfico, haga clic con el botón derecho sobre él, seleccione
Datos de origen y luego vaya a Serie. Haga clic en A g r e g a r para añadir u n a
nueva serie. En Valores X, seleccione el rango 13:18 y en Valores Y seleccione el
rango C3:C8. De nuevo, de formato a la nueva serie de forma que no tenga mar-
cador, de la misma forma que indicamos anteriormente.
Nuevamente usaremos el complemento, pero esta vez seleccionaremos la serie
3 y vincularemos las etiquetas de datos a A3:A8. El resultado debería ser como el
que se muestra en la figura 5.27.
__j
A B C D E F G H I J K
1 Columnas de ancho variable X Y Supr Inferior /Vriba EtiqEscala X EtiqEscala Y Texto EtiqEscala ~\
2 % Cornp Coste(€j 0 150 150 0
3 Gas [ 20% 150,00 € 20,00% 150 r 20,00% 150 -37,5 10,00% 0 20%
r
4 Electricidad 15% 112,50 € 35,00% 112,5 15,00% 112,5 -22,5 27,50% 0 15%
5 Agua 12% 90,00 € 47,00% 90 r 12,00% 90 135 41,00% 0 12%
6 Comida 30% 225,00 € 77,00% 225 r 30,00% 225 -172,5 62,00% 0 30%
7 Viajes | 7% 52,50 € 84,00% 52,5 t 7,00% 52,5 67,5 80,50% 0 7%
8 |Otros | 16% 120,00 € 100,00% 120 "16,00% 120Í 92,00% 0 16%
9
- J
10 250 -
11
12
Comida
13 200 -
14
15
16 - 150 -
Gas
17
: 18 Otros
-' 100 - Electricidad
19
20 Agua
21 50 -
22 Viajes
23
24 0-
20% 15% 12% 30% 7% 16%
25
|H 4 • •! \ H o j a l / M ! ir
Figura 5.27. Gráfico con columnas de ancho variable completado.
A
1 Bandas
B C D E F =
Marcas Etiquetas Marcas Etiquet as Aguja
2 25 180 180 =$F$3&"50% comp. ' 200 Comp.
3 75_ =(180/100)*A2 9 0 =((180/100)*F3)-1 |50
4 =(180/100)*(A3-A2) 18 10 2 H-
5 =360- SUMA(B2:B4) 18 20 =360-SUMA(E2:E4)
6 18 30
7" 18 40
8 18 50
9 18 60
10' 18 70
11 18 80
'12 18 90
13 9 100
14
15 Bajo
16 Normal
17 Alto
18
19
20
H < • •l\Hoj *JJ_ ilL _ J MTJ
Figura 5.28. Datos configurados para ser usados por el velocímetro.
Velocímetro
Figura 5.30. Gráfico de tipo anillo con ángulo de 90°, sin color ni borde en la primera
porción.
Ahora necesitamos añadir otra serie (Serie 2) de valores para formar los seg-
mentos para las etiquetas del semicírculo. Para ello, seleccione el gráfico, haga
clic en el botón derecho sobre él, seleccione la opción Datos de origen y luego
184 Excel. Los mejores trucos
vaya a la pestaña Serie. Haga clic en el botón Agregar con el que creará u n a
nueva serie, y luego, en Valores, seleccione el rango C2:C13. Haga clic de nuevo
en el botón Agregar para añadir u n a tercera serie (Serie 3) con la que crearemos
la aguja del velocímetro. En Valores, seleccione el rango E2:E5. Al final, el resul-
tado debería ser como el de la figura 5.31.
Utilice este complemento para dar formato a la serie 2 para que se muestren
las etiquetas de datos utilizando el rango D2:D13. Manteniendo seleccionada la
serie 2, haga doble clic sobre ella para abrir el cuadro de diálogo de formato. Vaya
a la pestaña Tramas y seleccione Ninguno tanto para el borde como para el área.
Con ello el gráfico debería parecerse al que se muestra en la figura 5.32.
Figura 5.32. Gráfico de tipo velocímetro mejorado, junto con las etiquetas.
Seleccione la serie 3, haga clic con el botón derecho sobre ella y seleccione Tipo
de gráfico. Cambie esta serie para que sea del tipo gráfico circular predetermina-
do. Sí, parece extraño (véase figura 5.33), pero podemos asegurar que si el gráfi-
co circular se superpone con el gráfico de anillo, es que lo ha hecho todo
correctamente.
car) y arrastrándola hacia afuera. Esto hará que el gráfico circular se separe y se
haga más pequeño, tal y como se muestra en la figura 5.34.
Velocímetro
5G* Cotnp.
Velocímetro
Figura 5.35. Gráfico de tipo velocímetro en el que solamente la tercera serie del gráfico
circular muestra un color.
Si desea añadir u n a leyenda, seleccione el gráfico, haga clic con el botón dere-
cho del ratón y seleccione la opción Opciones del gráfico. Luego vaya a la pestaña
Rótulos de datos y seleccione la opción Clave de leyenda. Esto producirá un velo-
5. Trucos sobre gráficos 187
Velocímetro
D Normal
• Alto
Los elementos de tipo texto de un gráfico que puede vincular a una celda son
el título principal del gráfico, los títulos primario y secundario de los ejes X e Y,
así como las etiquetas de datos de las series.
Para ver cómo se hace esto, vincularemos el título del gráfico con u n a celda.
Para ello, comenzaremos introduciendo algunos otros como los que se muestran
en la figura 5.38 y, mediante el asistente para gráficos, crearemos un gráfico de
columnas agrupadas básico. Ahora haga clic en la celda Al 7 y escriba "Edad de
los empleados".
A B
1 Fecha Edad
2 ; 1 /'12/2003 20
3 ] 2/12/2003 25 Edad
:
4 3/12/2003 26
5 : 4/12/2003 23 30
6 \ 5/12/2003 24
;
25
7 6/12/2003 21
8 20
¡ 7/12/2003 20
"™9" ! 8/12/2003 19 15
10
h DEdad
9/12/2003 25 10
10/12/2003 26 5
TÍ 11/12/2003 24
13 12/12/2003 23 0
Í4 13/12/2003 21
15 14/12/2003 22 ,4 ¿F /
3S
17 • Edad de los empleados
18 !
Í9!
mi •IJXHoial /
H « •
_±id
Figura 5.38. Gráfico de columnas agrupadas con su título creado a través del asistente.
El siguiente paso será crear un vínculo entre el título del gráfico y la celda.
Para ello, seleccione el título del gráfico (Edad en este caso), luego vaya a la barra
de fórmulas, escriba un = , haga clic en la celda Al 7 y pulse Intro (tenga en
5. Trucos sobre gráficos 189
cuenta que si hace referencia a u n a celda que se encuentra otra hoja, tendrá que
escribir primero el nombre de la hoja seguido del signo de admiración y del n o m -
bre de dicha celda).
Este mismo proceso funciona para las etiquetas de datos, aunque necesitará
seleccionar u n a etiqueta de datos individual antes de vincularla con u n a cel-
da. Los resultados obtenidos deberían parecerse a los que le mostramos en la
figura 5.39.
A B
Fecha Edad
1/12/2003 20
2/12/2003 25
f E d a d de los e m p l e a d o s !
3/12/2003 26 I B !« 1
4/12/2003 23 30 -,
5/12/2003 24 25
6/12/2003 21
20
7/12/2003 20
8/12/2003 19 15 -H D Edad
9/12/2003 25
10/12/2003 26
11/12/2003 24
12/12/2003 23
21
¿? y y y y y
13/12/2003
14/12/2003 22
Este sencillo truco le permitirá conseguir que los elementos de texto del gráfi-
co y los datos del gráfico estén en armonía. Además, le ahorrará gran cantidad de
tiempo a la hora de crear gráficos.
A B
1 Enero 300
2 Febrero 350
3 Marzo 325 400
4 Abril 275
5 Mayo 0 350
6 Junio 0
300
7 Julio 0
8 Agosto 0 250
9 Septiembn 0
10 Octubre 0 200
11 Noviembre 0
12 Diciembre 0 150
13
14 100
15
16 50
17 —é—|—*—|—*—|—*—|—*—|—*—|—é—
18
19
20
21
</>° *w ^>>v:/y
¿°^°.>°,#,á?.>\>
> cr ^ .¿p
0
22
i".
|n 4 • H \ Ocultar filas/ Devolver #NA / " \<\ j • ) f]
Figura 5.40. Datos y un gráfico de líneas que está dibujando los valores 0.
:
A 6 C D ÉT ; F G H ; ¡ ! J
1 Enero 300
| — « — Seriel
2 Febrero 350 400 -i
3 Marzo 325
350 •
4 Abril 275
13 300 •
^ — • •
14 250 •
15
200 -
16
150 •
17
18 100 •
19 50 •
i
20
0 •
21
Enero Febrero Mario Abril
22
23
24
25
I H 4 • H \ Ocultar filas / Devolver #NA / \<¡ j • | f"j
Figura 5.41. Datos con las filas 5 a 12 ocultas, con el gráfico dibujando solamente los
valores de enero a abril.
El gráfico de la figura 5.40 está dibujando los resultados de ventas por meses.
Esto significa que si el mes actual es abril, el gráfico estará dibujando ocho meses
5. Trucos sobre gráficos 191
Incluso cuando haya escrito varias fórmulas y funciones por usted mismo,
cuando tenga que volver a ellas más adelante, normalmente tendrá que seguir
las referencias a celdas para averiguar qué era lo que hacía la función. Sería u n a
gran idea así se pudiese añadir al final de la fórmula algún texto (que no interfi-
riese con el resultado) que proporcionase más información sobre el mecanismo
de la fórmula, para así poder consultarlo más adelante.
El problema, por supuesto, es que en el momento en el que añada texto como
parte de la fórmula, el resultado de la misma no será numérico y no podrá ser
194 Excel. Los mejores trucos
Cuando u n a fórmula necesita hacerse absoluta, escriba el signo del dólar ($)
delante de la letra de la columna y / o del número de la fila que hace referencia
u n a celda, como por ejemplo en $A$1. Una vez hecho esto, no importa dónde
copie la fórmula que la referencia se mantendrá a la misma celda.
Aveces, de todas formas, deseará configurar numerosas fórmulas que no con-
tengan referencias absolutas, pero sí relativas. Normalmente haría esto de forma
que cuando copie la celda con la fórmula original en otro rango, las referencias a
columnas y filas cambien en función de la nueva ubicación.
Por último, otras veces deseará configurar las fórmulas utilizando u n a mez-
cla de referencias relativas y absolutas y deseará reproducirla en otro rango de la
misma hoja, en otra hoja del mismo libro, o incluso en u n a hoja de otro libro.
Puede hacer todas estas cosas sin tener que cambiar ninguna referencia a rangos
que haya dentro de las fórmulas.
Seleccione el rango de celdas que desea copiar. Vaya a Editar>Reemplazar y en
el cuadro de texto Buscar escriba = (un signo de igual). En el cuadro de texto
Reemplazar con escriba @ (el signo de la arroba), o cualquier otro símbolo que
sepa que no esté siendo utilizado por ninguna de las fórmulas. A continuación
haga clic en el botón Reemplazar todos.
6. Trucos sobre fórmulas y funciones 195
Todas las fórmulas aparecerán en la hoja con el signo @ en lugar del signo =.
Ahora simplemente puede copiar este rango, pegarlo en el destino que desee,
seleccionar dicho rango de destino e ir a Edición>Reemplazar, donde esta vez
reemplazaremos el signo @ por el signo =. Con ello conseguiremos que las fór-
mulas hagan referencia a las mismas celdas que lo hacían las originales.
1 A B C D E F G"'7
1 Nombre Edad Área
2 Juan 22 1a
—-
3 Antonio 33 la
4 Marta 55 2c
5 Cristina 48 3d
6 María 29 3d
7 Carlos 45 4a
3
9 Nombre Edad Área
10 Juan 22 2c
11 Antonio 33 1a
12 Marta 55 2d
13 Cristina 43 3d
14 David 29 3d
15 Carlos 45 4a
16
H 4 • » l \ _ H o i a l / H o i a 2 /jHpja3 /
— I «l l •ifl
Figura 6.1. Dos rangos a ser comparados.
dir la fórmula en un solo paso sin tener que copiar y pegar. Para comparar los
rangos que se muestran en la figura 6.1, seleccione el rango E1:G7, comenzando
por la celda E l . Esto asegurará que dicha celda sea la activa en la selección.
Una vez seleccionado el rango, haga clic en la barra de fórmulas y escriba lo
siguiente:
=A1=A9
El rango El :G7 debería rellenarse con el valor Verdadero (son iguales) o Falso
(no son iguales).
Si los dos conjuntos de datos residen en diferentes hojas de cálculo, puede
utilizar u n a tercera hoja para almacenar los valores Verdadero/Falso, simple-
mente introduciendo la fórmula en la matriz correspondiente. Por ejemplo, su-
poniendo que la segunda tabla está en la Hoja2 y comienza en la celda A9, y la
tabla original está en la Hojal y comienza en la celda A l , deberá introducir en la
tercera hoja la siguiente fórmula utilizando el método de la matriz:
=Hojal!Al=Hoja2!A9
Puede que encuentre útil a ajusfar el zoom cuando trabaje con gran cantidad
de datos.
Una vez hecho esto, vaya a Formato>Formato condicional. Elija la opción Fór-
mula en el cuadro de lista desplegable y al cuadro de texto situado su derecha
escriba la siguiente fórmula:
=N0(A1=A9)
Haga clic en el botón Formato... (véase figura 6.2) y elija el formato con el
que desea remarcar aquellas celdas que sean diferentes.
_j p___ 31 !
Vista previa del formato que desea usar
cuando \a condición sea verdadera: AaBbCcYyZz
Haga clic en Aceptar y todas las celdas que sean diferentes tendrán el formato
que definió en el paso anterior.
Si realiza c a m b i o s en los d a t o s , el f o r m a t o de las celdas c a m b i a r á
automáticamente dependiendo de si la comparación con las celdas de la otra ta-
bla es verdadera o falsa.
Muchas de las funciones de Excel están diseñadas para ser utilizadas en listas.
Para que la mayoría de estas funciones hagan su trabajo correctamente, las lis-
tas no deben contener ninguna celda en blanco y los encabezados de las colum-
nas deben estar configurados con un formato diferente al de los datos.
Cuando rellenar datos en Excel, resulta u n a buena práctica asegurarse de que
todas las celdas que están dentro de una lista tienen algún valor dentro de ellas.
Sin embargo, muchas listas están configuradas de forma similar a como se mues-
tra en la figura 6.3.
Mientras que los precios se repiten en la columna Coste, los tipos de frutas en
la columna Frutas no. Como ya señalamos al principio del capítulo 1, esto puede
198 Excel. Los mejores trucos
Existen dos métodos para rellenar las celdas en blanco de u n a lista: con u n a
fórmula y con u n a macro.
Sub RellenarBIancos( )
Dim rRangel As Range, rRange2 As Range
Dim IReply As Integer
If Selection.Cells.Count = 1 Then
MsgBox "Debe seleccionar la lista e incluir las celdas en blanco",_
vblnformation, "Aviso" ~~
Exit Sub
Elself Selection.Columns.Count>l Then
MsgBox "Debe seleccionar sólo una columna", _
vblnformation, "Aviso"
Exit Sub
End If
rRange2.FormulaRICl = "=R[-1]C"
J J d J _J .j Jk ? U * -J / ^ - 9 Í¿. s - ¿1 M ioo%
Aria . í o . N J s i i i ^ j } % ooo € *oE .„°8 m O - >
D1 * £ =INDIRECTO(DIRECCION(COLUMNA0-3;1))
A B C ~~ D I E F G "~__
LU 1 1 1 2
12 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11
12
13
14
15
16
17 —;
18
19 ^:
il« 4 • H \ Hojal / Hoja2 ' X H o j a 3 / j < j | •ir:
Listo MAYÚS NUM
B
Fecha antigua Fórmula utilizada Resultado
112303 =IZQUIERDA(A2¡2)&T&EXTRAE(A2;3;2)&7"&DERECHA(A2;2) 11/23/03
031123 =EXTRAE(A3;3;2)&7"&DERECHA(A3;2)&7"&IZQUIERDAfA3¡2) 11 /23/D3
231103 = EXTRAE (A4; 3; 2) &"/" &IZQ UIE R D A(A4,2) &7" &D E R E C H A(A4; 2) 11 /23/D3
A B C
Fecha antigua Fórmula utilizada Resultado
112303 =EXTRAEÍA2;3;2)&7"&IZQUIERDAÍA2¡2)&7"&DERECHA(A2;2) 23/11 /03
031123 =DERECHAfA3¡2)&7"&EXTRAEíA3¡3;2)&7"&IZQUIERDAfA3¡2J 23/11 flB
231103 = IZQ UIE R D A(A4; 2) &7" &EXTR AE (A4; 3; 2) &7" &D E R E C H A(A4; 2) 23/11 /03
Por suerte, estas interesantes fórmulas nos quitarán algo de estrés a la hora
de trabajar con fechas importadas.
A ! B C
1 Números' Números2
2 #N/A #N/A
3 1 1
4 2 2
5 3 3
6 4 4
7 5 5
8 6 6
9 7 7
10 8 8
11 9 9
12
•M]¡ Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? ' - ff X
Ahora ya tenemos u n a sola función HOY en vez de las 10.000 que tendría de
la otra forma. Para poner otro ejemplo, digamos que las 500 primeras filas de la
columna B están rellenadas con fórmulas relativas como =H0Y () -Al y las pri-
meras 500 filas de la columna A tienen diferentes fechas que son menores que la
fecha de hoy. Estamos obligando a Excel a recalcular la función volátil HOY 499
veces más de lo necesario, cada vez que realiza cualquier acción en Excel. Si colo-
ca la función HOY en cualquier celda a la que le da el nombre "FechaHoy" (o
cualquier otro nombre similar), puede utilizar la fórmula = FechaHoy-Al en vez
de lo anterior. Con esto, Excel sólo necesitará recalcular una vez la aparición de la
función HOY, lo cual mejorará considerablemente el rendimiento de la aplicación.
A B
1 Nombres
2 David
3 Al ex
4 Ana
5 Marta
6 Ana
7 Santos
8 Laida
9 Mar
10 Luis
11 David
12 Laida
13 Ángel
14 Marta
15 Carolina
16 Marta
17
18
^v Los argumentos para esta función son los mismos que para la función
w^ BDSUMA, que ya vimos anteriormente.
FILA(referencia)
Se anida la función FILA dentro de la función RESIDUO (en el lugar del argu-
mento "número"), se divide por 2 (para sumar cada dos celdas) y se comprueba
que el resultado es 0 (cero). Si lo es, entonces la celda es sumada.
Puede utilizar estas funciones de diferentes formas (consiguiendo mejores re-
sultados utilizando unas en vez de otras). Por ejemplo, u n a fórmula matricial
que sume cada dos celdas en el rango $A$1:$A$100 tendría esta forma:
=SUMA(SI(RESIDUO(FILA($A$1:$A$500);2)=0;$A$1:$A$500;0))
Debe permitir que Excel introduzca estas llaves, ya que si lo hace por
su cuenta hará que la fórmula falle.
=SUMAPRODUCTO((RESIDUO(FILA($A$1:$A$500);2)=0)*($A$1:$A$500))
Debería tener en cuenta, de todas formas, que esta fórmula devolverá #¡VA-
LOR! si alguna de las celdas del rango contiene texto en vez de números. Esta
fórmula, aunque no es u n a verdadera fórmula matricial, también ralentizará
Excel si se utilizan muchas instancias de ella, o si esas instancias hacen referencia
a grandes rangos.
6. Trucos sobre fórmulas y funciones 209
Por suerte, existe un método mucho mejor, que no sólo es más eficiente, sino
que además es más flexible. Este método requiere del uso de la función BDSUMA.
Para este ejemplo, utilizamos el rango A1:A500 como el rango que usaremos
para sumar cada cierto n ú m e r o de celdas.
Introduzca el texto "Criterio" en la celda El y en la celda E2, introduzca la
siguiente fórmula:
=RESIDUO(FILA(A2)-$C$2-1;$C$2)=0
=BDSUMA($A:$A;1;$E$1:$E$2)
Ahora todo lo que tiene que hacer es elegir el número deseado en la celda C2 y
la función BDSUMA hará el resto.
Como puede ver en la figura 6.11, puede utilizar u n a función BDSUMA para
sumar cada celda con el intervalo que haya especificado. Esta función es mucho
más eficiente que u n a fórmula matricial o que la función SUMAPRODUCTO.
Aunque su configuración puede ser algo más compleja, merece la pena el esfuer-
zo para obtener los resultados.
A B C | D E
1 Números
2
I Criterio ^-,
5,00 € FALSO
3 7,50 € ISumando cada 3 celdas
4 23,45 € Esta celda no puede
35,46 €
tener el mismo
5 10,00 € encabezado que la
6 9,96 € de números
7 6,00 €
3
9
A
1
! 1 Nombre Edad
B C
2 Antonio 32
3 Alex 30
4 Ana 23
5 Marta 36
6 Juan 25
7 Santos 30
8 Laida 31
9 Mar 30
10 Luis 28
11 David 23
12 Laida 33
13 Ángel 45
14 Sol 28
15 Carolina 29
16 Concha 30
17 Aitana 38
18 Rodrigo 29
19 Agustín 19
20
Figura 6.12. Datos configurados para ser usados por la función BUSCARV.
lumna A). Luego haga clic en la celda A2 (no saltamos Al porque Bl es un enca-
bezado) e introduzca la siguiente fórmula:
=B2&C0NTAR.SI($B$2:B2;B2)
Propague esta fórmula hacia abajo tantas filas como datos tenga en la colum-
na B (para ello haga clic en la celda A2 y luego haga doble clic sobre el pequeño
recuadro negro de la esquina inferior derecha). Acabará teniendo en la columna
A nombres tales como Davidl, David2, David3, etc., como puede verse en la fi-
gura 6.13. Observe la referencia absoluta para $B$2 en la función CONTAR.SI y
el uso de u n a referencia relativa para todas las referencias. Esto es fundamental
para que la función haga su trabajo correctamente.
A B C D
1 Nombre Edad
• 2 Arito ni oí Antonio 32
¡ 3 Alex Alex 30
| 4 Davidl David 23
1 5 Marta Marta 36
[ 6 David2 David 25
I 7 Santosl Santos 30
8 Laida Laida 31
9 Maríal Mar- 30
10 Luisl Luis 28
11 David3 David 23
12 Carlos Laida 33
13 Angelí Ángel 45
14 Alex2 Alex 28
15 Carolina! Carolina 29
16 Angel2 Ángel 30
17 Aitanal Altana 38
18 Marta2 Marta 29
19 Agustínl Agustín 19
[ 20
Figura 6.13. Datos obtenidos con la fórmula BUSCARV recién añadida a la columna A.
i : £ B C D E
M Nombre Edad
2 Antoniol Antonio 32 23
1 3 Alex Alex 30
4 ;David1 David 23
| 5 Marta Marta 36
I 6 ;David2 David 25
7 Santosl Santos 30
I 8 Laida Laida 31
\ 9 ' María 1 Mar 30
lOLuisI Luis- 28
i 11 J0avid3 David 23
:
12 "ÍCarlos Laida 33
" 13 Angefl Ángel 45
"Í4_*Alex2 Alex 28
15 _ Cardinal Carolina 29
16 Angel2 Ángel 30
17 Aitanal Aitana 38
18 Marta2 Marta 29
19 Aqustínl Agustín 19
20
= SUBTOTALES(1;Al:Al0 0)
Núnijimción Función
1 PROMEDIO
2 CONTAR
3 CONTARA
4 MAX
5 MIN
6 PRODUCTO
7 DESVEST
8 DESVESTP
9 SUMA
10 VAR
11 VARP
Dado que tiene que utilizar un número entre 1 y 11, puede tener u n a función
SUBTOTALES que realice cualquier función que elija. Incluso puede elegir a par-
tir de u n a lista desplegable que se encuentre en cualquier celda. Veamos cómo
podemos hacer esto.
Introduzca todos los nombres de función, en el mismo orden en el que apare-
cen en la tabla 6.1, en un rango de celdas. Para este ejemplo, utilizaremos el
rango D l i D l l . Teniendo seleccionado dicho rango, haga clic en el Cuadro de
nombres situado en la parte superior izquierda de la ventana (a la izquierda de la
barra de fórmulas) y escriba el nombre "Subs". Luego pulse I n t r o .
Seleccione la columna D completamente y luego seleccione la opción For-
mato>Columna>Ocultar. Ahora seleccione la opción Ver>Barras de herramientas>
Formularios, haga clic sobre el icono Cuadro combinado y haga clic en la celda
C2. Cambie el t a m a ñ o del cuadro de lista desplegable utilizando los pequeños
cuadros negros que aparecen alrededor del control, de forma que quepa el n o m -
bre más largo de función (en nuestro caso, PRODUCTO).
Haga clic con el botón derecho en el cuadro de lista desplegable y elija la op-
ción Formato de control y luego vaya a la pestaña Control. En el rango de entra-
da, escriba "Subs" y en la celda vinculada escriba $C$2. Cambie también el número
de líneas a mostrar en la lista desplegable a 11. Cierre el cuadro de diálogo y en la
celda C3 escriba la siguiente fórmula:
A ] B ! c i E
1 Elija una función SUBTOTALES
2 [PROMEDIO • |
3 ¡Resultado de PROMEDIO
4 Valoi I 527.27 €
jd
7 554.21 €
9 500.32 €
10
11
La posibilidad de mostrar el sufijo "th" después del número 15, por ejemplo, es
algo que Excel no contempla en sus formatos de fecha. Peor aún, no es posible
6. Trucos sobre fórmulas y funciones 215
=DAY(TODAY( ))
A B C
1 :200- -200
2 ; 150 150
3 ;35E¡- -356
4 : 200 200
5 526 526
6 301- -301
7; 258 258
8:
9
Figura 6.16. Antes y después de mover el signo negativo.
'Establece una variable sólo para las celdas de tipo texto, por ejemplo,
200-
On Error Resume Next
Set rRange = Selection.SpecialCells(xlCellTypeConstants, xlTextValues)
On Error GoTo 0
End Sub
ción Sistema de fechas 1904 (a este sistema también se llama "Fechas y horas de
Macintosh").
Tenga en cuenta que al hacer esto conseguirá que Excel modifique las
fechas de inicio (desde el 1 de enero de 1900 al 2 de enero de 1904) a
partir de las cuales son calculadas todas las celdas. Esta opción sólo
afectará al libro de Excel con el que esté trabajando.
Ahora ya podrá restar horas entre sí y tener resultados que aparezcan como
valores negativos.
Pruebe esto: vaya a Herramientas>Opciones>Calcular y active la casilla de ve-
rificación Sistema de fechas 1904. Introduzca 5:00:00 en la celda A2, 6:00:00 en
la celda A3 y en la celda A4 escriba =A2-A3. Obtendrá un resultado de -1:00,
pero solamente si ha activado la opción mencionada anteriormente.
Si el hecho de cambiar el sistema de fechas puede causar problemas en el libro
a efectos de otros cálculos con horas, necesitar utilizar otro método que permita
cambiar la apariencia de la celda que contenga un valor negativo.
Con esta fórmula anidada, está restando las celdas A2 y A3 para conseguir un
valor de hora positivo. Luego está aplicando un formato a la celda mediante la
función TEXTO de forma que muestre u n a hora negativa. Mediante el uso de la
combinación de funciones MAX y MIN, sea seguro de que siempre resta la hora
mayor menos la hora menor.
=SI(Al=l;BUSCARV(Bl;Tablal;2;FALSO);IF(Al=2;BUSCARV(Bl;Tabla2;2;
FALSO);""))
representa un mes diferente del año. Cada tabla consta de dos columnas y con-
tiene los nombres de cinco empleados y cinco cantidades correspondientes. A cada
tabla se le ha dado un nombre en función del mes que representa (por ejemplo, la
tabla con los datos de enero se llama "Enero", etc.), tal y como se muestra en la
figura 6.17.
B C D E F G H J
1
Enero Febrero Marzo Abril 1
Nombre Cantidad Nombre Cantidad Nombre Cantidad Nombre Cantidad 1
Francisco 20 Francisco 23 Francisco 25 Francisco 43
Ana 21 Ana 21 Ana 11 Ana 34
Juan 22 Juan 14 Juan 21 Juan 22
Paco 23 Paco 34 Paco 23 Paco 13
María 20 María 12 María 34 María 25
Mayo Junio Julio Agosto 1
1 Nombre Cantidad Nombre Cantidad Nombre Cantidad Nombre Cantidad 1
Alex 45 Alex 21 Alex 25 Alex 34
Carlos 32 Carlos 45 Carlos 23 Carlos 23
Carolina 24 Carolina 23 Carolina 34 Carolina 11
Torn 11 Torn 12 Torn 11 Torn 32
César 12 César 32 César 15 César 35
Septiembre Octubre Noviembre Diciembre
iNombre Cantidad Nombre Cantidad Nombre Cantidad Nombre Cantidad I
Alex 20 Alex 21 Alex 11 Alex 27
Carlos 23 Carlos 25 Carlos 21 Carlos 16
Carolina 34 Carolina 18 Carolina 29 Carolina 22
Toni 23 Toni 42 ¡Toni 25 Toni 27
I César 18 César 34 César 1_7 César 12!
Figura 6.17. Doce tablas, cada una representando un mes del año.
A pesar de que Excel dispone de muchas funciones para fechas y horas, al día
de hoy no existe u n a función que, por ejemplo, nos indique cuántos lunes hay en
el mes de enero para el año 2005. Podemos utilizar varias funciones m u y anida-
das de fecha y hora de Excel para conseguir esto, pero por desgracia, como ya
podrá imaginarse, es m u y complicado y enrevesado.
Éste es u n o de los casos en los que VBA puede simplificar enormemente u n a
tarea complicada. En vez de combinar complejas funciones, podemos escribir u n a
función personalizada que haga lo mismo y que luego podamos pasarle el día y
la fecha que queremos calcular. Podemos utilizar la siguiente función para deter-
minar cuántos días hay en un mes especificado. Por ejemplo:
=CuantosDiasEnUnMes("1/12/03","mié")
iDiaCoincidente = Weekday(FechaCompleta)
Select Case UCase(sDia)
Case "DOM"
iDia = 1
Case "LUN"
iDia = 2
Case "MAR"
iDia = 3
Case "MIÉ"
iDia = 4
Case "JUE"
iDia = 5
Case "VIE"
iDia = 6
Case "SAB"
iDia = 7
End Select
iDiasEnMes = Day(DateAdd("d", -1, DateSerial _
(Year(FechaCompleta), Month(FechaCompleta) + 1 , 1)))
FechaCompletaNueva = DateSerial(Year(FechaCompleta),
Month(FechaCompleta), iDiasEnMes)
For i = iDiasEnMes - 1 To 0 Step -1
If Weekday(FechaCompletaNueva - i) = iDia Then
CuantosDiasEnUnMes = CuantosDiasEnUnMes + 1
End If
Next i
End Function
¿Le llena de terror el simple hecho de tener que pensar en funciones anidadas,
dejando aparte su construcción? Algunas de esas celdas, con cálculos complica-
dos y enrevesados, también nos hacen sentirnos un poco asustados a nosotros.
Pero con un poco de esfuerzo y trabajando paso a paso, podemos crear mega
fórmulas sin tener miedo. Y quizá, sólo quizá, incluso podrá ser capaz de leer y
entender estas fórmulas más adelante.
El truco está en construir las fórmulas poco a poco, utilizando las funciones
estándar de Excel. Utilice u n a función por celda, obteniendo un resultado indivi-
dual que sea manejable y luego anídelas j u n t a s para obtener el resultado final
que desea. A continuación veamos un ejemplo de este proceso en acción.
Digamos que le han dado u n a larga lista de nombres de personas, compuesta
por el nombre, primer apellido y segundo apellido (todos ellos en u n a única celda
de cada fila). El trabajo consiste en escribir u n a fórmula en la columna adyacente
que extraiga solamente el segundo apellido de la persona.
Lo que tendremos después será el comienzo del segundo apellido (la tercera
palabra) de la celda. Por el momento, lo que tendremos que buscar es la posición
del segundo carácter espacio dentro de la celda. Excel no dispone de u n a función
que busque automáticamente el segundo carácter espacio dentro de u n a celda,
pero no proporciona la función ENCONTRAR que permite hacer búsquedas, lo
cual es lo que necesitamos.
Introduzca el nombre David Pérez Cardenal (o cualquier otro nombre) en la
celda A l . Luego, en la celda Cl, introduzca esta función:
=ENCONTRAR(" ";A1)
Observe que esta vez hemos pasado un tercer argumento a la función EN-
CONTRAR, que indica la posición inicial que se encuentra en la celda Cl (6 en
este ejemplo) más 1. Esto no servirá como punto de partida para que la segunda
función ENCONTRAR busque el segundo espacio. Por tanto, lo que esta última
función nos devuelva, será la posición del segundo espacio.
Teniendo esto realmente, la siguiente función que tenemos que construir es
aquella que escriba todos los caracteres a partir del segundo espacio hasta el final
de la cadena. Para ello utilizaremos la función EXTRAE, que como su nombre
indica, extrae un rango de caracteres a partir de u n a cadena de texto. En la celda
C3, introduzca lo siguiente:
= E X T R A E ( A l ; C 2 + 1 ; 2 5 6)
En nuestro caso, hemos pedido a la función EXTRAE que extraiga 256 carac-
teres a partir de texto de la celda A l , comenzando por el primer carácter que se
encuentra después del segundo espacio. Hemos utilizado el número 256 para
asegurarnos de que obtenemos todos los caracteres hasta el final de la cadena,
independientemente de su longitud (no importa si en la cadena quedan menos
caracteres de los que indiquemos; la función devolverá tantos como pueda).
Con todas las piezas a mano, ha llegado el momento de construir la fórmula
completa: una fórmula anidada que le daba pánico hace unos minutos. Básica-
mente, todo lo que tenemos que hacer es reemplazar todas las referencias a cel-
das (excepto A l ) de las funciones con las fórmulas que había en esas celdas.
Podemos hacer esto usando cortar y pegar en la barra de fórmulas.
Haga clic en la celda C2 y en la barra de fórmulas, seleccione la función y
copíela por completo, exceptuando el signo de =, de esta forma:
ENCONTRAR(" ";A1;C1+1)
Pulse Intro para abandonar la celda, con lo que estaremos en la celda C3. Una
vez seleccionada, en la barra de fórmulas, sombree la referencia a la celda C2 y
6. Trucos sobre fórmulas y funciones 227
Si sigue las directrices de este concepto, observará que puede construir mega
fórmulas utilizando gran variedad de funciones de Excel. Lo que tiene que hacer
es primeramente planificar la forma en la que puede conseguir su objetivo y
luego utilizar celdas individuales para obtener los resultados parciales que nece-
sita. Por último, reemplace todas las referencias a celdas con las funciones que
están almacenadas en dichas celdas.
celdas, hojas y libros. Realmente esto impide que se produzcan errores de sintaxis
y de tipos, pero si se utiliza con funciones anidadas, sabrá que la fórmula se
convertirá rápidamente en algo enorme y m u y difícil de seguir.
Por ejemplo, eche un vistazo a la siguiente fórmula:
=ENTERO(SUMA('C:\Mis documentos\Excel\Finanzas\Programas de
ventas\[Ventas.xls]Ventas de productos'!C2:C2924))
A B C D E F G
1 Nombre Fechas Coste total Cantidad pagada Porcentaje pagado Coste restante
2 Antonio 15/2/2004 32,00 € 22,00 € 69% 10,00 €
3 Al ex 16/2/2004 30,00 € 12,00 € 40% 18,00 €
4 David 17/2/2004 23,00 € 16,00 € 70% 7,00 €
5 Marta 18/2/2004 36,00€ 36,00€ 100% - €
6 David 19/2/2004 25,00 € 21,00 € 84% 4,00 €
7 Santos 20/2/2004 30,00 € 15,00 € 50% 15,00 €
8 Laida 21/2/2004 31,00 € 18,00 € 58% 13,00 €
9 Mar- 22/2/2004 30,00 € 19,00 € 63% 11,00 €
ÍO Luis 23/2/2004 28,00€ 12,00 € 43% 16,00 €
11 David 24/2/2004 23,00€ 23,00 € 100% - €
12 Laida 25/2/2004 33,00€ 12,00 € 36% 21,00 €
13 Anqel 26/2/2004 45,00 € 23,00 € 51% 22,00 €
14 Al ex 27/2/2004 28,00 € 9,00 € 32% 19,00 €
15 Carolina 28/2/2004 29,00 € 18,00 € 62% 11,00 €
"16"; Ángel 29/2/2004 30,00€ 23,00 € 77% 7,00 €
Í7
18 ;
Propague esta fórmula hasta la celda F2, de forma que tenga u n a copia
sincronizada de los encabezados de la tabla. En la celda A3, introduzca cualquier
nombre de los que exista en la tabla de la primera hoja, como por ejemplo John
D. luego, en la celda D3, introduzca la siguiente fórmula:
=BDEXTRAER(TodosLosDatos;B2;$A$2:$A$3)
Propague esta fórmula hasta la celda F3 y de formato a las celdas C3:F3 como
sea requerido.
230 Excel. Los mejores trucos
Para copiar rápidamente las celdas como ésta sin formato, seleccione
la celda, haga clic con el botón derecho del ratón en el pequeño recuadro
de propagación y, manteniendo pulsado el botón derecho del ratón,
arrastre el cursor hasta donde sea necesario. Luego seleccione la opción
Rellena sin formato.
Dado que muchas tablas no son estáticas (es decir, sus datos están
continuamente modificándose, ya sea añadiendo o eliminando
N registros), debería considerar la posibilidad de utilizar rangos dinámicos
con nombre para la columna Nombre.
Opeiütloies
Para dar nombre a este rango, seleccione el encabezado y todos los operadores
por debajo de él, seleccionando luego la opción Insertar mayor que Nombre>Crear.
Asegúrese de que está activada la opción Sólo fila superior y haga clic en Aceptar.
Excel dará nombre automáticamente al rango basándose en el encabezado (en
este caso, Operadores).
Seleccione la celda G7 e introduzca el encabezado "Seleccione un criterios".
Teniendo seleccionadas las celdas G7 y H7, céntrelas yendo a Formato>Celdas>
Alineación y luego eligiendo en el cuadro de lista desplegable Horizontal la opción
Centrar en la selección. Seleccione las celdas G8 y H8, vaya a Datos>Validación y
seleccione la opción Lista en el cuadro de lista desplegable. En el cuadro de texto
Origen introduzca " = Operadores". Asegúrese de que está activada la casilla de
verificación Celda con lista desplegable y luego haga clic en Aceptar.
Vuelva a la hoja Datos y cree un rango dinámico con nombre para la columna
Fechas. Vaya a lnsertar>Nombre>Definir, en el cuadro de texto Nombres en el libro
6. Trucos sobre fórmulas y funciones 233
=BDSUMAR(TodosLosDatos;Datos!$C$1;$G$11:$H$12)
G H I J
Seleccione un criterio
Seleccione un a fecha
19/02/01 20/02/01
Fech as Fechas
=G88JEXTO(G10; 'dd/mm/aa") ==H8&TEXT0(H10; "dd/mm/aa")
1
Resultado =B D S U MAR (To d o s Lo s D at o!Ü¡C$1;H¡G$11:$HÜ¡
s; b at o s 2)
Seleccione un criterio
>= <=
Seleccione una fecha
19/02/01 20/02/01
Resultado 90 €|
Las macros hacen que sea m u y fácil automatizar tareas repetitivas en Excel,
pero la forma en la que son creadas y las facilidades para utilizarlas a veces son
problemáticas. Por suerte, Excel es flexible lo suficientemente como para que pueda
solucionar esos problemas y crear nuevas características con un mínimo esfuerzo.
1
una Macro
' Macro grabada el 1/12/2003 por Susana
Application.ScreenUpdating = False
•SU CÓDIGO
Application.ScreenUpdating = True
End Sub
Observe que hemos vuelto a establecer esta propiedad a True después de com-
pletar la macro. Aunque Excel siempre volverá a activar esta propiedad tan pron-
to como el foco vuelva a él (es decir, cuando la macro termine y el usuario vuelva
a interactuar con la aplicación), en muchos casos es mejor asegurarse e incluir el
código al final.
En algunos casos, se e n c o n t r a r á con que la propiedad A p p l i c a t i o n .
S c r e e n U p d a t i n g ha vuelto a activarse antes de que la macro grabada se haya
completado. Esto puede ocurrir con macros grabadas que utilicen el comando
S e l e c t con frecuencia. Y en caso de que esto suceda, puede que tenga que repe-
tir la sentencia A p p l i c a t i o n . S c r e e n U p d a t i n g = F a l s e en otras partes de la
macro.
En Windows, la manera más rápida para llegar al módulo privado del objeto
Workbook (ThisWorkbook) es haciendo clic con el botón derecho del ratón en el
icono de Excel situado a la izquierda del menú Archivo y luego seleccionar la
opción Ver código (en Macintosh, debe abrir el editor de Visual Basic y luego
abrir el módulo para el objeto Workbook desde la ventana de proyecto). Una vez
en este sitio, introduzca el siguiente código:
Prívate Sub Workbook_Open( )
Application.OnTime TimeValue("15:00:00"), "MiMacro"
End Sub
MiMacro debería ser el nombre de la macro que desea ejecutar. Debería residir
en un módulo estándar y contener el método OnTime, de la siguiente forma:
Sub MiMacro( )
'SU CÓDIGO
End Sub
Esto ejecutará el procedimiento MiMacro todos los días a las 15:00, tan pron-
to como se abra Excel. Ahora suponga que desea ejecutar MiMacro a intervalos
de 15 minutos después de abrir el libro. De nuevo, desearemos configurar esta
programación tan pronto como se abra el libro. De nuevo, haga clic con el botón
derecho del ratón sobre el icono de Excel situado a la izquierda del m e n ú Archivo,
seleccione la opción Ver código e introduzca el siguiente código:
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnTime dTime, "MiMacro", , False
End Sub
'SU CÓDIGO
End Sub
Archivo Edición Ver Insertar Formato Depuración Ejecutar Herramientas Complementos Ventana Ayuda
¡Hoja3 Worksheet
Alfabética | p o r categorías j
I Hoja3
JDisplayF'ageBreaks False
DisplayRightToLeft False
EnableAutoFilter False
EnableCalculation True
EnableOutlining False
EnablePivotTable False
EnableSelection 0 - xlNoRestriction:
¡Ñame Presupuesto
ScrollArea
Figura 7.1. Los CodeNames y los nombres de hojas en la ventana de proyectos de VBE.
Cuando tiene muchos botones en un libro y cada botón se utiliza para ejecu-
tar u n a macro en especial, puede asociar las macros a los botones haciendo clic
con el botón derecho del ratón en su borde y elegir la opción Asignar macro.
Luego debe encontrar la macro adecuada en el cuadro de diálogo y seleccionarla,
tal y como se muestra en la figura 7.2.
Como cada botón es normalmente utilizado para ejecutar u n a macro diferen-
te, deberá desplazarse por la lista de macros para encontrar la que está buscando.
Sin embargo, existe u n a manera m u y sencilla para asignar a todos los botones
u n a misma macro y a ú n así hacer que cada u n o de ellos ejecute u n a macro
diferente. Coloque el siguiente código en cualquier módulo estándar. Seleccione
Herramientas>Macro>Editor de Visual Basic ( A l t / O p c i ó n - F l l ) y cree un nuevo
módulo seleccionando la opción lnsertar>Módulo y luego introduciendo el siguiente
código:
Sub QueBoton( )
Run Application.Caller
End Sub
7. Trucos sobre macros 243
•-V
€ ffl- .**
A F G I-—
1 Eliminar fila:
C D E
1 Añadir fila !
Pegar Borrar C Imprimir
Llamada •;
[
1
Solicitar
U:-•:•:•:•:•:•:•:•:*-*:•:•••:•:.:•:•:•:• I Jombre de la macro:
2
Libro2! ThisWorkbook. Imprimir 3[ Aceptar 1
9 87 Gonzalo Domínguez
10 26 Carlos Buitrago
Raeros en:
Descripción
¡Este libro
" 3
11 12 Susana Mulero
12 35 Lanolina Estrada 1
|H 4 • •! \ H o j a l / Hoja2 / Hoja3 /
i4 1
Listo NUM
Figura 7.2. Botón Imprimir seleccionado y con el cuadro de diálogo Asignar macro
activo, teniendo seleccionada también la macro en cuestión.
Ahora, simplemente necesita asignar a cada botón el mismo nombre que tie-
ne la macro que debería ejecutar. Para cambiar el nombre de un botón, simple-
mente haga clic en él y reemplace el nombre que aparece en el Cuadro de nombres
(que está a la izquierda de la barra de fórmulas) con el nombre de la macro que
debería ejecutar. Haga esto mismo para todos los botones. De esta forma, si a un
botón le ha llamado Macrol y le ha asignado la macro QueBoton, cuando haga
clic sobre él, ejecutará la macro Macrol.
^\Mmiwmmmmmmm'&^-: * • JnJüJ
&§ Archivo Edición Ver Insertar Formato Depuración Ejecutar Herramientas Complementos Ventana Ayuda
-S x
' JJ -J < vi' _ J v Lín 2, Col 1 »
•• • XI 1 UserForm
3 Click -______j
Click
J - ¡ ~ g - E u r o T o o l ( EURO TOOL.XLA)
Privat.p Si.ü:
Dbiciick
*R
i'
i - <jg VBAProject (Libro2.xls) End Sub Error
11 - \ Microsoft Excel Objetos
! S] Hojal (Hojal) KevDown
| Q ThisWorkbook KeyPress
j - v Formularios KeyUp
El UserForm 1 Layout
MouseDown
*] MouseMove
j UserForm 1 UserForm ~^]
Alfabética | p o r categorías |
Ahora todo lo que necesita es escribir algo de código en el módulo privado del
objeto Workbook (ThisWorkbook). En el explorador de proyectos, debería ver el
nombre del libro. Expanda las carpetas que se encuentran debajo de libro hasta
que encuentre ThisWorkbook dentro de la carpeta Microsoft Excel Objetos. Haga
doble clic en ThisWorkbook para mostrar su módulo privado. En dicho módulo
privado, introduzca el siguiente código:
Private Sub Workbook_Open( )
UserForml.Show
End Sub
Cierre la ventana para volver a Excel. Guarde y cierre el libro y vuelva a abrir-
lo para ver la ventana de presentación en acción. Puede ver un ejemplo de esto en
la figura 7.4.
H
Hacer que una celda quede marcada
o desmarcada al seleccionarla
A veces resulta difícil elegir opciones utilizando las casillas de verificación.
Por suerte, podemos simplificar este proceso utilizando un poco de código
muy sencillo.
Podemos utilizar los libros de Excel para recolectar datos para encuestas. Nor-
malmente hacemos esto ofreciendo los usuarios u n a serie de respuestas entre las
que elegir y colocando casillas de verificación j u n t o a ellas. Entonces los usuarios
activarán las casillas que consideren oportunas. El problema de usar este método
es que probablemente el libro acabará teniendo cientos de casillas de verificación.
En vez de ello, podemos utilizar un código VBA m u y sencillo para marcar
cualquier celda dentro de un rango especificado en el momento en el que sea
seleccionada. En caso de que la celda vuelva a ser seleccionada, el código elimina-
rá la marca. El truco para este código será utilizar la letra "a" en dichas celdas
utilizando la fuente Marlett. Cuando llegue el momento de recolectar los resulta-
dos, simplemente utilizaremos la función CONTAR.SI para contar las apariciones
de la letra "a", como se muestra a continuación:
=CONTAR.SI($A$1:$A100;"a")
Los siguientes códigos de ejemplo sólo funcionan para el rango Al :A100, pero
puede modificarlos fácilmente para que se ajusten a cualquier rango. Para utili-
zar el código, active la hoja en la que debería mostrarse las marcas, haga clic con
el botón derecho del ratón sobre el nombre de la hoja (en la pestaña de la parte
248 Excel. Los mejores trucos
Una vez que haya colocado el código deseado en su lugar, simplemente cierre
la ventana para volver a Excel y luego guarde el libro. Si desea averiguar si u n a
celda está o no activada, simplemente examine sus contenidos.
Para poder hacer esto, primeramente abra el libro en el que desee contar o
sumar celdas dependiendo del color de relleno. Vaya a Herramientas>Macro>Editor
7. Trucos sobre macros 249
ICol = rColor.Interior.Colorlndex
FuncionColor = vResult
End Function
que suma los valores dentro del rango $A$1:$A$12 que tengan el mismo
color que la celda $C$1. En este caso la función para u n a suma porque hemos
utilizado TRUE como último argumento para la función. Si desea contar las cel-
das en vez de sumarlas, pero solamente aquellas cuyo color sea como el de la
celda $C$1, utilice la siguiente expresión:
=FuncionColor($C$1;$A$1:$A$12;FALSE)
o:
=FuncionColor($C$1;$A$1:$A$12)
A B C D E F
1 20
2 22
3 23
4 ; 25
5 ' 26
6 27
7 29
8 30
' 9 31
10 32
11 54
12 21
13 78 =FiincionColor($C$1;$A$1:$A$12;VERDADERO)
14 3 =FuncionColor($C$1;$A$1:$A$12)
15
16
17
18 :
, n
F¥ may 2004 [2004*^] f:
I I El ra --i;;
3 4 5 6 7 8 9
10 11 12 13 14 15 16
Calendar 1 (.alendar
J
Alfabética I p 0 r categorías ¡
,17 18 19 20 21
- 23
(Acerca de)
Calendar 1 24 25 26' 27 28 29 30
• &H8000000F&
31
21
(Fuente)
• &H0ÜÜ00000&
Sistema (media)
lun
En relieve
(Fuente)
• &HÜ0A00Ü00& ,
n ftHñnnnnnmftí JÜJ
End Sub
Sub Mostrar( )
UserForml.Show
End Sub
t*nüm*mmwMmmmmmmm njid
Archivo Edición Ver Insertar Formato Depuración Ejecutar Herramientas Complementos Ventana Ayuda
-0
r i u r o T o o l (EUROTOOL.XLA) Vi
pUfflWjK _2H||
. !~ "
L VBAProject (Libro3) i
'. j Aceptar
l ::::
-f
i
t • • • • •
nsmanaraia!
U s e r F o r m l UserForm
Este código se recorre todas las hojas que hay en el libro activo. En caso de que
haya alguna protegida, la desprotege utilizando la contraseña introducida en el
cuadro de texto. Si la hoja ya estaba desprotegida, entonces la protege utilizando
la contraseña. Ahora vaya a lnsertar>Módulo introduzca el siguiente código:
Sub MostrarContraseña( )
UserForml.Show
End Sub
Este código sirve para mostrar el formulario. Ahora cierre esta ventana para
volver a la ventana principal de Excel.
Vaya a Herramientas>Macro>Macros (Alt/Opción-F8). Seleccione la macro
MostrarContraseña y haga clic en el botón Opciones para asignar u n a tecla de
acceso rápido. Cuando pulse dicha tecla, todas las hojas desprotegidas se prote-
gerán, y las que estuviesen protegidas, quedarán desprotegidas.
Sub Proteger_desproteger( )
Dim wSheet As Worksheet
.Unprotect Password:=""
Else
.Protect Password:=""
End If
End With
Next wSheet
End Sub
Las tres funciones definidas por el usuario que explicamos en este apartado
colocan el nombre de un libro dentro de u n a celda, o el nombre de archivo y la
r u t a del libro en u n a celda. Los dos p r i m e r o s ejemplos, M i N o m b r e y
MiNombreCompleto, no tienen argumentos. El último, NombreHoja, se utiliza
en lugar de anidar la función EXTRAER y las otras dos funciones dentro de la
función CELDA para obtener el nombre de la hoja, un proceso que normalmente
requeriría la siguiente fórmula espantosa:
=EXTRAER(CELDA("nombrearchivo";$A$l),ENCONTRAR("]";
CELDA("nombrearchivo";$A$1))+1;2 5 5)
Como puede ver, esto requiere ciertamente escribir bastante para un resulta-
do t a n simple. Es por ello que hemos desarrollado nuestra propia función
NombreHoja.
Para utilizar esta función definida por el usuario, pulse A l t / O p c i ó n - F l l , se-
leccione Insertar>Módulo y copie el siguiente código:
Function MiNombre( ) As String
MiNombre = ThisWorkbook.Ñame
End Function
Function NombreHoja(rAnyCell)
Application.Volatile
NombreHoja = rAnyCell.Parent.Ñame
End Function
256 Excel. Los mejores trucos
B
Fórmula Resultado
!=MiNombreQ Presupuestos.xls
=MiNornb re Completo C:\Mis docurnentos\Excel\Presupuestos. xIs
=C E LD A(" n o m b re a re h ivo")
C: \ M i s d o c u rn e nt o s\E x c e l\[ P re s u p u e st o s. x I s ] H o j a 1
=NombreHoja(A1) Hojal
End Sub
Ahora cierre esta ventana para volver a la hoja de cálculo. Los resultados de-
berían parecerse a los que se muestran en la figura 7.10.
A B
1 Números
2 3
3
4 3
5
6 13
7
8 18
9 23
10 28
11 3
12 7
13 12
14 17
15 23
16 28
17
13
Figura 7.9. Datos rellenados para el experimento del formato condicional.
A B
1 Números
2 3
3
4 j,' - ' '8
5
I 6 13
7
I 8 SÉSiPISÜIil
:
9 23
10 mmm
11 3
12 7
13 12
14 17
15 23
16 28
17
| 18
Figura 7.10. Como deberían aparecer los datos una vez que se haya introducido
el código.
Sub MiMacro( )
Hojal.Unprotect Password:="Secreta"
•SU CÓDIGO
Hojal.Protect Password:="Secreta"
End Sub
7. Trucos sobre macros 259
End Sub
Este código resulta bueno si cada hoja en la que desea que funcionen las macros
tiene u n a contraseña diferente, o si no desea proteger todas las hojas. Puede esta-
blecer el argumento U s e r l n t e r f a c e O n l y a T r u e sin tener que desproteger pri-
mero. Si desea establecer el argumento U s e r l n t e r f a c e O n l y a T r u e en todas
las hojas, y éstas tienen la misma contraseña, puede utilizar el siguiente código,
que deberá ser colocado en el mismo lugar en el que fue colocado el anterior:
260 Excel. Los mejores trucos
^ ^ ^ Q Distribuir macros
11 ^ V f f f ^ l Aunque puede distribuir una macro a lo largo de un libro, si solamente desea
^ K ^ ^ H distribuir su funcionalidad, la solución es utilizar los complementos de Excel.
• Siempre debe incluir algún tipo de gestión de errores (sí, la mayoría de los
complementos causaron errores en algunas ocasiones).
• Tenga en cuenta que el usuario puede tener muchos sistemas de protec-
ción aplicados. Nunca utilice código para desproteger cualquier parte de
libro del usuario. Simplemente muestre un mensaje preguntando al usuario
si le permite desproteger el libro.
• Haga buen uso de la hoja de que dispone en el complemento. Utilizaremos
las hojas para almacenar configuraciones, como puedan ser barras herra-
mientas.
• Si se mantiene pulsada la tecla M a y ú s , no se evitará que se ejecuten los
eventos del complemento (a diferencia de cómo ocurre con los archivos
normales .xls).
• Si desea explorar o trabajar nuevamente el complemento, ya sea para in-
corporar actualizaciones o para hacer modificaciones, vaya al Editor de
Visual Basic estando el complemento instalado, y desde la ventana de pro-
piedades, seleccione la propiedad I s A d d i n y establezca su valor a F a l s e .
Si desea guardar el libro como un complemento, esta propiedad volverá a
estar en T r u e .
• Aplique alguna protección a los módulos de su complemento seleccionan-
do la opción Herramientas>Propiedades de VBProject y yendo a la pestaña
Protección.
Una vez que haya creado el complemento, necesitará hacer que las macros
contenidas en él sean sencillas de ejecutar por el usuario. Todo lo esto lo conse-
g u i r á u t i l i z a n d o los eventos W o r k b o o k _ A d d i n I n s t a l l y W o r k b o o k _
A d d i n U n l n s t a l l que se e n c u e n t r a n en el m ó d u l o p r i v a d o del objeto
ThisWorkbook. Simplemente ha de hacer doble clic en ThisWorkbook del ar-
chivo *.xla y Excel le llevará directamente al módulo privado en donde se en-
cuentra el código, tal y como se muestra en la figura 7.11.
A continuación tenemos un ejemplo sencillo del código:
Option Explicit
Dim cControl As CommandBarButton
Prívate Sub Workbook_AddinInstall( )
End Sub
End Sub
Archivo Edición Ver Insertar Formato Depuración Eiecutar Herramientas Complementos Ventana Ayuda
SjHoial (Henal)
H] Hoia2 (HoiaJ)
H] Hoiai: (Hoiaü)
B] Hoia4 (,Ho)a4)
9I1HSÍ
\ Formularios
EÜ UserForml
ThisWorkbook Workbook
Alfabética | p o r categorías ]
(Ñame) ThisWorkbook
f3EBBBB!fei91iiaíTni False
"
AutoUpdateFrequer 0
ChangeHistoryDura 0
ConflictResolution 1 - xlUserResolutk
Date 1904 False
|DisplayDrawingObie -4104 - xlDisplay5l
DisplaylnkCornment True
lEnableAutoRecover True
¡EnvelopeVisible False
macro (que se encuentra dentro del módulo estándar del complemento) se ejecu-
tará. Recuerde que el código anterior debe ser colocado en un módulo privado del
objeto ThisWorkbook del complemento.
Si, por ejemplo, desea añadir el elemento de m e n ú antes del elemento Forma-
to, puede utilizar el siguiente código:
Option Explicit
Run "EliminarMenu"
End Sub
Sub AnadirMenus( )
Dim cMenul As CommandBarControl
Dim cbMainMenuBar As CommandBar
Dim iHelpMenu As Integer
Dim cbcCutomMenu As CommandBarControl
1
(1)Elimina cualquiera que exista. Debemos usarOn Error Resume next por
si no existiera.
On Error Resume Next
Application.CommandBars("Worksheet Menú Bar").Controls("&Nuevo
menú").Delete
'(2)Establecemos la variable CommandBar a la barra de menús de la hoja
Set cbMainMenuBar =
Application.CommandBars("Worksheet Menú Bar")
1
(3)Devolvemos el índice del menú Ayuda. Podemos usar esto para colocar
un elemento de _
menú delante de él
iHelpMenu = _
cbMainMenuBar.Controls("Help").Index
1
(4)Añadimos un control a "Worksheet Menú Bar" antes del menú "Ayuda".
'Establecemos una variable CommandBarControl a él.
Set cbcCutomMenu = _
cbMainMenuBar.Controls.Add(Type:=msoControlPopup, _
Before:=iHelpMenu)
On Error GoTo 0
End Sub
Sub EliminarMenu( )
On Error Resume Next
Application.CommandBars("Worksheet Menú Bar").Controls("&Nuevo
menú").Delete
On Error GoTo 0
End Sub
Al hacer esto, nos estamos asegurando de que Excel sepa qué macro tiene que
ejecutar cuando el usuario haga clic en el botón. Con estos códigos encontrará
que es m u y sencillo distribuir y utilizar macros con todo su potencial.
CAPÍTULO 8
Conectando Excel
con el mundo
Trucos 95 a 100
Excel ha tenido desde hace mucho tiempo conexión con otros miembros de la
familia Microsoft Office, así como con bases de datos. Con el crecimiento de
Internet, Excel ha incorporado funciones de exportación a HTML, haciendo que
sea fácil publicar información creada en esta aplicación. Sin embargo, durante
los últimos años, Microsoft ha desarrollado algunas funciones que le permiten
utilizar Excel como u n a interfaz para ver información publicada en cualquier
lugar, así como hacer que su información pueda ser llevada fuera de Excel y ser
vista en cualquier tipo de formulario que desee, proporcionando solamente aque-
llos datos que considere oportunos. Al mismo tiempo, numerosos programado-
res han creado métodos para obtener información en Excel y para publicarla
fuera de éste, permitiendo utilizar hojas de cálculo sin necesidad de tener Excel.
cilio. Sin embargo, hasta hace poco, resultaba difícil superar el t r a m o que había
entre los documentos XML y la interfaz, a pesar de que existían herramientas
genéricas ya disponibles. Con Excel 2003 todo esto es mucho más sencillo, al
menos para aquellos datos que puedan ajustarse a u n a tabla.
<venta>
<fecha>2 003-10-05</fecha>
<ISBN>0596 0 053 8 5</ISBN>
<Titulo>0ffice 2003 XML Essentials</Titulo>
<Precio>34.95</Precio>
<cantidad>2 0 0</cantidad>
<Cliente ID="1025">Zork's Books</cliente>
</venta>
<venta>
<fecha>2 0 03-10-05</fecha>
<ISBN>05 96 0 02 92 0</ISBN>
<Titulo>XML in a Nutshell, 2nd Edition</Titulo
<Precio>3 9 . 95</Precio
<cantidad>9 0</cantidad>
<Cliente ID="1025">Zork's Books</cliente>
</venta>
<venta>
<fecha>2 003-10-05</fecha>
<ISBN>05 96 0 02 3 78</ISBN>
<Titulo>SAX2</Titulo
<Precio>2 9 . 95</Precio
<cantidad>3 0 0</cantidad>
<Cliente ID="1025">Zork's Books</cliente>
</venta>
<venta>
<fecha>2 0 03-10-05</fecha>
<ISBN>0596 0 053 85</ISBN>
<TituloOffice 2003 XML Essentials</Titulo
8. Conectando Excel con el mundo 269
<Precio>34.95</Precio>
<cantidad>10</cantidad>
<Cliente ID="1029">Books of Glory</cliente>
</venta>
<venta>
<fecha>2003-10-05</fecha>
<ISBN>0 596 0 02 92 0</ISBN>
<Titulo>XML in a Nutshell, 2nd Edition</Titulo>
<Precio>3 9 . 95</Precio
<cantidad>2 5</cantidad>
<Cliente ID="1029">Books of Glory</cliente>
</venta>
<venta>
<fecha>2 0 03-10-07</fecha>
<ISBN>0 5 96 0 02 3 7 8</ISBN>
<Titulo>SAX2< /Titulo
<Precio>2 9 . 95</Precio
<cantidad>5</cantidad>
<Cliente ID=M1029">Books of Glory</cliente>
</venta>
<venta>
<fecha>2 0 03-10-18</fecha>
<ISBN>0596 0 023 78</ISBN>
<TituloSAX2</Titulo
<Precio>2 9 . 95</Precio
<cantidad>15</cantidad>
<Cliente ID="2561">Titulo Wave</cliente>
</venta>
<venta>
<fecha>2 0 03-10-21</fecha>
<ISBN>0596 002 92 0</ISBN>
<TituloXML in a Nutshell 2nd Edition</Titulo
<Precio39 .95</Precio>
<cantidad>15</cantidad>
<Cliente ID="9021">Books for You</cliente>
</venta>
</ventas>
Puede abrir este archivo directamente desde Excel 2003 seleccionando la op-
ción Archivo>Abrir. Ello abrirá el cuadro de diálogo que aparece en la figura 8.1.
Si selecciona la opción Como una lista XML, Excel le advertirá de que va a crear
su propio esquema para este documento, tal y como se muestra en la figura 8.2.
Después de hacer clic en Aceptar, se le presentará el mejor consejo sobre cómo
presentar la información del documento en u n a hoja de cálculo, como puede
verse en la figura 8.3.
270 Excel. Los mejores trucos
üj
Seleccione cómo desea abrir este archivo:
BHglinfflBSWlMBB^SiS&i'K.
El origen XML especificado no se refiere a un esquema Excel creará un
V esquema en función de los datos del oric5en XML.
Aceptar Jj Ayuda
| ^fifliffPifflWBWMc^^ Jnj2<í¡
''~É2 e/chivo Edición Ver Insertar Formato Herramientas Datos Ventarle l - _ ff x |
100
J J d „ j _J
Arial
J _i T" ,^ U ~J
- 10 ^ f Ñ ] # S m W M
/
s 'A zHl k % °' > ' tí ~
Figura 8.3. Datos XML presentados como una lista XML en Excel 2003.
Observe que Excel espera que el elemento "fecha" sea u n a fecha, por lo que las
muestra utilizando el formato adecuado, es decir, que 2003-10-05 queda como
10/5/2003.
Una vez que tenga cargado del documento en Excel, puede tratar los datos de
forma m u y similar a como lo haría con cualquier hoja de cálculo de Excel (inser-
8. Conectando Excel con el mundo 271
tando fórmulas, creando rangos con nombre, gráficos basados en los contenidos,
etc.). Para ayudarle, Excel proporciona cierta funcionalidad incorporada para
analizar los datos. Los cuadros de lista desplegables situados en los encabezados
de columna le permiten elegir cómo ordenar los datos (de forma predeterminada,
el orden es el que tenía originalmente el documento). También puede activar u n a
fila de totalización, ya sea desde la barra de herramientas Lista o haciendo clic en
cualquier parte de la lista y luego seleccionando la opción Datos>Lista>Fila total.
Una vez que aparezca en dicha fila, podrá elegir qué tipo de total prefiere m o s -
trar del menú desplegable que mostramos en la figura 8.4.
JPtxtl
C
JÚ £.rchivo Edición Ver Insertar Formato Herramientas Datos Ventana ?
5
J J d ¿ _ j J ± 1 ? i¿ A -J
T 10 T m
.
m
/ ^ * Ü :U ü ¡d -J> 100'' • *• I
Arial H^ - ^ ^ % Wj €
* i „°8 * m _- > <' ¿» T -¿
D11 - f* =SUBTOTALES(101;D2:D9)
A B C D 1 E :
" F : ^G _~~~H 1-7
1 date VJISBÑ Tffítíe jrJPriceUS jrjquaiitily ^ c u s t o m e r _^JID^
2 5/10/2003 596005385 Office 2003 XML Essentials 34,95 200 Zork's Books 1025
3 5/10/2003 596002920 XML in a Nutshell, 2nd Edition 39,95 90 Zork's Books 1025
4 5/10/2003 596002378 SAX2 29,95 300 Zork's Books 1025
5 5/10/2003 596005385 Office 2003 XML Essentials 34,95 10 Books ofGlory 1029
6 5/10/2003 596002920 XML in a Nutshell, 2nd Edition 39,95 25 Books ofGlory 1029
7 7/10/2003 596002378 SAX2 29,95 5 Books of Glory 1029
8 18/10/2003 596002378 SAX2 29,95 15 TitleVVave " 2561
9 21/10/2003 596002920 XML in a Nutshell, 2nd Edition 39,95 15 Books for You 9021
10 +
11 j Total 34.95 IT 660
M? Ninguno
¡13 Cuenta
14 Contar números
15 Max
16 Mín
Suma
Desvest
! 18^ Var
19 _j¡
20
21
1 2"? i •iri
|H 4 • w \ H q j a l / H o j a 2 / Hoja3 / |< I . ..
Listo NUM ¿.
Figura 8.4. Elección de los totales para una lista XML en Excel 2003.
UJ¿IIJm!Ji!JjyilK!fffll^^
•d} Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ?
%
J ~J jd _Js _J -Jf _* v ¡K, h ~A Jf 9 & /l Ü k -4/ iaw> T *• i !
Arial , 10 - N í S S X S -íj % OOÜ € -08 .°8 £F ¡F _ - > -' A T ^ !
C7 * fx SAX2
A B C D E
"~7G" F H ,_!
1 date j-jlSBN ^JTitle P rice US •Iquantity •Jcustomer y] ID •
2 5/10/2003 596005385 Office 2003 XML Essent i ais 34,95 200 Zork's Books 1025
3 5/10/2003 596002920 XML in a Nutshell, 2nd Edition 39,95 90 Zork's Books 1025
4 5/10/2003 596002378 SAX2 29,95 300 Zork's Books 1025
5 5/10/2003 596005385 Office 2003 XML Essentials 34,95 10 Books ofGlory 1029
6 5/10/2003 596002920 XML in a Nutshell, 2nd Edition 39,95 25 BooksofGlory 1029
7 7/10/2003 596002378ÍSAX2 I 29,95 5 Books ofGlory 1029
jcT 18/10/2003 596002378 SAX2 29,95 15 TitleWave 2561
9 21/10/2003 596002920 XML in a Nutshell, 2nd Edition 39,95 15 Books for You 9021
10 11/1/2003 596002378 SAX2 29,95 65 Amazon 1543
11 11/5/2003 596002920 XML in a Nutshell, 2nd Edition 39,95 15 Amazon 1783
12
13 Total
* 34.95 740
14
15
16
17
18
19
20
21
\7?
¡H 4 • w\Hojal/Hoja2 / Hoja3 /
Listo
I<l \ >\r\
NUM
Observe que el elemento "fecha" está definido como u n a fecha, y que el ele-
mento "ISBN" está definido como una cadena, no como un n ú m e r o entero. Si
empieza abriendo este esquema en vez del documento, puede hacer que Excel
cara que el documento y preserve los ceros iniciales en el campo ISBN. Esta vez,
crearemos u n a lista antes de cargar el documento XML, comenzando a partir de
u n a hoja de cálculo blanco.
Para ello debemos abrir el panel de tareas Origen XML. Si no está abierto aún,
ábralo seleccionando la opción Ver>Panel de tareas o pulsando Control-Fl. Lue-
go seleccione la opción Origen XML del menú desplegable que aparece y verá algo
parecido a lo que se muestra en la figura 8.6.
Para cargar el esquema, haga clic en el botón Asignaciones XML. Esto abrirá
un cuadro de diálogo como el que se muestra en la figura 8.7.
Haga clic en el botón Agregar para abrir el esquema y luego seleccione u n o
de la misma forma que se muestra en la figura 8.8.
Si su esquema no restringe que los documentos tengan un único elemento
posible de comienzo, Excel le preguntará qué elemento desea utilizar como raíz,
como puede verse en la figura 8.9.
Como los documentos de este ejemplo comienzan con el elemento "ventas",
elija dicho elemento.
274 Excel. Los mejores trucos
02 ¡JJgfmmwmmmmm .^MJ2<j|
41 Archivo Edición Ver Insertar Formato Herramientas :>atos Ventana -> - _ S x |
J J A -i _J J 1 tZ , ¿ A - _5 / Si ¿ Z ' ) l í\ id 4J» 100% - « r .ff |
Arial - 10 ^ M ÍT s
^ ^ m - j -I % 000 € ?000 ^ 000 IW iW
Al ^
A
1 I B c D E F •T Origen XML • x 1
2
F I -J ü
3 Asignaciones XML de este libro:
4 '
5
6
7
8
9
10
11
12
13
14
15
16 El libro no contiene asignaciones XML.
17 'ara agregar una asignación XML al
ibro., utilice el botón Asignaciones XML.
18
19 Opciones •
20
Asignaciones XML...
r1
JH 4 • • \Hojal/Hoja2/Hoja3'/ l«l , >ir
Listo NUM
2Sl
Asignaciones XML de este (ibro:
Nombre .IR* | Espacio de nombre
J 1 _M
_J Agregar... i Aceptar i| Cancelar
Escritorio
_„.,./
Mis documentos
J
MÍ PC
^1 S Nombre de archivo:
! zl Nuevo origen... | [ Abrir |
Mis sitios de red I ¡ p o de a r c h j v o ;
Todos los orígenes de datos XML 0 J M Cancelar
BISE?. iU
El esquema XML seleccionado contiene más
de un nodo rafe. Microsoft Office Excel sólo
puede basarse en uno de ellos para crear
una asignación XML.
Seleccionar raíz:
customer
date
J
ISBN
PriceUS
quantity
saje
Title
S&ST&VY _xj
- any
• - anyAttribute
1 i - Substitution groups
"NJ> - Abstract elements
- Recursive structures
- Mixed content
1 No I Ayuda
BB
Asignaciones XML de este libro:
*]
| Espacio de nombre
sales_Map sales <No hay espacio de nombre >
•Microsoft:Ei^:S;i^^l
Archivo Edición Ver Insertar Formato Her r amientas Datos Ventana r _ & X
Al f* date
A —I B
1 date JISBN — 1 r
^JTHle
I D
^JPricellS
| E |
Jquantity _-JID
F |
Vi
_•*•_ Origen XML
¥£. _
Asignaciones XML de este libro:
sales_Map
9 i
10:
11
12:
13 :
14 i
15
16 ; Para asignar elementos de repetición.,
"l'7"; arrastre los elementos desde el árbol a
la hoja de cálculo en la que desea que
Í8 aparezcan los encabezados de datos.
Figura 8.12. Una lista XML creada a partir de la información de esquema situada
en el panel de tareas Origen XML.
8. Conectando Excel con el mundo 277
| . j¡'fwwWi|Jwiiiipi^^ .=inj_xj|
¿] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? T _ ji x
I 10 k 1
• j
I 11
•i
BHB
12
13 - _/ " * E3 II
14
15
16 Para asignar elementos de repetición.,
arrastre los elementos desde el árbol a
1 17 la hoja de cálculo en la que desea que
I 18 aparezcan los encabezados de datos.
19
Para importar los datos., utilice el botón
20
Importar datos XML de la barra de
21 herramientas Lista.
que los datos estén en u n a estructura que se podrá ajustar a u n a tabla, Excel no
pondrá muchas limitaciones a la hora de aceptar diferentes tipos de documentos.
Con unos cuantos clics de ratón y sin necesidad de programar, puede integrar
datos XML dentro de las hojas de cálculo.
Aunque existen muchas formas de leer hojas de cálculo de Excel sin tener
Excel (consulte el truco 100 para obtener más información), u n a de las opciones
m á s sencillas es e x p o r t a r a a r c h i v o s XML que utilicen el v o c a b u l a r i o
SpreadsheetML de Microsoft. SpreadsheetML no es completo (siendo más notable
que no existen gráficos y código VBA), pero representa los componentes básicos
de u n a hoja de cálculo, incluyendo fórmulas, rangos con nombre y formatos.
Este truco utiliza características que sólo están disponibles en Excel XP y Excel
2003 para Windows. Las anteriores versiones no lo admiten, incluyendo las ver-
siones actuales de Macintosh.
La mejor forma de comenzar con SpreadsheetML es guardar u n a hoja de cál-
culo como XML. La hoja de cálculo que mostramos que la figura 8.14 incluye
datos, fórmulas, nombres de rangos y celdas y algunos formatos simples.
Si graba esta hoja de cálculo utilizando el formato Hoja de cálculo XML (*.xml),
al que puede acceder a través de Archivo>Guardar como, obtendrá un gran docu-
mento XML que contiene las marcas que se muestran en el ejemplo 8.3.
<?xml version="l.0"?>
<?mso-application progid="Excel.Sheet"?>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html4 0">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>Simon St.Laurent</Author>
<LastAuthor>ADSM</LastAuthor>
<Created>2 0 03-12-03T15:48:3 8Z</Created>
<LastSaved>2 0 04-05-2 3T16:11:17Z</LastSaved>
<Company>Anaya multimedia</Company>
<Version>ll.5703</Version>
</DocumentProperties>
<OfficeDocumentSettings xmlns="urn:schemas-microsoft-com:office:office">
8. Conectando Excel con el mundo 279
ÜU Total: |15.147,50 €1
M3
14
15
16
17
18
19 _ 1
20
21
??
JH i • M \ H o j a l /' Hoja2 / Hoja3 / j<l ! •ir
Listo NUM
<DownloadComponents/>
<LocationOfComponents HRef="file:///G:\"/>
</OfficeDocumentSettings>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHeight>615 0</WindowHeight>
<WindowWidth>84 7 5</WindowWidth>
<WindowTopX>12 0</WindowTopX>
<WindowTopY>3 0</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Name="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s21">
<NumberFormat ss:Format="mmm\-yy"/>
</Style>
280 Excel. Los mejores trucos
<Style ss:ID="s23">
<Font x:Family="Swiss" ss:Bold="1"/>
</Style>
<Style ss:ID="s24">
<NumberFormat ss:Format="#,##0.00\ " ;€""/>
</Style>
</Styles>
<Names>
<NamedRange ss:Name="Bichos" ss:RefersTo="=Hojal!R4C2:R11C2"/>
<NamedRange ss:Name="Cantidad" ss:RefersTo="=Hojal!R4C4:R11C4"/>
<NamedRange ss:Ñame="Fecha" ss:RefersTo="=Hojal!R1C2"/>
<NamedRange ss:Name="ID" ss:RefersTo="=Hojal!R4C1:RllCl"/>
<NamedRange ss:Name="Precio" ss:RefersTo="=HojalIR4C3:RllC3"/>
<NamedRange ss:Name="Total" ss:RefersTo="=Hojal!R12C5"/>
</Ñames>
<Worksheet ss:Name="Hojal">
<Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="12"
x:FullColumns="1"
x:FullRows="1" ss:DefaultColumnWidth="60">
<Column ss:AutoFitWidtn="0" ss:Width="73.5"/>
<Column ss:AutoFitWidth="0" ss:Width="96.75"/>
<Column ss:AutoFitWidth="0" ss:Width="48" ss:Span="l"/>
<Column ss:Index="5" ss:AutoFitWidth="0" ss:Width="56.25"/>
<Column ss:AutoFitWidth="0" ss:Width="48" ss:Span="250"/>
<Row>
<Cell ss:StyleID="s23"xData ss:Type="String">Ventas de:</Datax/Cell>
<Cell ss:StyleID="s21"><Data ss:Type="DateTime">2 004-01-
01T00 : 00:00. 000</DataxNamedCell
ss:Name="Fecha"/></Cell>
</Row>
<Row ss:Index="3" ss:StyleID="s23">
<CellxData ss : Type= "String" >Número de Id. </Datax/Cell>
<CellxData ss : Type= "String" >Bicho</Datax/Cell>
<CellxData ss : Type=" String" >Precio< /Data></Cell>
<CellxData ss :Type="String" >Cantidad</Datax/Cell>
<CellxData ss : Type= "String" >Total</Datax/Cell>
</Row>
<Row>
<CellxData ss :Type=IINumberI,>4627</DataxNamedCell ss :Name="ID"/></
Cell>
<Cell><Data ss:Type="String">Diplodocus</DataxNamedCell
ss:Name="Bichos"/></Cell>
<Cell ss :StyleID="s24"xData ss:Type="Number">22 . 5</DataxNamedCell
ss :Name="Precio" /x/Cell>
<CellxData ss : Type= "Number" >127</DataxNamedCell
ss :Name="Cantidad"/x/Cell>
<Cell ss:StyleID="s24" ss:Formula="=RC[-2]*RC[-1]"xData
ss : Type="Number ">2 857 . 5</Datax/Cell>
</Row>
<Row>
<CellxData ss :Type="Number" >3912</DataxNamedCell ss :Name="ID"/x/
Cell>
8. Conectando Excel con el mundo 281
<Cell><Data ss:Type="String">Brontosaurus</Data><NamedCell
ss:Name="Bichos"/></Cell>
<Cell ss :StyleID="s24"xData ss : Type="Number" >17 . 5</DataxNamedCell
ss :Name=" Precio" /x/Cell>
<CellxData ss :Type="Number" >74</DataxNamedCell ss :Name="Cantidad"/
x/Cell>
<Cell ss:StyleID="s24" ss:Formula="=RC[-2]*RC[-1]"xData
ss :Type= "Number "> 12 95</Datax/Cell>
</Row>
<Row>
<CellxData ss : Type="Number" >9845</DataxNamedCell ss :Name=" ID"/></
Cell>
<CellxData ss : Type="String" >Triceratops</DataxNamedCell
ss:Name="Bichos"/></Cell>
<Cell ss :StyleID="s24"xData ss : Type="Number" >12</DataxNamedCell
ss:Name="Precio"/></Cell>
<CellxData ss : Type= "Number" >91</DataxNamedCell ss :Name="Cantidad"/
x/Cell>
<Cell ss:StyleID="s24" ss:Formula="=RC[-2] *RC[-1] "xData
ss :Type= "Number ">1092</Datax/Cell>
</Row>
<Row>
<CellxData ss : Type="Number" >9625</DataxNamedCell ss :Name=" ID"/></
Cell>
<CellxData ss : Type= "String" >Vulcanodon</DataxNamedCell
ss:Name="Bichos"/></Cell>
<Cell ss :StyleID="s2 4" x D a t a ss : Type= "Number " >19</DataxNamedCe 11
ss:Name="Precio"/></Cell>
<CellxData ss : Type="Number" >108</DataxNamedCell
ss :Name="Cantidad"/x/Cell>
<Cell ss:StyleID="s24" ss : Formula="=RC [-2] *RC [-1] " x D a t a
ss:Type= "Number ">2 0 52 </Datax/Cell>
</Row>
<Row>
<CellxData ss : Type="Number" >5903</DataxNamedCell ss :Name=" ID"/></
Cell>
<CellxData ss : Type=" String" >Stegosaurus</DataxNamedCell
ss :Name= "Bichos"/x/Cell>
<Cell ss :StyleID-"s24"xData ss :Type= "Number" >18 . 5</DataxNamedCell
ss:Name="Precio"/></Cell>
<CellxData ss : Type="Number" >63</DataxNamedCell ss :Name="Cantidad"/
></Cell>
<Cell ss:StyleID="s24" ss : Formula="=RC [-2] *RC [-1] "xData
ss :Type="Number">1165 . 5</Datax/Cell>
</Row>
<Row>
<CellxData ss :Type= "Number" >1824</DataxNamedCell ss :Name=" ID"/></
Cell>
<CellxData ss : Type=" String" >Monoclonius</DataxNamedCell
ss:Name="Bichos"/></Cell>
<Cell ss :StyleID="s24"xData ss : Type="Number" >16 . 5</DataxNamedCell
ss : Name=" Precio"/x/Cell>
282 Excel. Los mejores trucos
<ActiveCol>4</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Hoja2">
<Table ss:ExpandedColumnCount="256" ss:ExpandedRowCount="1"
x:FullColumns="1"
x:FullRows="l" ss:DefaultColumnWidth="60">
<Column ss:AutoFitWidth="0" ss:Width="48" ss:Span="255"/>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<PageMargins x:Bottom="0.984251969" x:Left="0.78740157499999996"
x:Right="0.78740157499999996" x:Top="0.984251969"/>
</PageSetup>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Hoja3">
<Table ss:ExpandedColumnCount="256" ss:ExpandedRowCount="1"
x:FullColumns="l"
x:FullRows="l" ss:DefaultColumnWidth="60">
<Column ss:AutoFitWidth="0" ss:Width="48M ss:Span="255"/>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<PageMargins x:Bottom="0.984251969" x:Left="0.78740157499999996"
x:Right="0.78740157499999996" x:Top="0.984251969"/>
</PageSetup>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>
Esta hoja, llamada "Hojal", está compuesta por 5 columnas y 12 filas (los
atributos x:FullColumns y x:FullRows se encuentran en otro espacio de nombres
que Excel no utilizará para la distribución). Luego, la información actual de la
tabla se almacena dentro de los elementos "Row" y "Cell":
<Row>
<Cell ss:StyleID="s23"xData ss:Type="String">Ventas de:</Data></
Cell>
<Cell ss:StyleID="s21"xData ss:Type ="DateTime">2004-01-
01T00 : 00 : 00 . 000</DataxNamedCell
ss:Name="Fecha"/></Cell>
</Row>
<Row ss:Index="3" ss:StyleID="s23">
<CellxData ss:Type="String">Número de Id . </Datax/Cell>
Esta fila, la primera del hoja de cálculo, contiene los elementos de tipo celda.
La primera, con el formato s23 (en negrita) y con el tipo de dato String (cadena
de texto), contiene el texto "Ventas de:". La segunda celda tiene formato s21 (nor-
mal) y utiliza el tipo de dato DateTime (fecha/hora). Sus contenidos vienen da-
dos en formato ISO 8601. Esta celda también forma parte de un rango con nombre,
en este caso, "Fecha". La mayoría de los demás elementos "Row" siguen patrones
similares, pero existen algunos elementos que merece la pena ver con más aten-
ción. El segundo elemento "Row" tiene un atributo extra, ss:Index:
<Row s s : I n d e x = " 3 " ss:StyleID="s23">
Excel no representa filas o columnas vacías con elementos "Row" o "Cell" va-
cíos. Simplemente añade un atributo ss: Index a la siguiente fila o celda j u n t o con
su contenido, para indicar la ubicación en la que se encuentra. Esto requiere que
8. Conectando Excel con el mundo 285
los programas que procesen este tipo de archivos presten atención a este detalle
cuando formen las tablas. La otra cosa importante que hay que mirar son las
fórmulas:
<Cell ss:StyleID="s22" ss : Formula= "=SUM (R [ -8] C:R[-1]C) "xData
ss :Type="Number" >15147 . 5</DataxNamedCell
ss:Name="Total"/></Cell>
La hoja de estilo del ejemplo 8.4, puede ejecutarse contra el documento XML
del ejemplo 8.3, lo que producirá un documento mucho más simple, como el del
ejemplo 8.5.
Ejemplo 8.4. Una hoja de estilo XSLT para extraer los contenidos del ejemplo 8.3.
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns="http://simonstl.com/ns/dinosaurs/"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
>
<xsl:témplate match="/">
286 Excel. Los mejores trucos
<xsl:apply-templates select="ss:Workbook"/>
</xsl:template>
<xsl:témplate match="ss:Workbook">
<dinosaurios>
<xsl:apply-templates select="ss:Worksheet[@ss:Name = 'Hojal']"/>
</dinosaurios>
</xsl:template>
<xsl:témplate match="ss:Worksheet">
<fechaxxsl:valué-of selecta"ss:Table/ss:Row/ss:Cell[@ss:StyleID =
' s21']" /></fecha>
<xsl:apply-templates select="ss:Table" />
</xsl:template>
<xsl:témplate match="ss:Table">
<xslrapply-templates select="ss:Row[position( ) > 2 ] " />
<!--Observe que, como Excel se salta la fila en blanco, la tercera fila
está en la posición 2-->
</xsl:template>
<xsl:témplate match="ss:Row[ss:Cell[4]]">
<venta>
<numIDxxsl rapply-templates s e l e c t = " s s : Cell [1] " /></numID>
< b i c h o x x s l : a p p l y - t e m p l a t e s s e l e c t = " s s : C e l l [2]" /></bicho>
< p r e c i o x x s l : a p p l y - t e m p l a t e s s e l e c t = " s s : C e l l [3]" /></precio>
< c a n t i d a d x x s l : a p p l y - t e m p l a t e s s e l e c t = " s s : Cell [4] " / x / c a n t i d a d >
< t o t a l x x s l rapply-templates s e l e c t = " s s r Cell [5] " / x / t o t a l >
</venta>
</xslr template>
<xsl:témplate match="ss:Row">
<totalxxsl:apply-templates select="ss:Cell [2] " /></total>
</xsl:template>
</xsl:stylesheet>
El corazón de la hoja de estilo es la plantilla que hace coincidir todas las filas
con c u a t r o o m á s elementos hijos de tipo celda. Extrae la información a partir de
las celdas y la coloca en elementos XML que reflejan los datos, produciendo los
resultados del ejemplo 8.5.
<dinosaurios xmlns="http://simonstl.com/ns/dinosaurs/"
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet">
<fecha>2004-01-01T00:00:00.0 0 0</fecha>
<venta>
<NumID>4 62 7</NumID>
<bicho>Diplodocus</bicho>
8. Conectando Excel con el mundo 287
<precio>22.5</precio>
<cantidad>12 7</cantidad>
<total>2 8 5 7.5</total>
</venta>
<venta>
<NumID>3 912</NumID>
<bicho>Brontosaurus</bicho>
<precio>17.5</precio>
<cantidad>74</cantidad>
<total>1295</total>
</venta>
<venta>
<NumID>9 84 5</NumID>
<bicho>Triceratops</bicho
<precio>12< /precio
<cantidad>91</cantidad>
<total>1092</total>
</venta>
<venta>
<NumID>962 5</NumID>
<bicho>Vulcanodon</bicho
<precio>19</precio
<cantidad>108</cantidad>
<total>2 052</total>
</venta>
<venta>
<NumID>5 9 03</NumID>
<bicho>Stegosaurus</bicho
<precio>18.5</precio>
<cantidad>63</cantidad>
<total>1165.5</total>
</venta>
<venta>
<NumID>1824</NumID>
<bicho>Monoclonius</bicho
<precio>16 . 5</precio
<cantidad>13 3</cantidad>
<total>2194.5</total>
</venta>
<venta>
<NumID>972 8</NumID>
<bicho>Megalosaurus</bicho
<precio>2 3 </precio
<cantidad>12 8</cantidad>
<total>2944</total>
</venta>
<venta>
<NumID>8 64 9</NumID>
<bicho>Barosaurus</bicho
<precio>17</precio
<cantidad>91</cantidad>
<total>154 7</total>
288 Excel. Los mejores trucos
</venta>
<total>15147.5</total>
</dinosaurios>
<xsl:stylesheet version="1.0"
xmlns:xsl="http://www.w3.org/1999/XSL/Transform"
xmlns:d="http://simonstl.com/ns/dinosaurs/"
8. Conectando Excel con el mundo 289
xmlns:ss="urn:schemas-microsoft-com:office:spreadsheet"
xmlns="urn:schemas-microsoft-com:office:spreadsheet"
>
<xsl:témplate match="/">
<xsl:apply-templates select="d:dinosaurios" />
</xsl:template>
<xsl:témplate match="d:dinosaurios">
<xslrprocessing-instruction name="mso-
application">progid="Excel.Sheet"</xsl:processing-instruction>
<Workbook xmlns="urn:schemas-microsoft-com:office:spreadsheet"
xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns : ss="urn: schemas-microsof t-com-.of fice : spreadsheet"
xmlns:html="http://www.w3.org/TR/REC-html40">
<DocumentProperties xmlns="urn:schemas-microsoft-com:office:office">
<Author>Simon St.Laurent</Author>
<LastAuthor>Simon St.Laurent</LastAuthor>
<Created>2 003-12-03T15:48:3 8Z</Created>
<LastSaved>2 0 03-12-03T15:57:4 6Z</LastSaved>
<Company>Anaya Multimedia</Company>
<Version>ll.5606</Version>
</DocumentProperties>
<ExcelWorkbook xmlns="urn:schemas-microsoft-com:office:excel">
<WindowHe ight >615 0 </WindowHe ight >
<WindowWidth>8475</WindowWidth>
<WindowTopX>12 0</WindowTopX>
<WindowTopY>3 0</WindowTopY>
<ProtectStructure>False</ProtectStructure>
<ProtectWindows>False</ProtectWindows>
</ExcelWorkbook>
<Styles>
<Style ss:ID="Default" ss:Ñame="Normal">
<Alignment ss:Vertical="Bottom"/>
<Borders/>
<Font/>
<Interior/>
<NumberFormat/>
<Protection/>
</Style>
<Style ss:ID="s21">
<NumberFormat ss:Format="mmm\-yy"/>
</Style>
<Style ss:ID="s22">
<NumberFormat ss:Format=""$"#,##0.00"/>
</Style>
</Styles>
290 Excel. Los mejores trucos
<Worksheet ss:Name="Hojal">
<Table ss:ExpandedColumnCount="5"
ss:ExpandedRowCount="{count(d:venta)+4}" x:FullColumns=n1"
x:FullRows="l">
<Column ss:AutoFitWidth="0M ss:Width="73.5"/>
<Column ss:AutoFitWidth="0" ss:Width="96.75"/>
<Column ss:Index="5" ss:AutoFitWidth="0" ss:Width="56.25"/>
<Row>
<CellxData ss:Type="String">Ventas de : </Datax/Cell>
<Cell ss:StyleID="s21"><Data ss:Type="DateTime"xxsl:valué-of
select="d: fecha"/x/Datax/Cell>
</Row>
<Row ss:Index="3">
<CellxData ss : Type="String" >Número Id</Datax/Cell>
<CellxData ss : Type="String" >Bicho</Datax/Cell>
<CellxData ss : Type="String" >Precio</Datax/Cell>
<CellxData ss : Type="String" >Cantidad</Datax/Cell>
<CellxData ss : Type="String" >Total</Datax/Cell>
</Row>
<Row>
<Cell ss: Index="4"xData ss :Type="String">Total: </Datax/Cell>
<Cell ss:StyleID="s22" ss:Formula="=SUM(R[-{count(drventa)}]C:R[-
1] C) "xData ss:Type="Number"x/Datax/Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microscft-com:office:excel">
<Print>
<ValidPrinterInfo/>
<HorizontalResolution>6 0 0</HorizontalResolution>
<VerticalResolution>6 0 0</VerticalResolution>
</Print>
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>12</ActiveRow>
<ActiveCol>l</ActiveCol>
</Pane>
</Panes>
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
<Worksheet ss:Name="Hoja2">
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
8. Conectando Excel con el mundo 291
<Worksheet ss:Name="Hoja3">
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<ProtectObjects>False</ProtectObjects>
<ProtectScenarios>False</ProtectScenarios>
</WorksheetOptions>
</Worksheet>
</Workbook>
</xsl:template>
<xsl:témplate match="d:venta">
<Row>
<CellxData ss:Type="Number"xxsl:value-of select=I,d:NumID" /></
DataxNamedCell ss :Name="ID"/></Cell>
<Cell><Data ss:Type="String"xxsl:value-of select="d:Bicho" /></
DataxNamedCell ss :Name= "Bichos" /x/Cell>
<Cell ss:StyleID="s22"><Data ss:Type="Number"xxsl:value-of
select="d:Precio" /></Data><NamedCell
ss:Name="Precio"/></Cell>
<CellxData ss : Type="Number" x x s l : value-of select="d: Cantidad" /></
DataxNamedCell ss :Name="Cantidad" /></Cell>
<Cell ss:StyleID="s22" ss:Formula="=RC[-2]*RC[-1]"xData
ss :Type="Number" x x s l : value-of select="d: total" /></Datax/Cell>
</Row>
</xsl:template>
</xsl:stylesheet>
<xsl:processing-instruction name="mso-
application">progid="Excel.Sheet"</xsl:processing-instruction>
esta hoja de estilo es la parte que genera los elementos "Row" y "Cell", como puede
verse a continuación:
<xsl:témplate match="d:venta">
<Row>
<CellxData ss : Type= "Number" x x s l : value-of select=,ld:numID,, /></
DataxNamedCell ss :Name="ID"/></Cell>
J _, A - j _J . j ~i t a ¿ - .J / - -
® -:: i - . i \¡ ¡d- Í / 100% - <# -
Arial - 10 - N K § m m m ;d - í % ooo € -08 : i iw iw _ ^ .> ^ ^ r .
B13 fx
A B
1 1v'eritas d e: zr_
ene- 114
_ _ __ G
__ __ _
I2
I 34 Número de Id. Bicho
4627 D ¡pío do cus
F recio
22,50 €
Cantidad Total
127 2.857,50 €
5 3912 Brontosaurus 17,50 € 74 1.295,00 €
6 9845 Triceratops 12,00 € 91 1.092,00 €
7 9625 Vulcanodon 19,00 € 108 2.052,00 €
8 5903 Stegosaurus 18,50 € 63 1.165,50 €
9 1824 Mono clon ius 16,50 € 133 2.194,50 €
10 9728 Megalosaurus 23,00 € 128 2.944,00 €
11 8649 Barosaurus 17,00 € 91 1.547,00 €
12 Total: 15.147,50 €
°™|
üil 1
¡14
15
16
17
18
19
20 _l
21
Figura 8.15. La hoja de cálculo de prueba después de que sus datos hayan ido desde
SpreadsheetML a otro vocabulario y de nuevo de vuelta.
Esto requiere del uso del sistema de búsqueda avanzada de Amazon para es-
pecificar u n a editorial (O'Reilly) y u n a palabra clave (Hack). La siguiente tarea es
obtener los datos de respuesta de Amazon de u n a forma en la que Excel pueda
trabajar con ellos. Dado que las consultas Web de Excel funcionan utilizando
HTML sencillo, la respuesta que obtenemos deberá ser transformada. Como ya
hicimos en los dos últimos trucos, las hojas de estilo XSL serán el método más
rápido para conseguir esto. Coloque el siguiente código en un archivo llamado
excel_SalesRank.xls. Este archivo limitará la respuesta de Amazon a aquellos cam-
pos que sean necesarios, convirtiendo todo en HTML.
< x s l : o u t p u t method="html"/>
< x s l : t é m p l a t e match="/">
<html x m l n s : o = " u r n : s c h e m a s - m i c r o s o f t - c o m : o f f i c e : o f f i c e "
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<body>
< t a b l e id="basic">
<tr>
<th bgcolor="#cccccc" colspan="3">Sales Data</th>
</tr>
<tr>
<th bgcolor="#99 9 99 9">ASIN</th>
<th bgcolor="#9 99 999">Title</th>
<th bgcolor="#999999">Sales Rank</th>
</tr>
<xsl:for-each select="ProductInfo/Details">
<tr>
< t d x x s l : value-of s e l e c t = " A s i n " /></td>
< t d x x s l : v a l u e - o f select="ProductName" /></td>
< t d x x s l : v a l u e - o f select="SalesRank" /></td>
</tr>
</xsl:for-each>
< t r x t d colspan="3"x/td></tr>
<tr>
<td bgcolor="#ffccOO" colspan="2" a l i g n = " r i g h t " >
<b>Average Sales Rank</b>
</td>
<td bgcolor="#ffccOO">=ROUND(AVERAGE(C3:C<xsl:value-of
select="count(Productlnfo/Details) + 2" />),0)</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>
Este archivo recibe la respuesta AWS y la convierte en u n a tabla sencilla HTML.
La sección x s l : f o r - e a c h hace un bucle que recorre el nodo "Details" y añade
u n a fila la tabla para cada resultado. Una vez que transfiera este archivo a un
servidor accesible, debería ser capaz de ver los resultados de la transformación en
un explorador de Internet, simplemente especificando la URL del archivo XSL en
el campo Dirección. Simplemente modifique la URL del último paso reemplazan-
do f =xml por f = h t t p : / / e x a m p l e . c o m / e x c e l _ S a l e s R a n k . x s l .
Debería poder ver u n a tabla como la que se m u e s t r a en la figura 8.16, con los
datos recuperados de la consulta anterior. Observe que la última celda de la tabla
8. Conectando Excel con el mundo 295
J
Sales data
1 ;A ^M^Jtígfc
| 0596004478 Google Hacks
'^áSife
14
mmmm1?
0596004605 MacOSXHacks 278
J
SsJ ü s t o £ Mi PC
Ejecutar el truco
Para ejecutarlo haga doble clic en el archivo amzn_avg_sales.iqy. Eso hará
que Excel lo abra, contacte con la URL y genere u n a hoja de cálculo como la de la
figura 8.17.
296 Excel. Los mejores trucos
y¡^mmmm^^^^^^^m^M^m--. •: ^|nL*)|
41 Archivo Edición Ver Insertar Formato Herramientas Datos Ventana l . 5 x
100%
J - ^ j j J j, 1"* d, u - J O ' / :
' ' 53 ••>.• E
' ;l LÉ w v
f
T
Aria - 10 - M ,T 5 m 3 3 ^j -ff % 000 € -oo *°o IF •'* " «¿ ' ~
H21 - £
A B C D _ __ __^.
1 Sales data
2 !: *$#ít^#V:^
3 596004478 Google Hacks 14
4 596004605 M a c 0 S X H a c k s 278
5 596004613 Linux S e rver Hac k s 763
6
7 A v e r a g e S a l e s Rank 352
8
9
10
11
12
13 —
14
15
16
w
MU 4 • W \amzn_avg_sales / | i j | >\r
Listo NUM
Figura 8.17. Hoja de cálculo de Excel con los datos de clasificación de ventas.
La parte importante de este truco es conocer cómo obtener los datos directa-
mente de AWS en Excel. Una vez dentro de Excel, los datos están al alcance de
todas las funciones que puede ofrecernos Excel: cálculos, gráficos, etc. A conti-
nuación veremos algunos métodos rápidos para extender este ejemplo.
entrada del usuario. Para ello cambie la URL que se encuentra dentro del archivo
amzn_avg_sales.iqy a lo siguiente:
ht.tp: //xml .amazon. com/onca/xml3?t = insert associate tag&dev-t = insert
developer token&PowerSearch=isbn:["ISBN","Introduzca una lista de ISBN
separados por el signo de barra vertical
(|)."]&type=heavy&mode=books&f=http://example.com/excel_SalesRank.xsl
MM
3] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana Z
Ai á ~J A- / S ? 4j[
JM » A T |
f*
i2 £
3
4
5 DBBDKEESI^
6 Introduzca una lista de ISBN separados por el signo de
7 barra vertical (|).
8
9
10
3J
11 f Usar este valor o referencia para futuras actualizaciones
12
13
14
15
16
17
18
19
20
1
~'
H 4 • H \amzn_avg_sales/
Introducir
l«l nr
Figura 8.18. Cuadro de diálogo para preguntar los ISBN.
Con ello debería obtener la media de la clasificación de ventas para los ISBN
que haya introducido. ¡Y además será diferente cada vez!
Transfiera este archivo XSL a un servidor público y anote la URL. Luego cree
un nuevo archivo de consulta llamado amzn_price_diff.iqy y utilice el mismo
código de ejemplos anteriores, pero cambiando la variable f = por la URL de la
nueva hoja de estilo. Abra el archivo y debería haber u n a nueva hoja de cálculo
con la lista de precios y la lista de precios de Amazon, tal y como se muestra en la
figura 8.19.
MU 4 • w\Hojal/ M 1 • in
[Listo NUM
Figura 8.19. Hoja de cálculo Excel con los datos sobre los precios.
300 Excel. Los mejores trucos
Arial - 12 > - A - j
Atea del gráfico -
1 i Datos de ventas
2i
3 j
•IIlBiiil
""•••••••••am
596002246U/eb Sen/ices Essei?iais (0'ReiHy XML)
p r e c i o original Precio de Amazon,
T $29,95 $20,97)
$20,97"
4 1 596003595 Writing Excel Marcos with VBA, 2nd Edition $34,95 $24,47
~"5"i 596002505 Pro g ra m m i n g . N ET Web Se rv¡c e s $39,95 $27,97
"6 i 1565927141 [Excel 2000 in a Nutshell: A Power User's Quick Reference $29,95 $20,97
7 1
8~] Media del precio original $33,70
91 Media del precio de Amazon $23,60
" íol
"Til $50,00
12"]
$40,00
iT] $30,00 D Precio original
15"! $20,00 aprecio de Amazon
111 $10,00
i7] $0,00
18 1 Web Services Writing Excel Programming Excel 2000 in
19 i Essentials Marcos with .NET Web a Nutshell: A
20"T (O'Reilly XML) VBA,2nd Services Power User's
""21 1 Edition Quick
Reference
23j
Área del gráfico |
U 4 • •lK_Hpjal/"' Í<1 ±¡r
Listo
Los servicios Web basados en SOAP han sido u n a pieza clave de Microsoft en
sus planes para la plataforma .NET, así como kits de herramientas comunes de
otros fabricantes. SOAP es un protocolo que utiliza XML para trasmitir informa-
ción entre sistemas. En el caso que veremos aquí, es utilizado para llamar a p r o -
cedimientos y devolver valores. La especificación WSDL (Web Service Definition
Language) describe los servicios Web de forma que las aplicaciones puedan co-
nectarse entre ellas fácilmente. La herramienta Web Service References de Microsoft
puede coger un archivo WSDL y generar código VBA que su aplicación puede
utilizar para acceder a servicios Web basados en SOAP.
Este truco utiliza funciones de Excel que sólo están disponibles en sus
versiones XP y 2003 para Windows. Las versiones anteriores no son
compatibles con esto, ni siquiera las versiones conocidas para
Macintosh.
Para poder utilizar este truco es necesario descargar el Office Web Services
Toolkit. Dado que la ubicación cambia continuamente Microsoft, lo mejor es ir a
http://www.microsoft.es y luego utilizar la página de búsqueda o la página de
descargas y buscar por "Office Web Services Toolkit". Existen diferentes versiones
para Office XP y 2003. Necesita instalar este programa, siguiendo las directrices
que vienen con él, para luego poder trabajar con este truco.
Una vez que lo haya instalado, puede comenzar a conectar sus hojas de cálcu-
lo con servicios Web. Para acceder a la herramienta Web Service References (así es
como se llama dentro de Excel), debe abrir Visual Basic yendo a la opción
Herramientas>Macro>Editor de Visual Basic y luego, en el menú Herramientas,
encontrará la opción Web Service References. Si selecciona esta opción, se abrirá
el cuadro de diálogo que se muestra en la figura 8.21.
Puede utilizar las funciones de búsqueda de la parte superior izquierda de este
cuadro de diálogo para encontrar servicios a través del sistema de descubrimien-
to universal de Microsoft, a través del servicio Description and Integration (UDDI)
o puede introducir u n a URL para el archivo WSDL en la parte inferior izquierda!
Puede e n c o n t r a r un listado de servicios públicos en la dirección h t t p : / /
xmethods.net, aunque debería asegurarse de que los servicios todavía funcionan
antes de integrarse con ellos desde las hojas de cálculo. También, son muchos los
servicios que requieren de u n a licencia e incluso del pago de la misma, pero para
302 Excel. Los mejores trucos
este ejemplo utilizaremos u n a que está disponible de forma gratuita. Dicho ser-
vicio nos devuelve la dirección IP de un nombre de dominio que proporcionemos.
• B Web S e r v i c e s T é e l ^
í* Buscar servicios Web Haga dic en los servicios o métodos Web para ver las descripciones,
Seleccione uno para agregarlo al proyecto.
Busque servicios Web utilizando palabras clave
o un nombre de empresa. Resultados de la búsqueda:
Palabras clave; [Especifique los criterios de búsqueda para comenzar,
Nombre de empresa:
Ayuda
Resultados de la búsqueda: 1
_
- 0EB
r ~ • dns
1
|
Dirección URL:
Buscar
Figura 8.22. Indicar al Web Services Toolkit que genere código a partir de un servicio Web.
tU Archivo Edición Ver Insertar Formato Depuración Eiecutar Herramientas Complementos Ventana Ayuda _ & x
ü
s Microsoft E • cel Obietos JM
BJ Henal (Hoial)
H] Hoia2 (Hoia2)
H]Hoia3(Hoia3)
Q ThisWorlbool
\ Módulos de clase
, _•]"
|clsws_dns ClassModule
Alfabética | por categorías 1
Instancing 1 - Prívate
P r i v a t e 3c_dri3 As So a p C l i e n t 3 0
Figura 8.23. Código VBA generado por Web Services Toolkit para acceder al servicio "dns".
304 Excel. Los mejores trucos
llfMicrosoftfxii^
^j Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? _ 1? X
T T 1 0 0 % T
J ^ d _Í _ j ' .Jf -1 ^ J», ú -^ -íá / '; T
SI •: í, £ ; '1 ¡d *' y
¡= _ , * T
Arial ^ 10 . N # S ^ W =1 i f j -fj % 000 € *oo /o «k '
A3 - £ IP:
¡1 A | B C D E F G H T
11
I 2 Nombre:
3 |ÍP: Í
4
5
6
7
8
9
10
11
12
13
14
I 15
16
17 ^!
|H' 4 • M \ H o j a l / Hoja2 / Hoia3 / \<\ 1 •m
Listo NUM
rqsoft':|tóÍtSIÉttÍI
fj Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? _ fi> x
T lg 100% - ¥> ^
J _¿ A _j _J .i _1 t" „', h - J -i ' §£ --
Nombre.
IP:
o Obtener dirección IP
c r _ _ _ _ (y
Figura 8.25. Hoja de cálculo con un botón para llamar a los servicios Web.
8. Conectando Excel con el mundo 305
Para añadir la última pieza, haga clic con el botón derecho del ratón sobre el
botón y elija la opción Ver código. En la ventana que aparece, introduzca esta
subrutina:
ñame = Range("B2").Text
IP = info.wsm_dns(ñame)
IPRange.Value = IP
End Sub
¿§] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? -fl X
100% T
J j A J _j á A ? H * -J £ - / ^ - SI á- z • ¿l M V ÍJ
Arial - 10 „ N iT S 1 I I íj ^fj % 000 € *cl ;"o ¡F _ - •> ' ^T |
B3 & 208.201.239.36
; A
11 • B | C D E F G
1
2 Nombre: oreilly.com
3 lIR: 1208.201.239.36 1
4 1
Obtener dirección IP
i 5
6
I 7
8
9
10
11
12
13
I 14
I 15 "
Ii 1617
Un 4 • H \ H o j a l / Hoja2 / HojaS / \<\ j •irl
Listo NUM
Nombre: ozqrid.com
¡IP: FÍZ96.162.223 ¡
Obtener dirección IP
9
10
11
12
13
14
15
16
17
IR
H 4 • •I \ H o j a l / Hoja2 / Hoja3 / I«I ir
Listo
Spreadsheet::WriteExcel
Es un paquete Perl p a r a crear documentos Excel, disponible en h t t p : / /
search.cpan.org/dist/Spreadsheet-WriteExcel/
Spreadsheet::ParseExcel
Una herramienta que permite a los programas Perl leer archivos Excel, dispo-
nible en http://search.cpan.org/-kwitknr/Spreadsheet-ParseExcel-0.2602/
Jakarta POI
Un producto de Apache Project que proporciona tanto acceso de lectura como
de escritura a las hojas de cálculo de Excel a través de u n a API de Java, disponible
en http: / / j akarta. apache. org/poi/index. html
J Excel Api
Una API de Java para leer y escribir hojas de cálculo Excel, incluyendo conver-
tidores Excel-CSV y Excel-XML. Lo encontrará disponible en h t t p : / / w w w .
andykhan.com/jexcelapi/
308 Excel. Los mejores trucos
Ejemplo 8.7. Código Java para generar una hoja de cálculo Excel usando POL
import java.util.Random;
import org.apache.poi.poifs.filesystem.POIFSFileSystem;
import org.apache.poi.hssf.record.*;
import org.apache.poi.hssf.model.*;
import org.apache.poi.hssf.usermodel.*;
import org.apache.poi.hssf.útil.*;
//crear fórmulas.
for (short cellnum = (short) 0; cellnum < 6; cellnum += 2)
{
//produce SUMAS para las columnas apropiadas
int column= 65+cellnum;
char columnLabel=(char)column;
String formula="SUM(M+columnLabel+"1:"+columnLabel+"10)";
c = r.createCell(cellnum);
c.setCellStyle(csl);
c.setCellFormula(formula);
}
// escribe el libro a la salida,
// y cerramos el archivo
wb.write(out);
out.cióse ( ) ;
}
}
Para ejecutar este código, primero debe descargar la última versión del archi-
vo binario POI y colocar el archivo principal .jar del POI (poi-2.0-final-
20040126.jar en este caso) en la r u t a de clases, dependiendo de la plataforma en
la que lo esté ejecutando. Una vez que lo ejecute, no necesitará argumentos y
creará un único archivo, llamado zingot.xls. Si abre este archivo, verá u n a hoja
de cálculo como la que se muestra en la figura 8.28 (figura 8.29. si está usando
un Macintosh).
La lógica del ejemplo 8.7 es difícilmente un modelo ejemplar de cómo crear
u n a hoja de cálculo, pero muestra la funcionalidad básica necesaria para crear
nuevas hojas, celdas y formulas.
312 Excel. Los mejores trucos
:
l IJM!crosoft Excel - zingot.Kls ÍSommamm^m B i l l H f t H H H H I W ^ § r ^ " ' -j.g.i..x]|
42 Archivo Edición Ver Insertar Formato Herramientas Datos Ventana l - - fi» X
-3 , / Í W 100%
J J d ^ _J J JL ffi 4 S - i l íl ¡d <í> ' V 1
Arial - 10 - [ N | ^ S ¡ | ^ ^ ^| o , ooo € %l „°8 ¡s ¡^ - ^ ^ i ^ y
C13 - i* =SUMA(C1:C10)
A B C | D E F G H 1 J T
1 0 Prueba 2,02 Prueba 4 04 Prueba
2 ' 10.1 i : ? 12,12 • : J 14,14 1 2 1
3 20.2 Prueba 22,22 Prueba 24,24 Prueba
4 30.3 1 „ j 32,32 1 2 .i 34,34 1 2 :
5 40.4 Prueba 42,42 Prueba 44,44 Prueba
6 50.5 1
: 3 52,52 1 : :- 54,54 1 2 :
7 • 60.6 Prueba 62,62 Prueba 64,64 Prueba
8 70.7 i ;• ;; 72,72 1 : : 74,74 i J :
9 80.8 Prueba 82,82 Prueba 84,84 Prueba
10 90,9 * : '-: 92,92 1 : I: 94,94 i j :
11
12
13 454,5 d MAl{ 494,9
14 I
15
16
17
18
19
20 • 1
H 4 • H \Hoja de prueba /
Listo NUM
Figura 8.28. Hoja de cálculo creada a partir de un programa Java para la versión
Windows de Excel.
o A B C
"'l,0V'5 E F 6
1 0 Test 2.02 Test 4.04 Test
10.1 12 12 14.14
1 20.2 Test Test 24.24 Test
4 30.3 32 32 34.34
40.4 Test 42 42 T e i t 44.44 Test
h ÍJU.D 54.54
60.6 Test 62 62 Test 64.64 Test
8 70.7 71 74.74
9 80.8 Test 82 82 Test 84.84 Test
10 30.9 32 32 34.94
11
1?
13 454.5 474.7 494.9
14
15
16
Testsheet
Figura 8.29. Hoja de cálculo creada a partir de un programa Java para la versión
Macintosh de Excel.
8. Conectando Excel con el mundo 313
Si utiliza esto para construir hojas de cálculo para sus propias aplicaciones,
seguramente reemplazará los bucles con referencias a las estructuras de datos
que esté presentando, con lo que los archivos de destinos eran más lógicos y
probablemente variarán dependiendo de los datos, y deseará sacar ventaja de las
funciones de las que se muestran en este ejemplo.
Otra característica de POI que es importante destacar si va a generar hojas de
cálculo que van a formar parte de un sitio web dinámico. Puede combinar POI
con Cocoon, un marco de trabajo para Java, también de Apache, que utiliza do-
cumentos XML y otras fuentes para generar contenidos accesibles a través de un
explorador de Internet. Puede ver un artículo que proporciona u n a demostración
y todos los detalles para hacer esto en la dirección h t t p : / / w w w . x m l . e o m / p u b / a /
2003/01/22/cocoon-excel.html.
Glosario
Aplicación
Es otro término para denominar a un programa. Excel es u n a aplicación, a u n -
que algunas personas lo llaman aplicación de hojas de cálculo.
Argumentos
Es la información que u n a fórmula o función puede requerir para devolver un
valor. La mayoría de funciones de Excel requieren de argumentos para poder ser
ejecutadas. Los argumentos se encierran entre paréntesis y están separados por
comas.
Asistente
Conjunto de pantallas utilizadas para asistir al usuario a lo largo de u n a serie
de pasos.
Barra de comandos
Es u n o de los muchos objetos de Excel, utilizados para albergar elementos de
menú. La barra de menús de u n a hoja de cálculo es u n a barra de comandos que
contiene los elementos de menú Archivo, Edición, Ver, Insertar, etc.
Boolean
Es el significado matemático de expresar sentencias lógicas. Un valor de este
tipo siempre será Verdadero o Falso.
Bucle
Ejecución continua de una o más líneas de código VBA hasta que una condición
se cumpla o el bucle termine.
Bug
Es un error en el código. Por desgracia, algunos de estos errores pueden ser
indetectables por las pruebas más exhaustivas y por tanto son difíciles de evitar.
Cadena
Secuencia lineal de caracteres (por ejemplo, la palabra "Coche" es una cadena de
caracteres alfanuméricos).
Complemento
Es un libro guardado con la extensión XLA. Se abre como un libro oculto cuan-
do es instalado a través de la opción Herramientas>Complementos. Los comple-
mentos ofrecen funcionalidad añadida a Excel.
Constante
Es un elemento que representa un valor que no cambia.
Contiguo
Es un rango de celdas en el que los límites de todas las celdas están conectados,
sin espacios entre ellos. Por ejemplo, Al :C20 es un rango contiguo.
Controles ActiveX
Objetos totalmente programables que pueden ser utilizados para ayudar a per-
sonalizar las aplicaciones. En Excel, se incluyen algunos tan comunes como el
botón de comando, el botón de opción, etc.
Cuadro de controles
Es u n a barra de herramientas que contiene controles ActiveX (véase Controles
ActiveX).
Glosario 317
Cuadro de diálogo
Es u n a ventana que solicita información al usuario, como por ejemplo, el cua-
dro de diálogo Abrir.
Depuración
Es el proceso de eliminar todos los posibles errores en el código.
Error de ejecución
Error que se produce dentro del código VBA y que ocurre mientras que éste se
ejecuta. La mayoría de este tipo de errores vienen acompañados por un número
que sirve para ayudar en la depuración.
Evento
Es u n a llamada desde Excel a un cierto código para indicar que ha ocurrido
algo. Por ejemplo, un clic de ratón o cerrar/abrir un libro son eventos reportados
por Excel.
Explorador de proyectos
Ventana dentro del Editor de Visual Basic en la que se pueden ver todos los
objetos que pertenecen a un libro específico.
Fórmula
Una secuencia de valores, referencias a celdas, nombres, funciones u operado-
res situados dentro de u n a celda y que producen un nuevo valor. Todas las fórmu-
las de Excel comienzan con el signo =.
Formulario de usuario
Objeto de Excel que puede ser utilizado para albergar controles ActiveX. Los
formularios de usuario se pueden insertar y modificar solamente dentro de VBE.
Función
Un tipo de procedimiento (véase Procedimiento) que devuelve un valor. Excel
dispone de funciones incorporadas, como por ejemplo la función SUMA. De todas
318 Excel. Los mejores trucos
formas, el usuario puede crear sus propias funciones (véase Función definida por
el usuario).
Hoja
Término genérico utilizado para representar un hoja de cálculo, hoja de gráfico
hoja de macro.
Hoja de cálculo
Uno de los objetos fundamentales de Excel, en el que se encuentran las celdas.
Todos los libros de Excel deben tener al menos una hoja de cálculo, y al menos una
de ellas debe estar visible. La única limitación al número de hojas de cálculo que se
pueden tener abiertas es la memoria del ordenador.
Hojas de cálculo
Aplicación de software o programa que permiten introducir texto, números y
funciones en u n a matriz de celdas individuales.
Libro
Contenedor para u n a o más hojas de cálculo. Cada archivo .xls representa un
libro de Excel.
Macro
Una acción o conjunto de acciones utilizadas para automatizar tareas. Excel
permite grabar acciones y utilizarlas posteriormente como macros.
Método
Un procedimiento que actúa sobre un objeto.
Módulo
Una unidad auto-contenida en la que el código VBA se escribe y se almacena.
Módulo privado
Módulo utilizado específicamente para un objeto, como pueda ser un libro, una
hoja o un formulario del usuario.
Glosario 319
No contiguo
Rango de celdas en el que los límites de alguna o todas las celdas no están
conectados. Por ejemplo, el rango Al :C20, E10:F100 representa un rango no con-
tiguo.
Nombre
Término que puede ser aplicado a constantes, rango de celdas o variables.
Objeto
Componente de u n a aplicación (véase Aplicación), como u n a hoja de cálculo,
u n a celda o un gráfico. Existen más de 100 objetos disponibles dentro de Excel, y
resultan fundamentales a la hora de programar con VBA.
Operadores
Símbolo matemático que instruye a u n a fórmula o función para que realice
u n a cierta tarea. Por ejemplo, el operador + indica la fórmula o la función que
debe sumar.
Paréntesis
Los paréntesis se utilizan para indicar agrupaciones en matemáticas. En Excel,
siempre debe haber un paréntesis de cierre por cada paréntesis de apertura.
Plantilla
Esquema predefinido utilizado como base estándar para luego hacer modifica-
ciones y crear un hoja de cálculo.
Procedimiento
Secuencia de instrucciones ejecutadas como un conjunto y que tienen un n o m -
bre. Por ejemplo, f u n e t i o n y s u b son tipos de procedimientos (véase Función y
Sub).
Propiedad
Atributo con nombre perteneciente a un objeto (véase Objeto). Por ejemplo, la
dirección de u n a celda específica es u n a propiedad de la celda o del objeto rango.
Rango
Área de u n a o más celdas, ya sean contiguas o no.
320 Excel. Los mejores trucos
Sub
Tipo de procedimiento que no devuelve ningún valor (véase Procedimiento).
Este tipo de procedimientos se utilizan normalmente para gestionar eventos.
Variables
Elemento con nombre que almacena un valor y que puede ser cambiado duran-
te su uso.