Descargar como pdf o txt
Descargar como pdf o txt
Está en la página 1de 294

LOS MEJORES TRUCOS

O'REILLY* David y Rama Hawley


Contenido

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

Capítulo 1. Reducir la frustración en los libros y en las hojas de cálculo.... 23


La regla 80/20 23
Trucos sobre la estructuración 24
Trucos sobre el formato 24
Trucos sobre fórmulas 25
1. Crear una vista personal de los libros de Excel 27
2. Introducir datos en varias hojas de cálculo simultáneamente 30
Agrupar hojas de cálculo manualmente 30
Agrupar hojas de cálculo automáticamente 31
3. Impedir que los usuarios realizan ciertas acciones 33
Impedir el comando Guardar como en un libro de Excel 33
Impedir que los usuarios impriman un libro de Excel 36
10 Contenido

Impedir que los usuarios inserten más hojas de cálculo 36


4. Impedir confirmaciones innecesarias 37
Activar las macros cuando no se tenga ninguna 37
Mensajes de confirmación para guardar cambios que no se han realizado 38
Impedir los avisos de Excel para macros grabadas 39
5. Ocultar hojas p a r a q u e no p u e d a n ser m o s t r a d a s 41
6. Personalizar el c u a d r o de diálogo Plantillas y el libro p r e d e t e r m i n a d o .... 42
Crear su propia pestaña de plantillas 43
Utilizar un libro personalizado de forma predeterminada 43
7. Crear un índice de hojas en el libro 45
8. Limitar el r a n g o de d e s p l a z a m i e n t o de la hoja de cálculo 47
9. Bloquear y proteger celdas q u e contienen f ó r m u l a s 51
10. E n c o n t r a r datos duplicados u t i l i z a n d o el f o r m a t o condicional 54
1 1 . Asociar b a r r a s de h e r r a m i e n t a s personalizadas a un libro
en p a r t i c u l a r 56
12. Burlar el gestor de referencias relativas de Excel 58
1 3 . Q u i t a r vínculos "fantasma" en un libro 58
14. Reducir un libro q u e está h i n c h a d o 61
Eliminar formatos superfluos 62
Puesta a punto de los orígenes de datos 63
Limpiar libros corruptos 63
1 5 . Extraer datos de un libro c o r r u p t o 64
Si no puede abrir un libro 64
Si no puede abrir el archivo 65

Capítulo 2. Trucos sobre las características incorporadas en Excel 69


16. Validar datos en base a u n a lista situada en o t r a hoja 69
Método 1. Rangos con nombre 69
Método 2. La función INDIRECTO 70
Ventajas y desventajas de ambos métodos 71
17. C o n t r o l a r el f o r m a t o condicional con casillas de verificación 71
Configurar casillas de verificación para formato condicional 71
Activar o desactivar el resaltado de los números 72
18. Identificar f ó r m u l a s con el f o r m a t o condicional 75
19. Contar o s u m a r celdas que se ajustan al criterio del f o r m a t o condicional. 76
Una alternativa 77
2 0 . Resaltar Filas o c o l u m n a s i m p a r e s 78
Contenido 11

2 1 . Crear efectos en 3D en tablas o celdas 80


Utilizar un efecto 3D en una tabla de datos 81
22. Activar y desactivar el formato condicional y la validación de datos
con una casilla de verificación 82
2 3. Admitir múltiples listas en un cuadro de lista desplegable 84
24. Crear listas de validación que cambien en base a la selección realizada
en otra lista 86
25. Forzar la validación de datos para hacer referencia a una lista
en otra hoja 88
Método 1. Rangos con nombre 88
Método 2. La función INDIRECTO 88
Ventajas y desventajas de cada método 89
2 6. Utilizar Reemplazar para eliminar caracteres no deseados 90
27. Convertir números de texto en números reales 90
28. Personalizar los comentarios de las celdas 92
29. Ordenar más de tres columnas 94
30. Ordenación aleatoria 95
3 1 . Manipular datos con el filtro avanzado 97
32. Crear formatos de número personalizados 101
33. Añadir más niveles de Deshacer a Excel 107
34. Crear listas personalizadas 107
35. Subtotales en negritas de Excel 108
El truco sobre el truco 110
36. Convertir las fórmulas y funciones de Excel a valores 111
Utilizar Pegado especial 111
Utilizar Copiar aquí sólo valores 111
Utilizar una macro 112
3 7. Añadir datos automáticamente a una lista de validación 113
38. Trucar las características de fecha y hora de Excel 116
Sumar más allá de las 24 horas 116
Cálculos de fecha y hora 117
Horas y fechas reales 119
¿Un fallo de fechas? 119

Capítulo 3. Trucos sobre nombres 123


39. Usar direcciones de datos por el nombre 123
40. Utilizar el mismo nombre para rangos en diferentes hojas de cálculo . . 1 2 4
12 Contenido

4 1 . Crear funciones personalizadas utilizando n o m b r e s 127


4 2 . Crear r a n g o s q u e se e x p a n d a n y c o n t r a i g a n 129
4 3 . A n i d a r r a n g o s dinámicos p a r a obtener u n a f l e x i b i l i d a d m á x i m a 136
4 4 . Identificar r a n g o s con n o m b r e en u n a hoja de cálculo 139
Método 1 139
Método 2 141

Capítulo 4. Trucos sobre tablas dinámicas 143


4 5 . Tablas dinámicas: u n t r u c o e n s í m i s m a s 143
¿Por qué se les llama tablas dinámicas? 144
¿Para qué cosas resultan buenas las tablas dinámicas? 144
¿Por qué utilizar tablas dinámicas cuando las hojas de cálculo ya ofrecen
muchas funciones de análisis? 145
Los gráficos dinámicos como extensión de las tablas dinámicas 145
Crear tablas y listas para ser utilizadas en tablas dinámicas 145
El Asistente para tablas dinámicas y gráficos dinámicos 147
4 6 . C o m p a r t i r tablas dinámicas pero n o sus datos 148
4 7 . A u t o m a t i z a r la creación de tablas dinámicas 150
4 8 . M o v e r los totales finales de u n a tabla dinámica 153
4 9 . Utilizar de f o r m a efectiva d a t o s de o t r o libro d i n á m i c a m e n t e 154

Capítulo 5. Trucos sobre gráficos 159


5 0 . Separar u n a porción de un gráfico circular 159
5 1 . Crear dos c o n j u n t o s de porciones en un único gráfico circular 161
5 2 . Crear gráficos que se ajusten a los datos 163
Dibujar los últimos x valores correspondientes a las lecturas 166
5 3 . I n t e r a c t u a r con los gráficos u t i l i z a n d o controles personalizados 166
Utilizar un rango dinámico con nombre vinculado a una barra
de desplazamiento 167
Utilizar un rango dinámico con nombre vinculado a un cuadro de lista
desplegable 169
5 4 . Tres f o r m a s rápidas p a r a a c t u a l i z a r los gráficos 170
Utilizar arrastrar y colocar 170
Utilizar la barra de fórmulas 171
Arrastrar el área del borde 174
55. Crear un simple gráfico de tipo t e r m ó m e t r o 175
5 6 . Crear un gráfico de c o l u m n a s con a n c h o s y altos variables 178
Contenido 13

5 7. Crear un gráfico de tipo velocímetro 182


58. Vincular los elementos de texto de un gráfico a una celda 188
59. Trucar los datos de un gráfico de forma que no se dibujen las celdas
en blanco 189
Ocultar filas y columnas 190

Capítulo 6. Trucos sobre fórmulas y funciones 193


60. Añadir un texto descriptivo a las fórmulas 193
6 1 . Mover fórmulas relativas sin cambiar las referencias 194
62. Comparar dos rangos de Excel 195
Método 1. Utilizar Verdadero o Falso 195
Método 2. Utilizar el formato condicional 196
63. Rellenar todas las celdas en blanco en una lista 197
Método 1. Rellenar las celdas en blanco mediante una fórmula 198
Método 2. Rellenar las celdas en blanco a través de una macro 199
64. Hacer que las fórmulas se incrementen por filas cuando las copie
a lo largo de las columnas 200
65. Convertir fechas en fechas con formato de Excel 202
66. Sumar o contar celdas evitando valores de error 203
67. Reducir el impacto de las funciones volátiles a la hora de recalcular 205
68. Contar solamente una aparición de cada entrada de una lista 206
69. Sumar cada dos, tres o cuatro filas o celdas 207
70. Encontrar la enésima aparición de un valor 209
71. Hacer que la función subtotal de Excel sea dinámica 212
72. Añadir extensiones de fecha 214
73. Convertir números con signo negativo a la derecha a números
de Excel 216
74. Mostrar valores de hora negativos 218
Método 1. Cambiar el sistema de fecha predeterminado de Excel 218
Método 2. Utilizar la función TEXTO 219
Método 3. Utilizar un formato personalizado 219
75. Utilizar la función BUSCARV a lo largo de múltiples tablas 220
76. Mostrar el tiempo total como días, horas y minutos 222
77. Determinar el número de días especificados que aparecen
en cualquier mes 223
78. Construir mega fórmulas 225
14 Contenido

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

Capítulo 7. Trucos sobre macros 237


81. Acelerar el código y eliminar los parpadeos de la pantalla 237
82. Ejecutar una macro a una determinada hora 238
83. Utilizar CodeName para hacer referencias a hojas en los libros
de Excel 240
84. Conectar de forma fácil botones a macros 241
85. Crear una ventana de presentación para un libro 243
86. Mostrar un mensaje de "Por favor, espere" 246
87. Hacer que una celda quede marcada o desmarcada al seleccionarla 247
88. Contar o sumar celdas que tengan un color de relleno específico 248
89. Añadir el control Calendario de Microsoft Excel a cualquier libro 250
90. Proteger por contraseña y desproteger todas las hojas de cálculo
rápidamente 252
91. Recuperar el nombre y la ruta de un libro de Excel 255
92. Ir más allá del límite de tres criterios del formato condicional 256
93. Ejecutar procedimientos en hojas protegidas 258
94. Distribuir macros 260

Capítulo 8. Conectando Excel con el mundo 267


95. Cargar un documento XML en Excel 267
96. Guardar en SpreadsheetML y extraer datos 278
97. Crear hojas de cálculo utilizando SpreadsheetML 288
98. Importar datos directamente en Excel 293
Ejecutar el truco 295
El truco del truco 296
Hacer que la consulta sea dinámica 296
Utilizar datos diferentes 297
Resultados con gráficos 300
99. Acceder a servicios Web SOAP desde Excel 301
100.Crear hojas de cálculo Excel utilizando otros entornos 307
Spreadsheet::WriteExceI 307
Spreadsheet:: ParseExcel 307
Contenido 15

Jakarta POI 307

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

cálculo están pensadas para hacer sencilla la obtención de la información por


parte de los usuarios, no sólo para presentarla y que tenga buen aspecto.

Trucos sobre la estructuración


Sin duda, el fallo número u n o que cometen muchos usuarios de Excel cuando
crean sus hojas de cálculo es que no configuran y organizan la distribución de la
información en la manera en la que Excel y sus características esperan. A conti-
nuación, y sin ninguna orden en particular, mostramos algunos de los fallos
más comunes que cometen los usuarios cuando organizan u n a hoja de cálculo:
• Dispersión innecesaria de los datos a lo largo de diferentes libros.
• Dispersión innecesaria de los datos a lo largo de diferentes hojas de cálculo.
• Dispersión innecesaria de los datos a lo largo de diferentes tablas.
• Tener filas y columnas en blanco en tablas con datos.
• Dejar celdas vacías para datos repetidos.
Los tres primeros puntos de la lista tienen que ver con u n a cosa: siempre debe
intentar mantener los datos relacionados en u n a tabla continua. Una y otra vez
hemos podido ver hojas de cálculo que no siguen esta simple regla y por tanto
están limitadas en su capacidad para aprovechar por completo algunas de las
funciones más potentes de Excel, incluyendo las tablas dinámicas, los subtotales
y las fórmulas. En dichos escenarios, sólo podrá utilizar estas funciones aprove-
chándolas por completo cuando organice sus datos en u n a tabla m u y sencilla.
No es una mera coincidencia que las hojas de cálculo de Excel puedan albergar
65.536 filas pero solamente 256 columnas. Teniendo esto en mente, debería con-
figurar las tablas con encabezados de columnas que vayan a lo largo de la prime-
ra fila y los datos relacionados distribuidos de forma continua directamente debajo
de los encabezados apropiados. Si observa que está repitiendo el mismo dato a lo
largo de dos o más filas en u n a de esas columnas, evite la tentación de omitir los
datos repetidos utilizando celdas en blanco para indicar dicha repetición.
Asegúrese de que los datos están ordenados siempre que sea posible. Excel
dispone de un excelente conjunto de fórmulas de referencia, algunas de las cuales
requieren que los datos estén ordenados de manera lógica. Además, la ordena-
ción acelerará también el proceso de cálculo de muchas de las funciones.

Trucos sobre el formato


Más allá de la estructura, los formatos también pueden causar problemas.
Aunque una hoja de cálculo debería ser fácil de leer y seguir, esto suele ser a costa
1. Reducir la frustración en los libros y en las hojas de cálculo 25

de la eficiencia. Somos grandes creyentes de "mantenerlo todo sencillo", aunque


muchas personas dedican grandes cantidades de tiempo a formatear sus hojas de
cálculo. Aunque no se den cuenta, este tiempo frecuentemente suele ser a costa
de la eficiencia. La sobrecarga de formatos hacen que aumente el t a m a ñ o del
libro y aunque éste parezca u n a verdadera obra de arte, puede parecerle horrible
a otra persona. Debe considerar la posibilidad de utilizar algunos colores univer-
sales para sus hojas de cálculo, como puedan ser el negro, el blanco y el gris.
Siempre es u n a buena idea dejar al menos tres filas en blanco por encima de la
tabla (al menos tres, a u n q u e es preferible dejar más). Se pueden utilizar estas
filas para insertar funciones de base de datos y de filtrado avanzado. Muchas
personas también se preocupan por cambiar la alineación de las celdas. De forma
predeterminada, los números en Excel se alinean a la derecha y los textos a la
izquierda, y realmente existen buenas razones para dejarlo así. Si empieza a cam-
biar estos formatos, resultará que no podrá saberse si el contenido de u n a celda
es un texto o un número. Es m u y habitual encontrar gente que hace referencia a
celdas que parecen números pero en realidad son texto. Si cambia la alineación
predeterminada, conseguirá hacerse un lío. La única excepción a esta regla p o -
drían ser los encabezados de las columnas.
De formato texto a las celdas sólo cuando sea completamente necesario, ya
que todos los datos que se introduzcan en dichos celdas se convertirán en texto,
incluso si lo que deseaba era introducir un número u n a fecha. Peor aún, cual-
quier celda que albergue u n a fórmula que haga referencia a u n a celda con for-
mato texto, también quedará formatearla como texto. Y normalmente, no deseará
que las celdas con fórmulas estén formateadas así.
También pueden crear problemas las celdas combinadas. La base de datos de
conocimientos de Microsoft está repleta de problemas frecuentes que se encuen-
t r a n en relación a las celdas combinadas. Una buena alternativa es utilizar la
opción Centrar en la selección, que se encuentra en el cuadro de lista desplegable
Horizontal de la pestaña Alineación del cuadro de diálogo Formato de celdas.

Trucos sobre fórmulas


Otro de los grandes errores que a menudo cometen los usuarios con las fór-
mulas de Excel es hacer referencia a columnas enteras. Esto hace que Excel tenga
que examinar en potencia miles, sino millones de celdas que de otra manera p o -
dría ignorar.
Tomemos, por ejemplo, un caso en el que tiene u n a tabla con datos que se
distribuyen desde la celda Al a la celda H1000. Puede decidir que desea utilizar
u n a o más fórmulas de referencia de Excel para extraer la información requerida.
Dado que la tabla continuará creciendo (a medida que añadan nuevos datos), es
habitual hacer referencia a toda la tabla, que incorpora todas las filas. En otras
26 Excel. Los mejores trucos

palabras, la referencia será algo parecido a A:H, o posiblemente Al :H65536. Puede


utilizar esta referencia de forma que cuando se añaden nuevos datos a la tabla,
serán referenciados en las fórmulas automáticamente. Esto resulta un hábito
m u y malo y siempre debería evitarlo. Todavía puede eliminar la constante nece-
sidad de actualizar las referencias de las fórmulas al incorporar nuevos datos que
se añaden a la tabla utilizando nombres de rangos dinámicos, que veremos en
u n o de los trucos que presentaremos más adelante.
Otro problema típico que surge en las hojas de cálculo malamente diseñadas
es el recálculo tremendamente lento. Mucha gente sugiere cambiar el modo de
cálculo a manual, a través de la opción que aparece en la pestaña Calcular del
cuadro de diálogo Opciones.
Sin embargo, normalmente es un mal consejo, que puede provocar n u m e r o -
sos problemas. Una hoja de cálculo son todas las fórmulas y cálculos, así como
los resultados que producen. Si utiliza una hoja de cálculo con el modo de cálculo
manual, tarde o temprano leerá alguna información que no haya sido actualiza-
da. Puede que las fórmulas estén reflejando valores antiguos en vez de los actua-
lizados, porque cuando se utiliza el modo de cálculo manual, debe forzar a Excel
a que los realice pulsando la tecla F9.
¡Pero es m u y sencillo olvidarse de hacer esto! Piénselo de esta forma: si los
frenos de su coche se estuviesen desgastando tanto que hiciesen que fuera más
lento, ¿desconectaría el pedal del freno y utilizaría el freno de m a n o en vez de
intentar arreglar el problema? Muchos de nosotros no haríamos algo así, pero
otras personas no tienen ningún inconveniente en poner sus hojas de cálculo en
modo de cálculo manual. Si tiene la necesidad de utilizar la hoja de cálculo en
modo manual, entonces tiene un problema de diseño.
Las fórmulas matriciales son otra de las causas comunes de los problemas.
Están pensadas para hacer referencia a celdas simples, pero si los utiliza para
hacer referencia a grandes rangos, hágalo lo menos posible. Cuando un gran
número de colecciones hacen referencia a rangos extensos, el rendimiento del
libro se verá afectado, a veces hasta el punto en el que ni siquiera se puede utili-
zar y tiene que cambiar a modo de cálculo manual.
Las funciones de base de datos de Excel proporcionan muchas alternativas al
uso de fórmulas matriciales, como veremos más adelante en un truco. Además,
la ayuda de Excel ofrece algunos estupendos ejemplos de cómo utilizar estas fór-
mulas en grandes tablas de datos para devolver ciertos resultados en base a m ú l -
tiples criterios.
Otra alternativa que a menudo es pasada por alto es la utilización de las ta-
blas dinámicas de Excel, que veremos en el capítulo 4. Aunque las tablas dinámi-
cas puedan parecer sobrecogedoras la primera vez que se ven, le recomendamos
encarecidamente que se familiarice con esta potente función de Excel, ya que
cuando sea un maestro, se preguntará cómo pudo sobrevivir sin ellas.
1. Reducir la frustración en los libros y en las hojas de cálculo 27

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.

Crear una vista personal de los libros de Excel


Excel le permite mostrar varios libros abiertos simultáneamente y por tanto
presentarlos en una vista personalizada organizada en diferentes ventanas.
Entonces, puede guardar el espacio de trabajo como un archivo .xlw y
utilizarlo posteriormente cuando lo desee.

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.

Para abrir más de un libro a la vez, seleccione la opción Archivo>Abrir,


\ mantenga pulsada la tecla Control mientras selecciona los libros que
w
\ desea abrir y finalmente baga clic en el botón Abrir.

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

de diálogo correspondiente y haga clic en el botón Guardar. Cuando graba un


área de trabajo, la extensión del archivo será .xlw en vez de .xls. Para recuperar
un área de trabajo de Excel a u n a ventana completa de u n o de los libros en parti-
cular, simplemente haga doble clic en la barra de título de la ventana correspon-
diente. También puede hacer clic en el botón de maximizar de cualquiera de las
ventanas del área de trabajo. Una vez que haya acabado, puede cerrar los libros
de Excel de la forma habitual.

Figura 1.1. Cuatro libros abiertos en vista mosaico.

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

Figura 1.2. Cuatro libros en vista horizontal.

Figura 1.3. Cuatro libros en vista vertical.


30 Excel. Los mejores trucos

Figura 1.4. Cuatro libros en vista cascada.

TRUCO Introducir datos en varias hojas de cálculo


simultáneamente
Es muy común tener los mismos datos en varias hojas de cálculo
simultáneamente. Puede utilizar la herramienta de Excel para agrupar de
forma que los datos introducidos en una hoja se introduzcan
automáticamente en el resto de hojas al mismo tiempo. También
disponemos de una aproximación más rápida y más flexible para hacer esta
tarea, que requiere de un par de líneas de código de Visual Basic for
Applications (VBA).

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.

Agrupar hojas de cálculo manualmente


Para utilizar la función Grupo manualmente, simplemente haga clic en la
hoja en la que va a introducir los datos y pulse la tecla Control (tecla Mayús en
1. Reducir la frustración en los libros y en las hojas de cálculo 31

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.

Cuando las hojas de cálculo están agrupadas, si echa un vistazo a la


barra de título de Excel, verá que aparece la palabra "Grupo" encerrada
entre corchetes. Esto le hace saber que todavía tiene agrupadas las
/ hojas de cálculo. A menos que tenga vista de águila y una memoria de
elefante, es más que probable que no se dé cuenta o se olvide de que
tiene agrupadas las hojas de cálculo. Por tanto, le sugerimos que las
desagrupe tan pronto como haya terminado con lo que estuviese
haciendo.

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.

Agrupar hojas de cálculo automáticamente


Puede evitar estos inconvenientes fácilmente utilizando un código VBA m u y
sencillo. Para que pueda funcionar, debe residir dentro del módulo privado del
objeto Sheet (Hoja). Para acceder rápidamente al módulo privado, haga clic con el
botón derecho del ratón en la pestaña con el nombre de la hoja y seleccione la
opción Ver código. Entonces podrá utilizar uno de los eventos de Excel para las
hojas de cálculo, los cuales ocurren dentro de la propia hoja de cálculo, como
puede ser cambiar u n a celda, seleccionar un rango, activar, desactivar, etc. me-
diante dichos eventos, podrá mover el código dentro del módulo privado del obje-
to Sheet. Lo primero que h a y que hacer para que funcione el agrupamiento es
dar nombre al rango de celdas que desea tener agrupadas de forma que los datos
se introduzcan automáticamente en el resto de hojas de cálculo. Escriba este có-
digo en el módulo privado:
Prívate Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Intersect(Range("MiRango"), Target) Is Nothing Then
32 Excel. Los mejores trucos

'Hoja5 se ha colocado primero a propósito ya que será


•la hoja activa desde la que trabajaremos
Sheets(Array("Hoja5", M Hoja3", "Hojal")).Select
Else
Me.Select
End If
End Sub

En este código, hemos utilizado el rango cuyo nombre es "MiRango", pero


puede cambiar este nombre por el que esté utilizando en su hoja de cálculo. Tam-
bién deberá cambiar los tres nombres de hoja en el código, tal y como se muestra
la figura 1.5, con aquellos nombres de hoja que desea agrupar. Cuando haya
terminado, cierre la ventana de módulo o bien pulse Alt/Comando-Capara vol-
ver a la ventana principal de Excel.

Figura 1.5. Código para a g r u p a r automáticamente hojas de cálculo.

Es importante reseñar que el primer nombre de hoja utilizado en el array debe


ser el de la hoja que contiene el código y por tanto la hoja de cálculo en la que se
introducirán los datos.
Una vez que haya escrito el código en el lugar adecuado, cada vez que selec-
cione cualquier celda de la hoja de cálculo, el código comprobará si la celda que
ha seleccionado (el objetivo) está dentro del rango llamado "MiRango". Si es así, el
código agrupará automáticamente las hojas de cálculo que desea agrupar. Si por
el contrario esto no es así, desagrupará las hojas simplemente activando la hoja
en la que se encuentra. La maravilla de este truco es que no hay necesidad de
agrupar manualmente las hojas y por tanto correr el riesgo de olvidarse de
1. Reducir la frustración en los libros y en las hojas de cálculo 33

desagruparlas, por lo que esta aproximación le ahorrará gran cantidad de tiem-


po y frustración. Si desea que aparezcan los mismos datos en las otras hojas pero
no en las mismas direcciones de celdas, escriba el siguiente código:
Prívate Sub worksheet_Change(ByVal Target As Range)
If Not Intersect(Range("MiRango"), Target) Is Nothing Then
With Range("MiRango")
.Copy Destination:=Sheets("Hoja3").Range("Al")
.Copy Destination:=Sheets("Hojal").Range("DIO")
End With
End If
End Sub

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.

Impedir que los usuarios realizan ciertas acciones


Aunque Excel proporciona protección general para los libros y hojas de
cálculo, esta característica no proporciona privilegios limitados a los
usuarios a menos que utilice un truco.

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.

Los usuarios pueden saltarse todas estas protecciones si desactivan las


macros por completo. Si la seguridad está establecida a nivel medio,
serán notificados de que existen macros en el libro abierto, dando la
/ posibilidad de desactivarlas. Un nivel de seguridad alto simplemente
desactivará las macros automáticamente. Por otro lado, si las hojas de
cálculo requieren del uso de macros, es más que probable que los
usuarios desean tener las macros activadas. Estos trucos son prácticos
y no proporcionan una seguridad de datos que requiera de gran carga
de trabajo.

Impedir el comando Guardar como en un libro de Excel


Se puede especificar que cualquier libro de Excel sea guardado como sólo lec-
t u r a activando la casilla de verificación Se recomienda sólo lectura que se en-
34 Excel. Los mejores trucos

cuentra accediendo a la opción Opciones generales del cuadro de diálogo Guar-


dar. Con esto, se evita que un usuario pueda guardar cualquier cambio que haya
realizado al archivo, a menos que lo grabe con un nombre diferente o en u n a
ubicación distinta.
A veces, sin embargo, deseará impedir que los usuarios puedan guardar u n a
copia del libro en otra carpeta con el mismo nombre de archivo o con cualquier
otro. En otras palabras, lo que desea es que los usuarios sólo puedan guardar
sobre el archivo existente y no crear otra copia del mismo. Esto es particular-
mente interesante cuando hay más de una persona guardando los cambios en un
libro de Excel, porque no desea que haya diferentes copias de un mismo libro
guardadas con el mismo nombre pero en carpetas diferentes.
El evento Bef o r e S a v e que vamos a utilizar existe desde Excel 97. Como su
propio nombre indica, este evento se produce justamente antes de que un libro
sea guardado, permitiéndole interactuar con el usuario mostrando u n a adver-
tencia e impidiendo que Excel continuar grabando.

Antes de probar esto en su casa, asegúrese de guardar su libro de Excel


antes. Si coloca este código sin haber guardado los cambios antes, ya
no podrá hacerlo.

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

Este acceso rápido no está disponible en Macintosh. Tendrá que abrir


el Editor de Visual Basic pulsando Opción-Fll o bien seleccionando
la opción de menú Herramientas>Macro>Editor Visual Basic. Una vez
en él, haga clic con el botón derecho en ThisWorkbook que está situado
en la ventana de proyectos de la parte izquierda.

Escriba el siguiente código en VBE, tal y como se muestra en la figura 1.7 y


luego pulse Alt/Comando-CLpara volver a la ventana principal de Excel.

Figura 1.7. Código una vez introducido en el módulo privado (ThisWorkbook).

P r í v a t e Sub workbook_BeforeSave(ByVal SaveAsUI As Boolean, Cancel As


Boolean)
Dim lReply As Long
If SaveAsUI = True Then
lReply = MsgBox("No tiene permiso para guardar este " & _
"libro con otro nombre. ¿Desea guardarlo con el mismo nombre?",
vbQuestion + vbOKCancel)
Cancel = (lReply = vbCancel)
If Cancel = False Then Me.Save
Cancel = True
End If
End Sub

Vamos a probarlo. Seleccione la opción Archivo>Guardar y el libro se guardará


de forma normal. Ahora, intente seleccionar la opción Archivo>Guardar como y
36 Excel. Los mejores trucos

entonces verá un mensaje que le indica que no tiene permiso para guardar este
libro con otro nombre diferente.

Impedir que los usuarios impriman un libro de Excel


Quizá desee impedir que los usuarios puedan imprimir un libro para que lue-
go seguramente acabe en u n a papelera o tirado en un escritorio a la vista de
todos. Utilizando el evento Bef o r e P r i n t , podemos impedir esto. Introduzca el
siguiente código, como hicimos anteriormente, en el Editor de Visual Basic:
Prívate Sub workbook_BeforePrint(Cancel As Boolean)
Cancel = True
MsgBox "No puede imprimir este libro.", vblnformation
End Sub

Pulse Alt/Comando-Q_cuando haya terminado de introducir el código para


guardarlo y volver a la ventana principal de Excel. Ahora, cada vez que los usua-
rios intenten imprimir este libro, no podrán hacerlo. La línea de código con la
instrucción MsgBox es opcional, pero siempre es buena idea incluirla para que
informe al usuario de que no moleste al departamento de Tecnología Interna
diciendo que su programa no funciona.
Si desea impedir que los usuarios impriman solamente algunas hojas del li-
bro, utilice este código en vez del anterior:

Private Sub workbook_BeforePrint(Cancel As Boolean)


Select Case ActiveSheet.Ñame
Case "Hojal", "Hoja2"
Cancel = True
MsgBox "No puede imprimir esta hoja de este libro.",_
vblnformation
End Select
End Sub

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.

Impedir que los usuarios inserten más hojas de cálculo


Excel le permite proteger la estructura de un libro de forma que los usuarios
no puedan eliminar hojas de cálculo, reordenarlas, cambiar sus nombres, etc. A
1. Reducir la frustración en los libros y en las hojas de cálculo 37

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:

Prívate Sub Workbook_NewSheet(ByVal Sh As Object)


Application.DisplayAlerts = False
MsgBox "No puede añadir nuevas hojas de cálculo a este libro.",_
vbInformation
Sh.Delete
Application.DisplayAlerts = True
End Sub

Este código primeramente muestra el cuadro de diálogo con el mensaje y lue-


go, inmediatamente, elimina la nueva hoja que se acaba de añadir, u n a vez que
el usuario acepta el mensaje. La instrucción Appl i c a t i ó n . Di s p l a y A l e r t s =
F a l s e impide que Excel muestre la advertencia estándar que pregunta al u s u a -
rio si realmente desea eliminar la hoja. Con este código, los usuarios serán inca-
paces de añadir más hojas de cálculo al libro.
Otra forma de impedir que los usuarios añadan nuevas hojas de cálculo es
seleccionar la opción Herramientas>Proteger>Proteger libro y luego activar la ca-
silla de verificación Estructura. Sin embargo, como ya dijimos al principio de este
truco, el mecanismo de protección de Excel es menos flexible y además de impe-
dir añadir nuevas hojas, también impedirá otras muchas cosas.

Impedir confirmaciones innecesarias


A veces, las interacciones de Excel puedan resultar pesadas: siempre
preguntando para pedir confirmación sobre acciones. Quitemos estos
mensajes y dejemos que Excel realice las acciones.
El tipo de mensajes a los que nos referimos son aquellos que preguntan si se
desean activar las macros (incluso cuando no hay ninguna) o los que nos pre-
g u n t a n si estamos seguros de que queremos eliminar un hoja de cálculo. A con-
tinuación mostramos cómo evitar estos tipos de mensajes.

Activar las macros cuando no se tenga ninguna


La memoria de Excel es de acero cuando se trata de recordar que ha grabado
u n a macro en un libro. Por desgracia, Excel sigue recordando que se ha grabado
u n a macro incluso si la ha eliminado utilizando la opción Herramientas>Macro>
Macros (Alt/Opción-F8). Después de hacer esto, si abre el libro de nuevo seguirá
recibiendo un mensaje que le pregunta si desea activar las macros, incluso a u n -
que no haya ninguna que activar.
38 Excel. Los mejores trucos

Se le pedir confirmación para activar las macros solamente si el nivel


de seguridad está establecido en medio. Si está establecido en bajo, las
macros se activan directamente, pero si está establecido en alto, están
desactivadas automáticamente.

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.

Busque el libro en el Explorador de proyectos y haga clic en el icono + situado


a su izquierda para visualizar los componentes del libro, en particular los m ó d u -
los. Haga clic en el icono + de la carpeta Módulos para obtener u n a lista de todos
los módulos. Haga clic con el botón derecho del ratón en cada módulo y elija la
opción Quitar módulo. Cuando se le pregunte, rechace la opción de exportar los
módulos. Antes de quitar los módulos que pudieran tener código útil, haga doble
clic en cada u n o de ellos para asegurarse de que no los necesite. Al terminar,
pulse A l t / C o m a n d o - C t p a r a volver de nuevo a la ventana principal de Excel.

Mensajes de confirmación para guardar cambios


que no se han realizado
Probablemente habrá observado que a veces al abrir un libro y echar un vista-
zo a su información es suficiente para que Excel le pregunte si desea guardar los
1. Reducir la frustración en los libros y en las hojas de cálculo 39

cambios en el libro de macro personal (aunque de hecho no ha realizado ningu-


no). Lo más probable es que tenga u n a función imprevisible dentro del libro de
macro personal.
Un libro de macro personal es un libro oculto que se crea la primera vez que
graba u n a macro y que se abre cada vez que se utiliza Excel. Una función (o
fórmula) imprevisible es aquella que se recalcula automáticamente cada vez que
realiza prácticamente cualquier cosa en Excel, incluyendo abrir y cerrar un libro
o la aplicación entera. Dos de las funciones imprevisibles más comunes son Hoy ()
y Ahora() .
Por tanto, aunque crea que no ha realizado cambios en el libro, puede que
esas funciones que se ejecutan en segundo plano sí los h a y a n hecho. Esto cuenta
como un cambio y hace que Excel le pregunte si desea guardar dichos cambios.
Si desea que Excel deje de preguntar por aquellos cambios que no ha realiza-
do, dispone de un par de opciones. La más obvia es no almacenar funciones im-
previsibles al principio dentro del libro de macro personal y luego eliminar
cualquier función imprevisible que ya exista. La otra opción, en caso de que ne-
cesite utilizar funciones imprevisibles, puede ser utilizar este sencillo código para
hacer que Excel crea que el libro de macro personal ha sido guardado en el m o -
mento en el que se abre:

Prívate Sub workbook_Open( )


Me.Saved = True
End Sub

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

Esta macro guardará el libro de macro personal automáticamente cada vez


que sea abierto.

Impedir los avisos de Excel para macros grabadas


Uno de los muchos inconvenientes de las macros grabadas es que, aunque
son m u y útiles para reproducir cualquier comando, tienden a olvidar las res-
40 Excel. Los mejores trucos

puestas a los avisos que se muestran en pantalla. Elimine u n a hoja de cálculo y


se le pedirá confirmación; ejecute u n a macro que realice esto mismo y todavía se
le pedirá confirmación. Veamos cómo desactivar esos avisos.
Seleccione la opción Herramientas>Macro>Macros (Alt/Opción-F8) para mos-
trar un listado de todas las macros.
Asegúrese de que está seleccionada la opción Todos los libros abiertos en el
cuadro de lista desplegable de la parte inferior. Seleccione la macro en la que esté
interesado y haga clic en el botón Modificar. Coloque el cursor antes de la pri-
mera línea de código (la primera línea que no tiene un apostrofe delante de ella) y
escriba lo siguiente:
Application.DisplayAlerts = False

Y al final del todo del código, añada esto:


Application.DisplayAlerts = True

Con lo que la macro entera quedaría así:


Sub MyMacro( )
i

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.

Si por cualquier razón la macro no se completa (un error de ejecución,


por ejemplo), Excel puede que no llegue a ejecutar la línea de código
en la que se vuelven a activar los mensajes de confirmación. Si ocurriese
/ esto, probablemente será mejor salir de Excel y volver a abrirlo para
dejar todo en su estado normal.

Ahora ya sabe cómo utilizar Excel sin mensajes de confirmación. Tenga en


cuenta, de todas formas, que esos mensajes están ahí por u n a razón. Asegúrese
de que comprende completamente el propósito de estos mensajes antes de
desactivarlos.
1. Reducir la frustración en los libros y en las hojas de cálculo 41

Ocultar hojas para que no puedan ser mostradas


A veces desearía tener un lugar donde colocar información que no pueda
ser leída o modificada por los usuarios. Puede construir un lugar secreto
dentro del libro, un lugar donde almacenar información, fórmulas y otros
recursos que se utilizan en las hojas pero que no desea que se vean.

Una práctica m u y útil cuando se configura un nuevo libro de Excel es reser-


var u n a hoja para almacenar información que los usuarios no necesitan ver:
cálculos de fórmulas, validación de datos, listas, variables de interés y valores
especiales, datos privados, etc. Aunque se puede ocultar u n a hoja seleccionando
la opción Formato>Hoja>Ocultar, es importante asegurarse de que los usuarios
no puedan volver a mostrarla seleccionando la opción Formato>Hoja>Mostrar.
Por supuesto, simplemente puede proteger la hoja, pero esto todavía deja al
descubierto los datos privados, las fórmulas, etc. Además, no se puede proteger
las celdas que están vinculadas a cualquiera de los controles disponibles en la
barra de herramientas Formularios.
En vez de esto, jugaremos con la propiedad V i s i b l e de la hoja, establecién-
dola en x l V e r y H i d d e n . Desde VBE (Herramientas>Macro>Editor de Visual Basic
o Alt/Opción-Fl 1), asegúrese de que la ventana de exploración de proyectos esté
visible seleccionando la opción Ver>Explorador de proyectos. Encuentre el n o m -
bre del libro y expanda su jerarquía haciendo clic en el icono + que aparece a la
izquierda de su nombre. Expanda la carpeta Microsoft Excel Objetos para mos-
trar todas las hojas del libro.
Seleccione la hoja que desea ocultar en el explorador de proyectos y muestre
sus propiedades seleccionando la opción Ver>Ventana Propiedades (o pulsando la
tecla F4). Asegúrese de que está seleccionada la pestaña Alfabética y busque la
propiedad Visible en la lista, que estará situada al final. Haga clic en el cuadro de
texto que hay a su derecha y seleccione la última opción: 2 - xISheetVeryHidden,
tal y como se muestra en la figura 1.9. Pulse Alt/Comando-CLpara guardar los
cambios y volver a la ventana principal de Excel. A partir de ahora, la hoja ya no
estará visible desde la interfaz de Excel e incluso tampoco podrá mostrarse a
través de la opción Formato>Hoja>Mostrar.

Una vez que h a y a seleccionado la opción 2 - xISheetVeryHidden en la


s$P* ventana de propiedades, puede parecer que dicha elección no ha tenido
,¿¡r efecto. Este fallo visual ocurre a veces y no debería importarle. Siempre
$r que la hoja no aparezca entre las opciones de Formato>Hoja>Mostrar,
puede estar seguro de que todo ha ido bien.

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.

Personalizar el cuadro de diálogo Plantillas


y el libro predeterminado
Si suele realizar las mismas tareas o utilizar las mismas distribuciones para
hojas de cálculo con frecuencia, puede construir su propia pestaña de
plantillas en el cuadro de diálogo estándar Plantillas para proporcionar un
acceso rápido al inicio.

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

que utilice. Una vez terminada, seleccionará la opción Archivo>Guardar como y


elegirá la opción Plantilla del cuadro de lista desplegable con los tipos de archivos
posibles. Si la plantilla es de un libro (es decir, que contendrá más de u n a hoja),
entonces cree un nuevo libro, haga todos los cambios necesarios y luego seleccio-
ne la opción Archivo>Guardar como y guárdelo como u n a plantilla.
Con la plantilla terminada, puede crear u n a copia exacta de la misma en cual-
quier momento seleccionando la opción Archivo>Nuevo y luego seleccionando
u n a plantilla de libro, o bien haciendo clic con el botón derecho en u n a pestaña
de hoja y seleccionando la opción Insertar desde el menú contextual para insertar
u n a nueva hoja a partir de u n a plantilla. ¿No sería interesante poder tener todas
esas plantillas disponibles desde el cuadro de diálogo estándar Plantillas o confi-
gurar su libro preferido como predeterminado? Puede hacer todo esto creando su
propia pestaña de plantillas.

Este truco presupone que tiene una única instalación de Excel en su


ordenador. Si dispone de múltiples copias o versiones de Excel, puede
que no funcione.

Crear su propia pestaña de plantillas


Si dispone de u n a serie de plantillas (tanto de libros como de hojas de cálculo)
que desea utilizar con regularidad, puede agruparlas todas j u n t a s en el cuadro
de diálogo Insertar o Plantillas.
Desde cualquier libro, seleccione la opción Archivo>Guardar como y, desde el
cuadro de lista desplegable de tipos de archivo, seleccione la opción Plantilla (*.xlt).
De forma predeterminada, Excel seleccionará la carpeta estándar Plantillas del
disco duro en donde se almacenan todas las plantillas del usuario. Si no existe
u n a carpeta llamada "Mis plantillas", cree u n a utilizando el botón Nueva carpe-
ta. Luego, seleccione la opción Archivo>Nuevo en la barra de menús (en Excel
2000 y posteriores, seleccione Plantillas generales en el cuadro de diálogo Nuevo
libro. En Excel 2003, debe seleccionar la opción En mi PC del panel de tareas).
Entonces, debería haber u n a pestaña que representa la carpeta Mis plantillas que
acaba de crear (véase figura 1.10). También debería ver las plantillas de libros y
hojas de cálculo que guarde en dicha carpeta.

Utilizar un libro personalizado de forma predeterminada


Al iniciar Excel, se abre de forma predeterminada un libro en blanco llamado
Librol, que contiene tres hojas en blanco. Esto está bien si desea comenzar de
nuevo cada vez que inicia Excel. Sin embargo, es probable que trabaje normal-
44 Excel. Los mejores trucos

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.

General ] Soluciones de hoja de cálculo Mis plantillas j

iá ¡ J 1
Libro l.xlt Libro2.XLT

Seleccione un icono para


ver una vista previa.

Plantillas de Office Online

Figura 1.10. El cuadro de diálogo Plantillas.

Para ello, guarde su libro predeterminado (plantilla) en la carpeta XLSTART


(que normalmente se encuentra en la carpeta C:\Documents and Settings\Nombre
de usuario\Application Data\Microsoft\Excel\XLSTART en Windows y en la car-
peta Applications/Microsoft Office X/Office/Startup/Excel en Macintosh). Una
vez que haya hecho esto, Excel utilizará cualquiera de los libros que haya inclui-
do en esta carpeta como predeterminados.

La carpeta XLSTART es donde se crea y guarda automáticamente el


libro de macros personales cuando graba una macro. El libro de macros
personales es un libro oculto. También puede tener sus propios libros
ocultos abiertos en segundo plano si lo desea, abriendo dicho libro,
seleccionando la opción Ventana>Ocultar, cerrando Excel y luego
haciendo clic en Sí para guardar los cambios en él. Luego coloque ese
libro en la carpeta XLSTART Todos los libros que oculte y coloque
dentro de la carpeta XLSTART se abrirán como libros ocultos cada vez
que inicie Excel.

Evite la tentación de colocar muchos libros en esta carpeta, especialmente si


son grandes, dado que todos ellos se abrirán cuando inicie Excel. Si se tiene m u -
chos libros abiertos se puede reducir considerablemente el rendimiento de Excel.
Naturalmente si cambia de opinión y desea que al iniciar Excel aparezca un libro
en blanco, simplemente elimine los libros o plantillas de la carpeta XLSTART.
1. Reducir la frustración en los libros y en las hojas de cálculo 45

Crear un índice de hojas en el libro


Si ha dedicado mucho tiempo en un libro que contiene muchas hojas, sabe
perfectamente lo complicado que puede ser encontrar una hoja en
particular. En estos casos, es imprescindible tener una hoja índice para
poder navegar por el resto de hojas de libro.

Utilizar u n a hoja de índice le permitirá explorar de forma rápida y sencilla el


libro de forma que con un solo clic de ratón pueda ir directamente al lugar que
desee. Se puede crear un índice de dos formas. Podría tener la tentación de crear
el índice a mano. Cree u n a nueva hoja, llámela "índice" o algo parecido, intro-
duzca en ella u n a lista de todos los nombres de las hojas e incluya vínculos a
cada u n a de ellas mediante la opción de menú lnsertar>Vínculo o pulsando Con-
trol/Comando-K. aunque este método pueda ser suficiente en casos de los que
no hay demasiadas hojas y no hay muchos cambios, puede ser m u y tedioso te-
ner que mantener el índice manualmente.
El siguiente código creará automáticamente un índice con vínculos a todas las
hojas que estén incluidas en el libro. Este índice se vuelve a generar cada vez que
la hoja que contiene el código es activada. Este código debería residir en el m ó d u -
lo privado del objeto Sheet. Inserte u n a nueva hoja en el libro de Excel y llámela
con algún nombre apropiado, como pueda ser "índice". Luego haga clic con el
botón derecho del ratón sóbrela pestaña de dicha hoja y seleccione la opción Ver
código. En la ventana de código de Visual Basic escriba lo siguiente:

Prívate Sub Worksheet_Activate( )


Dim wSheet As Worksheet
Dim L As Long
L = 1
With Me
.Columns(1).ClearContents
.Cells(l, 1) = "ÍNDICE"
.Cells(l, 1).Ñame = "índice"
End With

For Each wSheet In Worksheets


If wSheet.Ñame oMe.Name Then
L = L + 1
With wSheet
.Range("Al").Ñame = "Inicio" & wSheet.Index
.Hyperlinks.Add Anchor:=.Range("Al"), Address:="",_
SubAddress:="índice", TextToDisplay:="Volver al índice"
End With
Me.Hyperlinks.Add Anchor:=Me.Cells(1, 1 ) , Address:="",_
SubAddress:="Inicio" & wSheet.Index, TextToDisplay:=wSheet.Ñame
End If
Next wSheet
End Sub
46 Excel. Los mejores trucos

Pulse Alt/Comando-CLpara volver al libro y guardar los cambios. Observe


que el código da el nombre "Inicio" (al igual que cuando da nombre a u n a celda o
un rango de celdas en Excel) a la celda Al de cada hoja, además de un único
número que representa el n ú m e r o de índice para dicha hoja. Esto asegura que la
celda Al de cada hoja tiene un nombre diferente. Si la celda Al de la hoja ya tiene
un nombre, debería considerar cambiar cualquier mención a Al en el código por
algo más adecuado (por ejemplo, alguna celda no utilizada que esté situada en
cualquier parte de la hoja).

Debe tener en cuenta que si selecciona la opción Archivo>Propiedades>


Resumen e introduce una dirección URL como vínculo base, el índice
que se crea por el código anterior posiblemente no funcione. Un vínculo
base es una ruta o URL que desea utilizar para todos los vínculos con
la misma dirección base y que estén incluidos en el documento actual.

Otra forma de construir un índice, que es más sencilla para el usuario, es


añadir un vínculo a la lista de hojas como un elemento de menú contextual, al
que se puede acceder haciendo clic con el botón derecho del ratón. Haremos que
dicho vínculo abra el menú estándar de hojas. Normalmente puede abrir este
menú haciendo clic con el botón derecho del ratón en cualquiera de los botones
de desplazamiento que se encuentran a la izquierda de donde se muestran las
solapas de cada hoja, tal y como se muestra en la figura 1.11.

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

]H 4 T ™ f p ^ á j j i ; E ^ . . „ ™ ^ r a _ j . ^r—p^ u r a s de esta semana ^ Hojal £ Hoja2 j 4 j


1 •in
Listo NUM

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

A continuación, deberá insertar un módulo estándar que almacene la macro


"IndexCode", que es llamada por este código que acabamos de introducir en el
momento en el que el usuario hace clic con el botón derecho del ratón en u n a
celda. Es fundamental que utilice un módulo estándar a continuación, ya que si
coloca el código en el mismo módulo que el código anterior, Excel no sabrá dónde
encontrar u n a macro llamada "IndexCode". Seleccione lnsertar>Módulo y escriba
el siguiente código:

Sub IndexCode( )
Application.CommandBars("workbook Tabs").ShowPopup
End Sub

Pulse Alt/Comando-CLpara volver a la ventana principal de Excel. A conti-


nuación haga clic con el botón derecho en cualquier celda y verá un nuevo ele-
mento de menú llamado "índice de hojas", que al seleccionarlo mostrará un listado
de todas las hojas que contiene este libro.

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:

Prívate Sub Worksheet_Activate ( )


Me.ScrollArea = "A1:G50"
End Sub

Como siempre, pulse Alt/Comando-Clpara volver a la ventana principal de


Excel y guardar los cambios.
Aunque en este caso no habrá u n a indicación clara, como pueda ser la zona
gris que se mostraba con el primer método, será incapaz de desplazarse o selec-
cionar cualquier cosa fuera del área especificada.
1. Reducir la frustración en los libros y en las hojas de cálculo 49

?
;'^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

Figura 1.12. Ventana de propiedades y del explorador de proyectos.

Cualquier macro que intente seleccionar un rango fuera de esta área


de desplazamiento (incluyendo la selección de filas o columnas enteras)
no podrá hacerlo. Esto es particularmente cierto para aquellas macros
grabadas, que a menudo hacen uso de las selecciones.

Si las macros seleccionan un rango fuera del área de desplazamiento, puede


modificarlas de forma que no estén limitadas a dicha haría mientras realicen sus
tareas. Para ello, simplemente seleccione la opción Herramientas>Macro>Macros
(Alt-F8), busque el nombre de la macro, selecciónela y luego haga clic en el b o -
tón Modificar. Escríbala siguiente línea de código al principio del todo:

ActiveSheet.ScrollArea = ""

Y al final del todo de la macro, escriba:

ActiveSheet.ScrollArea = "$A$1:$G$50"

Con esto, el código de la macro quedaría más o menos así:


Sub MyMacro( )
50 Excel. Los mejores trucos

' MiMacro Macro


' Macro grabada el 19/9/2003 by OzGrid.com

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

Nuestra macro selecciona la celda Z100 y le da formato negrita. Luego selec-


ciona la hoja llamada "Presupuesto diario", selecciona la celda T500 de dicha hoja
y quita el formato negrita. Hemos añadido A c t i v e S h e e t . S c r o l l A r e a = ""
de forma que pueda seleccionarse cualquier celda y más adelante volvemos a
establecer los límites del área de desplazamiento al valor deseado. Cuando selec-
ciona amos otra hoja (Presupuesto diario), volvemos a permitir al código selec-
cionar cualquier celda, y después de que la macro realice sus tareas, volvemos a
establecer el rango a los límites deseados. Un tercer método, el más flexible, limi-
ta automáticamente el área de desplazamiento al rango que está siendo usado en
la hoja en la que escribe el código. Para utilizar este método, haga clic con el
botón derecho en la pestaña de la hoja en la que desea limitar el área de desplaza-
miento, seleccione la opción Ver código y escriba lo siguiente:

Private Sub Worksheet_Activate( )


Me.ScrollArea = Range(Me.UsedRange, Me.UsedRange(2,2)).Address
End Sub

Luego pulse Alt/Comando-CLo haga clic en el botón para cerrar la ventana


de Visual Basic para volver a la ventana principal y guardar los cambios.
La macro anterior se ejecutará automáticamente cada vez que se active la
hoja en la cual introdujo este código. Sin embargo, puede encontrarse un proble-
ma con esta macro cuando necesite introducir datos fuera del área utilizable.
Para evitar este problema, simplemente utilice u n a macro estándar que resta-
blezca el área de desplazamiento de nuevo a toda la hoja. Para ello, seleccione la
opción Herramientas>Macro>Editor de Visual Basic, seleccione luego la opción
lnsertar>Módulo e introduzca el siguiente código:

Sub ResetScrollArea( )
ActiveSheet.ScrollArea = ""
End Sub
1. Reducir la frustración en los libros y en las hojas de cálculo 51

Entonces pulse A l t / C o m a n d o - ( i p a r a volver a la ventana principal de Excel y


guardar el trabajo.
Si lo desea, puede hacer que la macro sea fácilmente accesible asignándole
una tecla de acceso rápido. Seleccione la opción Herramientas>Macro>Macros (Alt/
Opción-F8), seleccione ResetScrollArea (el nombre que le dimos a la macro ante-
rior), haga clic en Opciones y luego asigne u n a tecla de acceso rápido.
Cada vez que necesite añadir datos fuera de los límites establecidos de la hoja,
ejecute esta macro que quita dicha limitación. Entonces haga aquellos cambios
que no podía hacer cuando el límite estaba establecido y cuando haya termina-
do, active cualquier otra hoja y luego vuelva a activar ésta para que se vuelva a
limitar el área de desplazamiento. La activación de la hoja hará que se ejecute el
código inicial que escribimos, el cual limitaba el área de desplazamiento.

^ ^ Q 9 Bloquear y proteger celdas que contienen fórmulas


II ^ ^ V f ^ H Quizá desee permitir a los usuarios cambiar celdas que contienen datos
^^K^^H pero no permitirles cambiar las fórmulas. Puede mantener bloqueadas las
celdas que contienen fórmulas sin tener que proteger toda la hoja o el libro.

Cuando creamos u n a hoja de cálculo, muchos de nosotros necesitamos utili-


zar fórmulas de algún tipo. Aveces, sin embargo, no deseará que otros usuarios
puedan estropear, eliminar o sobrescribir cualquiera de las fórmulas incluidas en
la hoja de cálculo. La forma más fácil y rápida de impedir que las personas j u e -
guen con las fórmulas es proteger la hoja de cálculo. Sin embargo, proteger la
hoja de cálculo no sólo evita que los usuarios estropeen las fórmulas, sino que
también evitan que se pueda introducir cualquier información. Y a veces no que-
rrá ir tan lejos en la seguridad.
De forma predeterminada, todas las celdas de u n a hoja de cálculo están blo-
queadas, aunque esto no tiene efecto hasta que se aplique la protección de la
misma. A continuación mostramos un método m u y sencillo para aplicar u n a
protección a la hoja de cálculo de forma que sólo las celdas con fórmulas estén
bloqueadas y protegidas.
Seleccione todas las celdas de la hoja, bien pulsando C o n t r o l / C o m a n d o - E o
bien pulsando el cuadrado gris situado en la intersección de la columna A y la
fila 1. Entonces vaya a Formato>Celdas>Proteger y desactive la casilla de verifi-
cación Bloqueada. Haga clic en Aceptar.
Ahora seleccione cualquier celda, seleccione Edición>lr a (Control-I ó F5) y
haga clic en el botón Especial. Verá entonces un cuadro de diálogo como el que
se muestra en la figura 1.13.
Seleccione el botón de opción Celdas con fórmulas del cuadro de diálogo Ir a
especial y, si es necesario, limite las fórmulas a los tipos subyacentes. Luego
Excel. Los mejores trucos

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

Figura 1.13. El cuadro de diálogo Ir a especial.

Este método realmente ahorra gran cantidad de tiempo y elimina posibles


errores al buscar las fórmulas, de forma que pueda protegerlas. Por desgracia,
también evita que los usuarios puedan utilizar otras funciones, como puede ser
ordenar, cambiar el formato, alinear el texto y otras muchas, incluso cuando la
celda no está bloqueada. Puede solucionar este problema de dos formas:
La primera aproximación consiste en no utilizar la protección de la hoja, sino
la validación de datos en lugar de ello.

La validación de datos está lejos de ser del todo segura a la hora de


evitar que los usuarios introduzcan datos no válidos en celdas. Los
usuarios todavía pueden pegar en una celda con validación cualquier
tipo de dato, quitando la validación de dicha celda a menos que la
celda original que se está copiando también tuviese algún tipo de
validación, en cuyo caso también se estaría sobrescribiendo.

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 ;

Figura 1.14. Fórmulas de validación.

Este método evitará que un usuario sobrescriba accidentalmente u n a celda


que tenga u n a fórmula (aunque como dijimos anteriormente, no es un método
totalmente seguro y sólo debería ser utilizado para evitar sobrescribir accidental-
mente). De todas formas, la gran ventaja de utilizar este método es que todas las
funciones de Excel todavía se pueden utilizar en la hoja de cálculo.
El último método también permite utilizar todas las funciones de Excel, pero
solamente cuando se encuentra u n a celda que no esté bloqueada. Para empezar,
asegúrese de que solamente las celdas que desea proteger están bloqueadas y que
el resto no lo están. Haga clic con el botón derecho del ratón en la pestaña de la
hoja en cuestión, seleccione la opción Ver código e introduzca el siguiente código:
Prívate Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Locked = True Then
Me.Protect Password:="Secreta"
Else
Me.Unprotect Password:="Secreta"
End If
End Sub

Si no desea utilizar u n a contraseña, omita la parte P a s s w o r d : = " S e c r e t a " .


Si por el contrario quiere utilizar u n a entonces debe cambiar la palabra "Secreta"
por aquella contraseña que desee. Luego pulse Alt/Comando-(Xo cierre la ven-
tana para volver a Excel y guardar los cambios. Ahora, cada vez que seleccione
u n a celda que está bloqueada, la hoja se bloqueará a sí misma automáticamente.
En el momento en el que seleccione cualquier celda que no esté bloqueada, la
hoja se desbloqueará.
Excel. Los mejores trucos

Este truco no funciona perfectamente, aunque normalmente funciona


lo suficientemente bien. La palabra clave utilizada en el código, Target,
sólo se refiere a la celda que está activa el momento de la selección.
/ Por esta razón, es importante destacar que si el usuario selecciona un
rango de celdas (con la celda activa estando desbloqueada), puede
eliminar la seleccione entera porque la celda objetivo estaba
desbloqueada y, por tanto, la hoja se ha desprotegido automáticamente
a sí misma.

ü Encontrar datos duplicados utilizando el formato


condicional
El formato condicional de Excel se utiliza normalmente para identificar
valores en rangos en particular, pero podemos usar un truco con esta
característica para identificar datos duplicados dentro de una lista o una
tabla.

Normalmente la gente tiene que identificar datos duplicados dentro de u n a


lista o tabla. Hacer esto manualmente puede llevar mucho tiempo y a veces se
pueden cometer errores. Le aconsejamos que para hacerlo mucho más sencillo,
utilice un truco sobre u n a de las características estándar de Excel, el formato
condicional.
Tomemos, por ejemplo, u n a tabla con datos en el rango $A$ 1 :$H$100. Selec-
cione la celda superior izquierda (Al) y arrastre el cursor del ratón hasta la celda
H100. Es importante que Al sea la celda activa en la selección, por lo que no es lo
mismo seleccionar primero la celda H100 y luego arrastrar hasta la celda A l . Se-
leccione entonces la opción Formato>Formato condicional y, en el cuadro de diálogo
Formato condicional, seleccione la opción Fórmula en el primer cuadro de lista
desplegable. En el campo que hay a su derecha, introduzca el siguiente código:
=C0NTAR.SI($A$1:$H$100;A1)>1

Haga clic en el botón F o r m a t o . . . y luego seleccione la pestaña Tramas y selec-


cione un color que desee aplicar para identificar visualmente los datos duplica-
dos. Haga clic en A c e p t a r para volver al cuadro de diálogo anterior y vuelva a
hacer clic en A c e p t a r para aceptar el formato.
Todas aquellas celdas que contengan datos duplicados deberían aparecer a h o -
ra como un árbol de Navidad con el color que eligió, haciendo mucho más senci-
llo el hecho de localizar datos duplicados para así poder eliminarlos, moverlos, o
alterarlos.
Es m u y importante comentar que como la celda Al era la activa, la dirección
de la celda es u n a referencia relativa y no absoluta, como en la tabla de datos,
1. Reducir la frustración en los libros y en las hojas de cálculo 55

$A$1:$H$100. Utilizando el formato condicional de esta forma, Excel sabe


automáticamente que debe utilizar la celda correcta como el criterio de la fun-
ción CONTAR . S I . Con esto queremos decir que la fórmula de formato condicio-
nal en la celda Al se leería así:

=CONTAR.SI($A$1:$H$100;A1)>1

Mientras que en la celda A2, se leería:

=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

En vez de tener que reescribir la fórmula, márquela en el cuadro de


texto de la Condición 1, pulse la tecla Control/Comando-C para
copiarla en el portapapeles, haga clic en el cuadro de texto de la
Condición 2, pulse Control/Comando-V para pegarla ahí y luego
cambie>3 por =3.

Haga clic en el botón Formato... y luego seleccione la pestaña Tramas para


seleccionar el color que desee utilizar para identificar los datos que aparecen justa-
Excel. Los mejores trucos

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

Para terminar, haga clic en el botón Formato..., elija la pestaña Tramas y


seleccione ahí el color que desea aplicar a los datos que aparecen exactamente dos
veces. Luego haga clic en el botón Aceptar. Ahora ya tenemos colores diferentes
de celda dependiendo del n ú m e r o de veces en el que aparecen los datos dentro de
la tabla. De nuevo, es importante recordar que la celda Al debe ser la celda activa
en la selección, puesto que la dirección de celda es una referencia relativa y no
absoluta, como en la tabla de datos, $A$1 :$H$100. Utilizando el formato condi-
cional de esta forma, Excel sabrá utilizar la celda correcta como criterio de la
función CONTAR . S I .

Asociar barras de herramientas personalizadas


a un libro en particular
A pesar de que la mayoría de barras de herramientas que cree sirven para
prácticamente todos los libros con los que trabaje, a veces la funcionalidad
de una barra de herramientas personalizada solamente es aplicable a un
libro en particular. Con este truco podremos asociar barras de herramientas
personalizadas a sus respectivos libros.
Si nunca ha creado u n a barra de herramientas personalizada, sin duda se
habrá dado cuenta que las barras herramientas se cargan y son visibles indepen-
dientemente de que libro tenga abierto. ¿Qué ocurre si su barra de herramientas
personalizada contiene macros grabadas que sólo tienen sentido con un libro en
particular? Probablemente es mejor poder asociar barras de herramientas perso-
nalizadas cuyo propósito sea especial con los libros apropiados, para así evitar
cualquier tipo de confusión y otros problemas. Podemos hacer esto insertando
un código m u y sencillo en el módulo privado del libro. Para acceder al módulo
privado, haga clic con el botón derecho en el icono de Excel, que encontrará en la
esquina superior izquierda de la pantalla, cerca del menú Archivo, y luego selec-
cione la opción Ver código.

Este acceso directo no está disponible en Macintosh. Tendrá que abrir


el Editor de Visual Basic pulsando Opción-Fll o bien seleccionando
la opción de menú Herramientas>Macro>Editor de Visual Basic. Una
vez ahí, haga clic con el botón derecho del ratón (o clic mientras
mantiene pulsada la tecla Control) en ThisWorkbook, que aparece en
la ventana de proyectos.
1. Reducir la frustración en los libros y en las hojas de cálculo 57

Entonces, introduzca este código:


Prívate Sub Workbook_Activate( )
On Error Resume Next
With Application.CommandBars("MiBarraPersonalizada")
.Enabled = True
.Visible = True
End With
On Error GoTo 0
End Sub

Private Sub Workbook_Deactivate( )


On Error Resume Next
Application.CommandBars("MiBarraPersonalizada").Enabled = False
On Error GoTo 0
End Sub

Cambie el texto de "MiBarraPersonalizada" por el nombre que desee darle a la


barra de herramientas personalizada. Para volver a la ventana principal de Excel,
cierre la ventana de módulo o pulse Alt/Comando-CL En cuanto abra o active
otro libro, la barra de herramientas personalizada desaparecerá y no podrá ser
utilizada. Reactivando el libro adecuado, la barra volverá a aparecer. Todavía p o -
demos llegar más lejos, haciendo que u n a barra de herramientas personalizada
esté disponible solamente para u n a hoja en particular del libro. Haga clic con el
botón derecho del ratón sobre el nombre de u n a hoja en la que desea activar la
barra de herramientas, seleccionando la opción Ver código. Entonces introduzca
el siguiente código:

Private Sub Worksheet_Deactivate( )


On Error Resume Next
Application.CommandBars("MiBarraPersonalizada").Enabled = False
On Error GoTo 0
End Sub

Private Sub Worksheet_Activate( )


On Error Resume Next
With Application.CommandBars("MiBarraPersonalizada")
.Enabled = True
.Visible = True
End With
On Error GoTo 0
End Sub

Ahora pulse Alt/Comando-<Xo cierre la ventana para volver a Excel. El pri-


mer procedimiento ( W o r k s h e e t _ D e a c t i v a t e () ) se ejecutará automáticamente
cada vez que deje hoja en particular y active otra. Este código cambia la propie-
dad E n a b l e d de la barra de herramientas personalizada a F a l s e , de forma que
no pueda ser vista o utilizada. El segundo procedimiento se ejecuta cada vez que
58 Excel. Los mejores trucos

se activa la hoja en cuestión, estableciendo la propiedad E n a b l e d a T r u e , con lo


que la barra vuelve a ser visible. La línea de código que dice A p p l i c a t i o n .
CommandBars ("MyCustomToolbar") . V i s i b l e = T r u e simplemente m u e s -
tra la barra de herramientas de nuevo, de forma que el usuario pueda verla.
Cambie de u n a hoja a otra y verá como la barra de herramientas desaparece y
vuelve a aparecer dependiendo de la hoja que tenga seleccionada.

TRUCO Burlar el gestor de referencias relativas de Excel


En Excel, una referencia de fórmula puede ser o bien relativa o bien absoluta,
pero a veces deseará mover celdas que utilicen referencias relativas sin tener
que hacer las referencias absolutas. Veamos cómo hacer esto.
Cuando se necesita hacer u n a fórmula absoluta, se utiliza el signo del dólar
($) delante de la letra de la columna y / o del número de la fila en la referencia a la
celda, como por ejemplo en $A$1. Una vez haya hecho esto, no importa dónde
copie la celda que la fórmula seguida haciendo referencia a la misma celda o
celdas. A veces, sin embargo, ya ha creado numerosas fórmulas que no contie-
nen referencias absolutas, sino relativas. Normalmente hace esto cuando desea
copiar la fórmula original o propagarla por la hoja y que Excel cambie las refe-
rencias de forma adecuada. Si ya ha creado las fórmulas utilizando solamente
referencias relativas, o quizás utilizando u n a mezcla entre referencias absolutas
relativas, puede reproducir las mismas fórmulas en cualquier otro rango y en la
misma hoja, en otra hoja del mismo libro, o incluso en otra hoja situada en otro
libro. Para hacer esto sin cambiar ninguna de las referencias que hay dentro de
las fórmulas, seleccione el rango de celdas que desea copiar y luego seleccione la
opción Edición>Reemplazar. En el cuadro de texto Buscar, introduzca el signo =
y en el cuadro de texto Reemplazar con el símbolo @ (por supuesto, puede utili-
zar cualquier otro símbolo que esté seguro no se utiliza en cualquiera de las
fórmulas). Luego haga clic en el botón Reemplazar todos. El signo = de todas las
fórmulas de la hoja será reemplazado con el símbolo @. Ahora puede copiar este
rango y pegarlo en el destino que desee. Luego seleccione el rango que acaba de
pegar y vuelva a seleccionar la opción Edic¡ón>Reemplazar. Esta vez reemplace el
símbolo @ por el símbolo =. Con esto, las fórmulas quedarán con las mismas
referencias que las originales.

TRUCO Quitar vínculos "fantasma" en un libro


¡Ah! Vínculos fantasmas. Al abrir un libro se le pregunta si desea "actualizar
los vínculos", ¡pero no hay ningún vínculo! ¿Cómo puede actualizar los
vínculos cuando no existen?
Los vínculos externos son vínculos que hacen referencia a otros libros. El he-
cho de que se produzcan vínculos externos no esperados puede darse por diferen-
1. Reducir la frustración en los libros y en las hojas de cálculo 59

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.

Excel 9 7 no proporciona una opción para buscar en todo el libro, pero


puede buscar en todas las hojas de un libro si las agrupa. Puede hacer
esto haciendo clic con el botón derecho en el nombre de cualquiera de
las hojas y eligiendo la opción Seleccionar todas las hojas. En versiones
posteriores de Excel, la función de Buscar y reemplazar admite la
posibilidad de buscar dentro de una hoja o de todo un libro.

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

Si alguno de los nombres se refiere a un elemento que está fuera de libro, ha


encontrado el origen de al menos u n o de los vínculos a los cuales hace referencia
el mensaje de actualizar los vínculos. Ahora es decisión suya si desea cambiar
este nombre de rango para que haga referencia solamente al propio libro, o bien
dejarlo como está.
Otra fuente potencial de vínculos son sus gráficos. Es posible que los gráficos
tengan el mismo problema que acabamos de explicar. Debería comprobar que los
rangos de datos y las etiquetas del eje X del tráfico no están haciendo referencia a
libros externos. De nuevo, debe tomar la decisión de si los vínculos que ha encon-
trado son o no correctos.
Los vínculos también pueden acechar en los objetos, como puedan ser dos
cuadros de texto, las autoformas, etc. Los objetos pueden intentar hacer referen-
cia a un libro externo. La forma más sencilla de localizar los objetos es seleccio-
nar cualquier celda de cada hoja y luego seleccionar la opción Edición>lr a (F5).
Desde el cuadro de diálogo, haga clic en el botón Especial y luego active la casilla
de verificación Objetos, y haga clic en Aceptar para comenzar la búsqueda. Con
esto seleccionaremos todos los objetos de la hoja. En cualquier caso, debería ha-
cer esto en u n a copia del libro. Después, u n a vez tengamos todos los objetos
seleccionados, puede eliminar, guardar, cerrar y volver a abrir la copia del libro
para ver si con esto hemos solucionado el problema.
Finalmente, el lugar que no es tan obvio comprobar es en las hojas ocultas
que puede haber creado y de las que se ha olvidado. Vuelva a mostrar esas hojas
seleccionando la opción Formato>Hoja>Mostrar. Si la opción Mostrar esta
desactivada, significa que no h a y hojas ocultas.
Ahora que ya ha eliminado la posibilidad de vínculos reales, es hora de elimi-
nar los vínculos fantasmas. Vaya al libro en cuestión en el que haya vínculos
fantasmas y seleccione la opción Edición>Vínculos. A veces simplemente puede
seleccionar los vínculos no deseados, hacer clic en Cambiar origen y luego hacer
que el vínculo haga referencia a sí mismo. A menudo, de todas formas, se le
informará que alguna de las fórmulas contiene un error y entonces no podrá
hacer esto.
Si no puede tomar el camino sencillo, apúntese a qué libro de Excel cree que
puede estar vinculado (llamaremos a ese libro "el libro bueno"). Cree un vínculo
real entre ambos, abriendo los dos. Vaya al libro problemático y, en cualquier
celda de cualquier hoja, escriba =. Ahora haga clic en u n a celda del libro bueno y
pulse Intro para tener un vínculo externo real con dicho libro. Guarde ambos
libros, pero no los cierre todavía. Estando todavía en el libro con vínculos fantas-
mas, seleccione la opción Edición>Vínculos y utilice el botón Cambiar origen
para referenciar todos los vínculos con el nuevo libro con el que acabamos de
crear el vínculo. Guarde el libro de nuevo y elimine la celda en la que creó el
vínculo real. Para terminar, guarde el archivo.
1. Reducir la frustración en los libros y en las hojas de cálculo 61

A menudo esto elimina el problema de los vínculos fantasmas, dado que a h o -


ra Excel es consciente de que ha eliminado el vínculo externo con dicho libro. Si
esto no ha solucionado problema, pruebe con los siguientes pasos, pero asegúre-
se de guardar u n a copia primero.

El siguiente proceso implica eliminar datos permanentemente. Por


tanto, antes de comenzar, tiene que crear una copia de seguridad del
libro de Excel, ya que si no lo hace, puede crearle nuevos problemas.

Con el libro problemático abierto, elimine u n a hoja, guarde el libro, ciérrelo y


vuelva a abrirlo. Si al hacerlo no se le pregunta sobre actualizar los vínculos
perdidos, entonces es que la hoja que acaba de eliminar era la que tenía los vín-
culos fantasmas. Esto debería arreglar el problema, pero si no fuera así, repita el
primer paso para cada u n a de las hojas del libro. Necesitará añadir u n a nueva
hoja antes de eliminar la última, ya que cualquier libro debe tener al menos u n a
hoja. Supongamos que esta técnica ha funcionado. Entonces veamos qué hay
que hacer a continuación. Abra la copia del libro (la que todavía tiene los datos
dentro de ella) y cree otra copia. Deberá trabajar con la hoja problemática (u
hojas) y utilizar el proceso de eliminación para descubrir dónde está el problema.
Teniendo activada la hoja problemática, seleccione un grupo de celdas (de al-
rededor de 10x10) y entonces seleccione la opción Edición>Borrar>Todo. ¿Está
totalmente seguro de que ha guardado una copia? Si es así, guarde, cierre y vuel-
va a abrir la hoja. Si no se le pregunta acerca de actualizar los vínculos, entonces
es que ha encontrado el problema y el objetivo será volver a restablecer ese con-
j u n t o de celdas. Si vuelve a recibir el mensaje de actualizar los vínculos, continúe
eliminando celdas hasta que ya no se le pregunte. Luego, tendrá que restaurar
las celdas problemáticas.
Esperamos que estas técnicas le h a y a n solucionado algo la frustración de te-
ner vínculos fantasmas en sus libros de Excel. No es sencillo ni divertido, pero
puede ayudarle a solucionar el problema.

IQ221 Reducir un libro que está hinchado


^^wP>^H ¿Nunca ha observado que un libro está aumentando de tamaño a un ritmo
H k f l alarmante sin una razón aparente? Existen numerosas causas que pueden
provocarlo y algunas soluciones para ello.
¿Nunca ha comido tanto que no puede funcionar correctamente? Lo mismo
ocurre con las hojas de Excel. Un libro de Excel que engorda tanto es aquel en el
que se h a n hecho tantas cosas que ha llegado a un t a m a ñ o tal en el que ya no
puede funcionar correctamente.
Excel. Los mejores trucos

Comprobamos el t a m a ñ o de un libro típico que contenía gran cantidad de


datos y observamos que, sólo con datos, el t a m a ñ o del archivo era de 1,37 Mb.
Entonces añadimos u n a tabla dinámica que hacía referencia a cuatro columnas
enteras como origen de los datos y observamos que el t a m a ñ o del archivo se
incrementó espectacularmente hasta los 2,4 Mb. Añada algunos formatos y el
t a m a ñ o del libro se incrementará prácticamente al doble sólo haciendo algunas
acciones.
Una de las causas más comunes por las que un archivo engorda, particular-
mente en las versiones anteriores de Excel, es la aplicación de formatos a colum-
nas o filas completas en vez de a un rango de datos que se esté utilizando. Otro
error es referenciar columnas enteras como fuente de datos para gráficos y ta-
blas dinámicas, en vez de referenciar solamente las celdas que actualmente con-
tienen datos. Para solucionar estos problemas, tendremos que eliminar todos los
formatos superfluos y restringir el origen de datos solamente a aquellos rangos
de celdas útiles.

Antes de hacer estos arreglos, haga siempre una copia del libro por
seguridad.
/

Eliminar Formatos superfluos


El primer paso para eliminar formatos superfluos es averiguar cuál es la es-
quina inferior derecha en la que acabarán los datos. No se confíe en la opción
Edición>lr a>Especial>Última celda, ya que puede llevarle a la última celda que
contiene formato, no datos. Habiendo localizado manualmente la celda que sabe
que es la última que contiene datos reales, marque la fila que está inmediata-
mente debajo de ella. Mientras pulsa las teclas Control y Mayús, pulse la tecla
Flecha abajo del teclado para marcar todas las filas que se encuentran por deba-
jo. Luego seleccione la opción Edición>Borrar>Todos para eliminarlas.
Ahora utilice el mismo método para eliminar todas las columnas sobrantes.
Localice la celda que se encuentre más a la derecha y que a ú n contenga datos y
seleccione la columna inmediatamente posterior. Luego, mientras mantiene pul-
sadas las teclas Control y M a y ú s , pulse la tecla Flecha d e r e c h a del teclado para
seleccionar todas las columnas hasta el final, y finalmente, seleccione la opción
de menú Edición>Borrar>Todos.

Evite la tentación de eliminar por completo todas esas filas que


columnas en vez de borrarlas, ya que al hacerlo, se produce
normalmente errores de tipo #¡REF! en cualquiera de las celdas con
/ fórmulas que pudiesen estar haciendo referencia a ellas.
1. Reducir la frustración en los libros y en las hojas de cálculo 63

Guarde el libro y tome buena nota del cambio producido en su tamaño, a


través de la opción Archivo>Propiedades y mirando en la pestaña General. Si
tiene macros, ahora tendrá que dirigir los módulos en los que reside el código de
las macros. Este será un proceso rápido, directo y sencillo, que exporta todos los
módulos y formularios de usuario al disco duro, que luego los elimina y vuelve a
importarlos de nuevo. Para hacer esto, vaya al Editor de Visual Basic y desde el
explorador de proyectos, haga clic con el botón derecho en cada módulo y selec-
cione la opción Quitar módulol (o cualquier otro nombre que tuviese el módulo).
Cuando se le pregunte si desea exportar el módulo antes de quitarlo, diga Sí,
teniendo en cuenta la r u t a que seleccione.
Haga esto mismo para cada módulo, así como para todos los formularios de
usuario que pueda tener. No se olvide de los módulos privados del libro y hojas si
éstos contienen código. Una vez que haya hecho todo, guarde el libro. Entonces
seleccione la opción Archivo>Importar archivo e importe cada módulo y cada for-
mulario de usuario de nuevo al libro. Siguiendo este proceso se creará un archivo
de texto para cada módulo, lo cual eliminará cualquier residuo que pudiesen
contener. Existen en Internet algunas utilidades gratis que pueden automatizar
esta tarea en cierto grado, pero hemos oído casos en los que estas herramientas
han desorganizado el código o incluso han aumentado más el t a m a ñ o de los
archivos. En caso de que utilice u n a de estas herramientas, siempre haga u n a
copia de seguridad primero, ya que los desarrolladores no se h a r á n responsables
de cualquier pérdida de datos.

Puesta a punto de los orígenes de datos


Si después de llevar a cabo los pasos previos todavía cree que el t a m a ñ o del
archivo es m u y grande, otra causa posible es que hay referencias a celdas no
utilizadas dentro de tablas o gráficos dinámicos. Esto suele ocurrir normalmente
con las tablas dinámicas, ya que muchas personas hacen referencia a las 65.536
filas para evitar tener que actualizar manualmente los rangos cada vez que se
añaden nuevos datos.

Limpiar libros corruptos


Si todavía cree que el t a m a ñ o del libro es demasiado grande, es posible que el
libro o sus hojas estén corruptos. Por desgracia, encontrar el p u n t o de corrup-
ción requiere de un proceso m a n u a l de eliminación.

De nuevo le recomendamos encarecidamente que haga una copia de


seguridad antes de proceder.
64 Excel. Los mejores trucos

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.

í¿ Al cortar en vez de copiar, Excel traspasa los datos a la nueva hoja


iX manteniendo las referencias intactas.

TRUCO Extraer datos de un libro corrupto


La corrupción de libros de Excel puede suponer la pérdida de datos vitales,
lo cual puede resultar un coste más que monetario. Este truco examina
algunos métodos que pueden ayudarle a recuperar los datos.

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.

Si no puede abrir un libro


Si no puede abrir el libro en cuestión, antes de hacer cualquier otra cosa, ase-
gúrese de hacer u n a copia de seguridad del mismo, ya que de lo contrario, podría
perderlo. Teniendo u n a copia siempre puede buscar ayuda profesional.
Ahora, intente abrir el libro en u n a versión posterior de Excel y pruebe a guar-
dar. Obviamente, esto no será posible si ya está utilizando la última versión de
Excel. Si esto no funciona, pruebe a abrir el libro y guardarlo en formato HTML o
HTM. Luego cierre el archivo y vuelva a abrirlo, esta vez volviendo a guardarlo
en el formato original, es decir, en formato .xls.
1. Reducir la frustración en los libros y en las hojas de cálculo 65

Cuando se guarda un libro en formato HTML, las siguientes funciones


N^ se perderán:
Vistas personalizadas.
Formatos de número no utilizados.
Estilos no utilizados.
Configuración de consolidación de datos.
Escenarios.
Fórmulas el lenguaje natural (serán convertidas a referencias
estándar de rango).
Categorías personalizadas de funciones.
Elementos con fuente tachada, superíndice o subíndice..
Historial de cambios.
Configuración de página personalizada para los gráficos que se
hayan incrustado en una hoja.
Configuraciones de lista para los objetos del cuadro de lista y cua-
dro de lista desplegable de la barra de herramientas de Formula-
rios.
Formato condicional almacenado en una hoja de macro XLM.
También, los libros compartidos dejarán de estarlo. La configuración
Eje de valores (Y) cruza el número de categoría de la pestaña Escala
del cuadro de diálogo Formato de ejes no se guardarán si la casilla de
verificación Eje de valores (Y) cruza la en máxima categoría está
activada. La configuración de variar los colores por cada punto del
cuadro de diálogo Formato de las series de datos no será guardada si
el tráfico contiene más de una serie de datos.

Finalmente, intente abrir el archivo y guardarlo en formato SYLK (.slk, que


significa vínculo simbólico). Observe que cuando guarda un libro en este forma-
to, sólo se guarda la hoja activa. Por tanto, deberá hacer lo mismo para cada u n a
de las hojas. Vuelva a abrir el archivo y guárdelo nuevamente en el formato
deseado, es decir, en formato .xls.

Si no puede abrir el archivo


Si el libro está corrupto hasta el punto en el que no puede ni siquiera abrirlo,
abra la hoja de cálculo en Microsoft Word o a través del visor de hojas de cálculo,
que se puede descargar desde el sitio Web de Microsoft, luego copie los datos
66 Excel. Los mejores trucos

desde el archivo abierto. De todas formas, muchas de las fórmulas, formatos,


etc. se perderán.
A continuación, abra el nuevo libro y cree un vínculo externo con el libro
corrupto. Por ejemplo, ='C:\Documents and Settings\Alex\Mis Documentos\[Hoja
.xls]Hojal'!Al. Copie este vínculo hacia abajo y hacia la derecha tantas filas y
columnas como sea necesario. Haga lo mismo para cada u n a de las hojas que
contiene el libro. Si no puede recordar los nombres de las hojas, utilice cualquier
nombre utilizando la r u t a de archivo correcta y Excel le mostrará los nombres de
las hojas cuando pulse la tecla Intro.
Una última cosa que puede hacer es visitar la página Web de OpenOffice.org y
descargar la versión gratuita de OpenOffice.org. Aunque hay nombres diferentes
para las herramientas y los comandos, OpenOffice.org es m u y similar a Excel.
Esta aplicación está basada en la misma estructura básica de hoja de cálculo que
Excel, lo que resulta m u y sencillo para los usuarios acostumbrados a la aplica-
ción de Microsoft. De hecho, alrededor del 96% de las fórmulas que se utilizan en
Excel se pueden crear y utilizar en las hojas de cálculo de OpenOffice.org.
Para descargar u n a versión g r a t u i t a de OpenOffice.org, v a y a a h t t p : / /
download.openoffice.org/index.html y descargúela desde el sitio FTP que prefie-
ra. Luego instale el programa. Hay que decir que también hay u n a versión dis-
ponible de OpenOffice.org para Macintosh.
En muchos casos, los datos de Excel se pueden recuperar. Sin embargo, el có-
digo VBA no podrá recuperarse debido a incompatibilidades entre Excel y
OpenOffice.org.
Si ninguno de estos métodos funciona, probablemente tendrá que pagar dine-
ro para intentar recuperar su libro de Excel utilizando algún software especial.
Puede encontrar software a la venta (para Windows) en el sitio Web de los a u t o -
res de este libro, en la dirección http://www.ozgrid.com/Services/corrupt-file-
recovery-index.htm.
Después de haber comprado e instalado ExcelFix, ejecútelo. Seleccione File,
luego elija el archivo corrupto y haga clic en Diagnose para recuperarlo. Enton-
ces debería ver el archivo recuperado en el visor de libros. Haga clic en Save
Workbook para guardar el libro en un nuevo archivo que pueda ser abierto por
Excel.
Existe también u n a versión de demostración que no le permite guardar el
archivo, pero recuerde que todas las versiones le permiten recuperar tantos ar-
chivos como desee.
CAPÍTULO 2

Trucos
sobre las características
incorporadas en Excel
Trucos 16 a 38

Aunque Excel incorpora u n a gran variedad de características estándar para


administrar y analizar datos, los límites de dichas características son, a menudo,
frustrantes. Los trucos de este capítulo le proporcionarán numerosos métodos
para escaparse de esos límites y hacer de Excel u n a herramienta mucho más
poderosa.

ü Validar datos en base a una lista situada en otra


hoja
La validación de datos permite, de forma fácil, especificar reglas que deben
seguir los datos. Por desgracia, Excel obliga a que las listas utilizadas en la
validación de datos deben aparecer en la misma hoja en la que se
encuentran éstos. Pero por fortuna, existen formas para saltarse esta
limitación.

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.

Método 1. Rangos con nombre


Quizá el método más rápido y sencillo para superar la barrera en cuanto a la
validación de datos en Excel es dar nombre al rango donde está situada la lista.
Para crear un rango con nombre, seleccione las celdas que contienen la lista e
70 Excel. Los mejores trucos

introduzca un nombre en el cuadro de nombres que está situado en la parte


superior izquierda, justo a la izquierda de la barra de fórmulas. Para los propósi-
tos de este ejemplo, supondremos que a dicho rango le llamaremos MiRango.
Seleccione la celda en la que desea que aparezca u n a lista desplegable y enton-
ces seleccione la opción Datos>Validación. Seleccione la opción Lista en el cuadro
de lista desplegable Permitir: y en el cuadro de texto Origen escriba =MiRango.
Luego haga clic en el botón A c e p t a r .
Dado que hemos utilizado un nombre de rango, la lista (aunque resida en
otra hoja) puede ser utilizada como lista de validación.

Método 2. La función INDIRECTO


La función INDIRECTO permite hacer referencia a u n a celda que contiene un
texto que representa la dirección de otra celda. Entonces puede utilizar esa celda
como u n a celda local de referencia, incluso aunque tome sus datos a partir de
otra hoja. Puede 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$8.
Haga clic en cualquier hoja de u n a hoja distinta en donde desee que aparezca esta
lista de v a l i d a c i ó n (lista de b ú s q u e d a ) . Entonces seleccione la o p c i ó n
Datos>Validación y elija la opción Lista del cuadro de lista desplegable y en el
cuadro de texto Origen escriba el siguiente código:
= INDIRECTO("Hoj al!$A$1:$A$8")

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")

Aquí la diferencia es que debe utilizar un apostrofe simple inmediatamente


después de las primeras dobles comillas y otro inmediatamente antes del signo de
exclamación.

Siempre es una buena idea utilizar el apostrofe simple, independien-


H. teniente de que el nombre de la hoja contenga espacios o no. En
iA cualquier caso siempre podrá hacer referencia a una hoja que no tenga
espacios en su nombre y permite hacer cambios fácilmente en un
futuro.
2. Trucos sobre las características incorporadas en Excel 71

Ventajas y desventajas de ambos métodos


Los rangos con nombre y la función INDIRECTO tienen, cada u n o de ellos,
u n a ventaja y u n a desventaja.
La ventaja de utilizar nombres de rangos es que los cambios que realice al
nombre de la hoja no afectarán a la lista de validación. Esto es precisamente la
desventaja de la función INDIRECTO, en tanto que cualquier cambio que realice
al nombre de la hoja no se actualizará automáticamente dentro de la función,
por lo que tendrá que cambiarla manualmente para que refleje el nuevo nombre.
La ventaja de utilizar la función INDIRECTO es que si la primera celda/fila o
la última celda/fila es eliminada del rango con nombre, éste devolverá un error
de tipo #¡REF!. Por contra esto es u n a desventaja de utilizar nombres de rangos:
si elimina celdas o filas del rango con nombre, los cambios no afectarán a la lista
de validación.

D Controlar el formato condicional con casillas


de verificación
Aunque el formato condicional es una de las características más potentes
de Excel, resulta bastante incómodo activarla y desactivarla a través de los
menús y cuadros de diálogo de la interfaz de Excel. Si pudiéramos añadir
casillas de verificación en la hoja de cálculo que activasen y desactivasen en
el formato condicional, podríamos leer los datos de forma mucho más
sencillo de cualquier forma, el momento que queramos.
El formato condicional, una característica disponible a partir de Excel 97, aplica
formatos a las celdas seleccionadas que coincidan con un cierto criterio que se
basa en los valores o fórmulas que se especifiquen. Aunque el formato condicio-
nal se utiliza normalmente basándose en valores de celdas, si lo basamos en fór-
mulas conseguiremos u n a flexibilidad mayor para extender el formato condicional
a cualquier parte de la hoja de cálculo.

Configurar casillas de verificación para formato


condicional
Las casillas de verificación disponibles en la barra de herramientas Formula-
rios devuelven un valor VERDADERO o FALSO (activada/desactivada) a la celda a
la que están vinculadas. Combinando u n a casilla de verificación de dicha barra
de herramientas con el formato condicional utilizando la opción de fórmulas
(véase figura 2.1), puede activar o desactivar el formato condicional a través de
la casilla de verificación.
72 Excel. Los mejores trucos

MWWIWfflffl jxj
Condición i

Fórmula _ j Ü
Valor de la celda
| - H q u e desea usar
Sin formato establecido Formato,.,
^BSTv-erdadera:

Agre gar >> Eliminar,,, | Aceptar I Cancelar

Figura 2.1. Cuadro de diálogo de formato condicional con la opción de fórmulas.

Cuando se utiliza en combinación con una fórmula (como por ejemplo


S. con la opción de fórmulas), el formato condicional da formato
w^k automáticamente a una celda siempre que la fórmulas devuelva
VERDADERO. Por ello, cualquier fórmula que utilice para este truco
debe devolver VERDADERO o FALSO.

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.

Activar o desactivar el resaltado de los números


La posibilidad de resaltar automáticamente los números que cumplan cierto
criterio puede resultar m u y útil para encontrar los datos que necesite en u n a
2. Trucos sobre las características incorporadas en Excel 73

hoja de cálculo. Para hacer esto, comenzaremos seleccionando la celda El (o cual-


quier otra celda que prefiera) y llámela CheckBoxLink, utilizando el cuadro de
nombre situado en la parte superior, a la izquierda de la barra de fórmulas (véase
figura 2.3).

II •Il'lll xjl
Colores y líneas j Tamaño Proteger | Propiedades ¡ Web Control

Valor
(• Sin activar
{
~~ Activado
£"" Mixto

Vincular con la celda: jCl


M

i"" Sombreado 3D

Aceptar J Cancelar

Figura 2.2. Cuadro de diálogo de formato del control.

1 •* (ilíffililffflB^^ •
lU archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? - - fl x

J , d i j . U í ,JL /, - J j j - / a ¿ z - / l ;U U ~J> 100% - «*• i


Anal T 10 - H K S I 1 I ^j -3 4 000 € -oó / i =F s F •" -* ' «1* T
-^
CheckBoxLink • &
| A B C D E I F G H 1 Tj
H I i
2
13
4
5
6
7
8
9
10
11
12
13 —1
14
15
16
^|
|n A • H \ H o j a l / Hoja2 / Hoja3 / M i •m
Listo NUM

Figura 2.3. Celda El con el nombre CheckBoxLink.


74 Excel. Los mejores trucos

Añada u n a casilla de verificación desde la barra de herramientas Formularios


a u n a hoja en blanco, llame a esta hoja Casillasdeverificación y coloqúese en la
celda A l . Vincule esta casilla de verificación a la celda CheckBoxLink haciendo
clic con el botón derecho en la casilla y seleccionando la opción Formato de con-
trol y luego yendo a la pestaña Control. Escriba CheckBoxLink en el cuadro de
texto correspondiente y haga clic en Aceptar. Haga clic con el botón derecho
nuevamente sobre la casilla de verificación, seleccione Modificar texto y entonces
introduzca el texto "Mostrarme". En la columna A de otra hoja, introduzca los
números del 25 al 2500 en incrementos de 25. Déle el nombre "Números" a este
rango y luego oculte la hoja mediante la opción Formato>Hoja>Ocultar.

Para introducir rápidamente estos números, introduzca el número 25


en la celda Al y 50 en la celda A2. Haga clic en el marcador de
s
-"\ propagación (el pequeño cuadro negro que aparece en la esquina
inferior derecha de la celda A2) y sin soltar el botón del ratón, arrástrelo
hasta la fila 100.

Seleccione la celda Bl de la hoja Casillasdeverificación y déle el nombre


PrimerNum. Seleccione la celda DI y déle el nombre SegundoNum. En la celda
Cl escriba la palabra Y. Ahora, seleccione la celda Bl (PrimerNum) y mantenien-
do pulsada la tecla Control seleccione la celda DI (SegundoNum). Entonces vaya
a Datos>Validación>Configuración y en el cuadro de lista desplegable Permitir se-
leccione la opción Lista, y en el cuadro de texto Origen escriba =Números. Ase-
gúrese de que la casilla de verificación Celda con lista desplegable esté activada y
entonces haga clic en Aceptar. Esto creará una lista desplegable de números del
25 al 2500 en ambas celdas.
En la celda Al escriba el encabezado "Cantidad". Inmediatamente debajo, re-
llene el rango A2:A20 con cualesquiera números entre 25 y 2500. Seleccione las
celdas A2:A20 (asegurando se debe comenzar desde la celda A2 para que sea la
selección activa) y seleccione Formato>Formato condicional. En el cuadro de diá-
logo que aparece, mostrado en la figura 2.4, seleccione la opción Fórmula y en el
cuadro de texto de la derecha escriba la siguiente fórmula:

=Y($A2>=PrimerNum;$A2<=SegundoNum;CheckBoxLink)

Haga clic en el botón F o r m a t o . . . y configure el formato que desee o combina-


ción de formatos. Luego haga clic en A c e p t a r y de nuevo en A c e p t a r para cerrar
el siguiente cuadro de diálogo. Cambie también el color de la fuente de la celda El
a blanco para que no aparezcan los valores VERDADERO o FALSO. Desde la celda
Bl, seleccione cualquier n ú m e r o y luego cualquier otro que sea mayor que el
primero desde la celda D I .
2. Trucos sobre las características incorporadas en Excel 75

I J 1 W B Illlill MI 1 1 1 1 ' ! Mi
MBEZm^: x|;
Condición I

j Fórmula • ! | =Y(|A2 >=PrimerNum; $A2 <=SegundoNum; CheckBoxLink


) 3
Vista previa del formato que desea usar
cuando la condición sea verdadera:
AaBbCcYyZz 1 tEff^!^°:.:.:::.J

Agregar» J Eliminar... | Aceptar | Cancelar j >

Figura 2.4. Cuadro de diálogo de formato condicional.

Active la casilla de verificación, con lo que los formatos condicionales que


acabamos de configurar se aplicarán automáticamente a los números que estén
dentro del rango que acabamos de especificar. Desactive la casilla de verificación
y el formato volverá a ser el predeterminado. Como puede ver, utilizando u n a
casilla de verificación en combinación con el formato condicional, puede hacer
cosas que nadie imaginaría, todo ello sin utilizar código VBA.

Identificar fórmulas con el formato condicional


Excel no dispone de una función incorporada para identificar fórmulas. Una
vez que una fórmula es introducida en una celda, sólo puede descubrir sí
una celda contiene un valor estático o un valor calculado a partir de una
fórmula haciendo clic sobre ella y mirando la barra de fórmulas. Este truco
soluciona esta carencia.

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

Ahora cierre la ventana (pulse Alt/Comando-Q). A partir de entonces, la fun-


ción estará disponible para cualquier celda de cualquier hoja de este libro, intro-
duciendo, por ejemplo, la fórmula = I s F o r m u l a ($A$1) . También puede acceder
a la función a través de lnsertar>Función, seleccionando la opción Definidas por el
usuario en la lista de categorías y luego seleccionando IsFormula.
La fórmula devuelve VERDADERO si la celda a la que se hace referencia con-
tiene u n a fórmula, y FALSO en caso contrario. Puede utilizar este resultado
booleano en combinación con el formato condicional de forma que todas las fór-
mulas se resalten automáticamente con el formato que elija. Una de las mejores
76 Excel. Los mejores trucos

cosas a la hora de utilizar este método es que el sistema de identificación de fór-


mulas para la hoja de cálculo será dinámico. Esto significa que si añade o quita
u n a fórmula, el formato cambiará de acuerdo con ello. A continuación explica-
remos cómo hacer esto. Seleccione un rango de celdas de la hoja de cálculo (por
ejemplo, A1:J500) e incluya algunas celdas extra en caso de que vaya a añadir
más fórmulas posteriormente.

Evite la tentación de seleccionar toda la hoja, ya que esto añadirá una


sobrecarga de trabajo innecesaria.

Teniendo seleccionadas estas celdas, y siendo la celda Al la activa, seleccione


Formato>Formato condicional. Seleccione la opción Formato en el cuadro de lista
desplegable e introduzca =IsFormula(Al) en el cuadro de texto situado a la dere-
cha. Haga clic el botón F o r m a t o . . . y elija cualquier formato que desee para iden-
tificar las celdas con fórmulas. Luego haga clic en A c e p t a r dos veces para cerrar
ambos cuadros de diálogo.

A veces, cuando se introducen fórmulas en el formato condicional,


Excel intentará colocar comillas alrededor de las fórmulas después de
N hacer clic en Aceptar. Esto ocurre porque Excel reconoce que ha
introducido un texto, no una fórmula. Si ocurre esto, vuelva al cuadro
de diálogo de formato condicional, elimine las comillas y pulse Aceptar.

Llegados a este punto, la fórmula especificada debería aplicarse a todas las


celdas de la hoja que contengan u n a fórmula. Si elimina o sobrescribe u n a celda
que contenga u n a fórmula, el formato condicional desaparecerá. Igualmente, si
introduce u n a nueva fórmula en cualquiera de las celdas dentro del rango, que-
dará resaltada. Este sencillo truco que utiliza el formato condicional hace mucho
más sencillo manejar hojas de cálculo cuando es necesario mucho tiempo para
poder mantenerla o modificarla.

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)))

Cuando introduzca fórmulas matriciales, no pulse la tecla Intro, en


vez de ello pulse Control-Mayús-Intro. De esta forma, Excel colocará
llaves alrededor de la fórmula de esta forma:
/
{=SUMA(SI($A$2:$A$100>10;SI($A$2:$A$100<2 0/$A$2:$A$100)))}

Si introduce las llaves manualmente, no funcionará. Debe permitir


que Excel lo haga automáticamente. También, tenga en cuenta que
utilizar fórmulas matriciales puede ralentizar los cálculos de Excel si
hay muchas referencias a rangos de gran tamaño.

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.

Para copiar rápidamente una fórmula hacia abajo, hasta la última


Ci fila utilizada de la columna adyacente, introduzca la fórmula en la
primera celda (B2), vuelva a seleccionar esa celda y haga doble clic en
el pequeño recuadro negro de propagación situado en la esquina
inferior derecha de la celda. También puede hacer esto seleccionando
la opción Edición>Rellenar>Hacia abajo.

Ahora ya puede seleccionar cualquier celda en la que desea que aparezca el


resultado de la suma, utilizando la función estándar SUMA (si lo desea, puede
ocultar la columna B, de forma que no vea u n a columna extra llena de los valo-
res devueltos por la fórmula).
Ciertamente los métodos anteriores hacen bien su trabajo, pero Excel propor-
ciona otra función que le permite especificar dos o más criterios. Esta función es
parte de las funciones de base de datos de Excel, y se llama BDSUMA. Para probar-
la, utilice el mismo conjunto de números situados en el rango A2:A100. Selec-
cione las celdas C1:D2 y déle el nombre "CriterioSuma" a este rango. Luego
seleccione la celda Cl e introduzca = $ A $ 1 , u n a referencia a la primera celda de
la hoja. Copie esto a la celda D I , con lo que tendría un duplicado del encabezado
de la columna A. Estas copias las utilizaremos como encabezados para el criterio
de BDSUMA (C1:D2), que llamamos "CriterioSuma".
En la celda C2, introduzca> 10. En la celda D2, introduzca < 2 0 . En la celda de
la que desea mostrar el resultado, introduzca el siguiente código:
=BDSUMA($A$1:$A$10 0;$A$1;CriterioSuma)

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.

Resaltar Filas o columnas impares


Seguramente habrá visto hojas de cálculo de Excel que utilizan colores
alternos para las filas. Por ejemplo, las filas impares podrían ser blancas y
las pares grises. El formato condicional hace que esto sea muy sencillo.
Alternar colores o sombreados da un aspecto profesional y puede hacer más
fácil la lectura de los datos. Puede aplicar este formato manualmente, pero como
2. Trucos sobre las características incorporadas en Excel 79

ya se imaginará, resulta u n a tarea m u y pesada si tiene que actualizar dicho


formato cada vez que añade o quita datos de la tabla, además de u n a infinita
paciencia. Por fortuna, el formato condicional puede reducir la paciencia necesa-
ria y mejorar en gran medida su imagen profesional.
Supondremos que los datos abarcan el rango Al :H 100. Seleccione este rango
de celdas, comenzando por la celda A l , de forma que nos aseguramos que sea la
celda activa. Entonces vaya a Formato>Formato condicional. Seleccione la opción
Fórmula del primer cuadro de lista desplegable y en el cuadro de texto situado a su
derecha introduzca la siguiente fórmula, tal y como se muestra en la figura 2.5:
=RESIDUO(FILA();2)

mmmmmmwm^^mKm &$$•>•?&>'•' ' 2<1|


Condición i

| Fórmula jr] |=RESIDUO(FILA()j2)| 1 Á •


Vista previa del formato que desea usar ;
cuando la condición sea verdadera; AaBbCcYyZz Formato... j \

Agregar >> Eliminar.., 1 Aceptar 1 Cancelar ]

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

^ Observe que no se hace referencia absoluta a las filas (utilizamos el


^« signo del dólar), pero sí a las columnas.
w
\
Haga clic en el botón Formato... y seleccione el formato que desee, haciendo
clic en el botón Aceptar dos veces para cerrar ambos cuadros de diálogo. Con
esto, cualquier fila que esté en el rango A1:H100 y que no contengan datos, no
cambiará su formato. Si elimina datos de u n a fila en particular de la tabla, t a m -
poco tendrá el formato condicional. Si añade nuevos datos en cualquier lugar del
rango Al :H100, entonces se le aplicará el formato condicional automáticamente.
Esto funciona así porque cuando introdujimos la fórmula para el formato
condicional, la fórmula en sí debe devolver un valor VERDADERO o FALSO. En el
lenguaje de las fórmulas de Excel, el valor 0 corresponde con el valor FALSO,
mientras que cualquier número m a y o r que 0 corresponde con el valor VERDA-
DERO. Cuando utilizamos la fórmula =RESIDU0 (FILA () ; 2 ) , devuelve un valor
0 (FALSO) o bien un número m a y o r que 0 (VERDADERO).
La función =FILA () es u n a función volátil que siempre devuelve el n ú m e r o
de fila que corresponde con la celda en la que reside. Utilizamos la función RE-
SIDUO para devolver el resto de dividir un número por otro. En nuestro caso,
estamos dividiendo el número de fila por 2, por lo que todas las filas pares devol-
verán un valor de 0, mientras que las impares devolverán un valor mayor que 0.
Cuando incluye las funciones FILA () y CONTARA dentro de la función Y, sig-
nifica que deben devolver VERDADERO (o cualquier número mayor que 0) las
funciones RESIDUO y CONTARA para que la función Y devuelva VERDADERO. La
función CONTARA sirve para contar todas aquellas celdas que no estén vacías.

Crear efectos en 3D en tablas o celdas


Cuando ve un efecto 3D en un programa como pueda ser Excel, lo que está
viendo en realidad es una ilusión creada por un formato en particular. Es
sencillo crear esta ilusión aplicando un cierto formato a una celda o rango
de celdas.

Para comenzar con un ejemplo sencillo, daremos un efecto 3D a u n a celda


para que aparezca en relieve, como si fuera un botón. En u n a hoja en blanco,
seleccione la celda D5 (seleccionamos esta celda para que no esté en u n o de los
bordes y no apreciemos bien el efecto). Vaya a Formato>Celdas>Bordes. En la
lista de estilos, elija la segunda línea más gruesa. Asegúrese de tener seleccionado
el color negro (o bien el automático, en caso de no haber cambiado el valor prede-
terminado). Haga clic entonces en el borde derecho y luego en el borde inferior
que aparece en la muestra de la parte de izquierda. Seleccione ahora el color
blanco en el cuadro de lista desplegable de colores. Todavía debería estar seleccio-
2. Trucos sobre las características incorporadas en Excel 82

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.

Utilizar un efecto 3D en una tabla de datos


A continuación, vamos a experimentar con esta herramienta para ver los efec-
tos que podemos aplicar a las tablas o a las hojas de cálculo.
Seleccione las celdas D5 y E5 y haga clic en el icono Copiar formato (con
forma de brocha) situado en la barra de herramientas estándar. Haga clic en la
celda F5 y sin soltar el botón del ratón, arrástrelo hasta la celda J5. Ahora selec-
cione las celdas D5: J5 y de nuevo haga clic en el icono Copiar formato de la barra
de herramientas estándar. Haga clic en la celda D6 y sin soltar el botón del ratón,
arrástrelo hasta la celda J15. Esto debería provocar un efecto como el que apare-
ce en la figura 2.6.
Hemos utilizado un borde bastante grueso para asegurarnos de que el efecto
puede verse claramente. Sin embargo, quizá desee matizarlo utilizando un estilo
de línea algo más fino. También podría utilizar cualquiera de los otros estilos de
línea para producir un efecto a ú n mayor. La mejor forma de encontrar u n a bue-
na combinación es utilizar el sistema de prueba y error en u n a hoja en blanco
hasta dar con el efecto deseado. La única limitación que tiene que es su imagina-
ción y, quizá, su gusto.

Tenga siempre en mente que los efectos 3D puede mejorar la lectura


de una hoja de cálculo y proporcionar un aspecto más profesional,
pero cuando se utiliza en exceso, puede tener el efecto contrario.
Recuerde, utilice todo como delación.
Excel. Los mejores trucos

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

Figura 2.6. Efecto 3D aplicado a un rango de celdas.

Si desea dar un paso más allá a la hora de aplicar efectos 3D de forma a u t o -


mática y dinámica, puede combinar este truco con el uso del formato condicio-
nal, de forma que la aplicación de estilos sea automática.

TRUCO Activar y desactivar el formato condicional y la


validación de datos con una casilla de verificación
La validación de datos puede resultar útil para evitar que un usuario
introduzca accidentalmente datos incorrectos. Sin embargo, algunas veces
deseará hacer más sencilla la introducción de datos que de otra forma sería
imposible, bien porque fuese marcada por el formato condicional o bien
completamente bloqueada por una validación de datos.

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

Agre^gar » j Eliminar,., j Aceptar Cancelar

Figura 2.7. Cuadro de diálogo de formato condicional con la fórmula que da formato
resaltando los valores duplicados.

Haga clic en el botón Formato... y en la pestaña Tramas seleccione el color


que desea aplicar a los datos duplicados. Haga clic en el botón Aceptar de ambos
cuadros de diálogo para salir.
Dado que la casilla de verificación que acabamos de añadir está activada, el
vínculo de celda en Kl (CheckBoxLink) leerá el valor VERDADERO, por lo que
todos los valores duplicados dentro del rango $A$1:$A$100 aparecerán resalta-
dos. En el momento en el que desactive la casilla de verificación, el vínculo de su
celda (CheckBoxLink) devolverá el valor FALSO, por lo que los valores duplicados
no se resaltarán.
Esta casilla de verificación le proporciona un interruptor con el cual poder
activar o desactivar el formato condicional de u n a hoja, sin tener que utilizar el
cuadro de diálogo Formato condicional. Puede utilizar el mismo principio con la
validación de datos, utilizando la opción de fórmula.
Todo esto funciona porque hemos utilizado la función Y. Esta función devol-
verá el valor VERDADERO si ocurren estas dos siguientes cosas:
CONTAR. SI ($ A$ 1:$H$100,A1)>1 debe devolver VERDADERO y el vínculo
de celda para la casilla de verificación (CheckBoxLink) también debe devolver VER-
DADERO. En otras palabras, para que la función Y devuelva VERDADERO, a m -
bas condiciones también deben ser verdaderas.
84 Excel. Los mejores trucos

TRUCO Admitir múltiples listas en un cuadro de lista


desplegable
Cuando trabajamos con múltiples listas, podemos forzar que cambie una
lista utilizando una combinación de botones de opción y un cuadro de lista
desplegable.

Externo ofrece numerosas alternativas a los usuarios para seleccionar ele-


mentos de una lista, como pueda ser nombres, productos, días de la semana o sea
lo que sea que componga la lista. Sin embargo, para acceder a más de u n a lista de
elementos simultáneamente, generalmente es necesario utilizar tres controles
separados, como por ejemplo, tres cuadros de lista desplegable de la barra de
herramientas Formularios.
En vez de esto, podemos utilizar un cuadro de lista desplegable en combina-
ción con botones de opción (también disponibles en la barra de herramientas
Formularios) para hacer que u n a lista cambie automáticamente de acuerdo al
botón de opción que se haya elegido. Para ver cómo funciona esto, introduzca los
números del 1 al 7 en el rango de celdas Al :A7 de u n a nueva hoja. En las celdas
Bl :B7 introduzca los días de la semana empezando por el lunes y terminando el
domingo. En las celdas C1:C7 introduzca los meses desde enero hasta julio.

Las características de propagación automática de Excel pueden hacer


S^ este trabajo de forma mucho más rápida y sencilla. Simplemente
w^ introduzca un 1 en la celda Al, selecciónela y mientras mantiene
pulsada la tecla Control haga clic en el cuadro de propagación situado
la esquina inferior derecha de la celda. Manteniendo pulsado el botón
del ratón y la tecla Control, arrástrelo hasta la celda A7. Es el rellenará
automáticamente las celdas con los números del 1 al 7. Igualmente,
puede introducir "lunes" en la celda Bl y haga doble clic en el cuadro
de propagación de dicha celda. Finalmente, introduzca "enero" en la
celda Cl y haga lo mismo que con los días de la semana. Verá como
Excel rellenará los días los meses de forma automática.

Seleccione la opción Ver>Barras de herramientas>Formularios y haga doble clic


en el icono Botón de opción de dicha barra de herramientas. Luego, haga clic en
tres lugares cualesquiera de la hoja de cálculo para colocar tres botones de op-
ción.
Igualmente, haga clic en el icono de Cuadro combinado que haga clic en cual-
quier lugar de la hoja de cálculo para insertar un cuadro de lista desplegable en
ella. Utilice los marcadores del cuadro de lista desplegable para cambiar su t a m a -
ño y su posición, así como el de los botones de opción para que estén situados
justo debajo de él.
2. Trucos sobre las características incorporadas en Excel 85

Haga clic con el botón derecho en el primer botón de opción, seleccione la


opción Modificar texto y entonces reemplace el texto predeterminado por el texto
"Números". Haga lo mismo con el segundo botón de opción, cambiando el texto
por "Días de la semana" y con el tercero, cambiando el texto por "Meses". Puede
ver el resultado de esto en la figura 2.8.

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.

Ahora, mientras mantiene pulsada la tecla Control, haga clic en cada u n o de


los botones de opción de forma que todos queden seleccionados y entonces haga
clic con el botón derecho del ratón sobre u n o de ellos y seleccione la opción For-
mato de control. En la pestaña Control especifique $F$1 como celda vinculada
(asegúrese de utilizar esta referencia absoluta con los símbolos del dólar).
En la celda E6 introduzca la siguiente fórmula:
=DIRECCION(l;$F$l) & " : " & DIRECCIÓN(7;$F$1)

Seleccione la opción lnsertar>Nombre>Definir. En el cuadro de texto de la parte


superior escriba "MiRango" y en el cuadro de texto Se refiere a escríbalo siguiente:

=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

automáticamente el botón de opción elegido. Cuando configure todo esto para


su propia hoja de cálculo, debería utilizar algunas celdas que estuviesen fuera de
la pantalla como origen de las listas y vínculos del cuadro de lista desplegable.
Incluso deseará ocultar estas celdas a los usuarios de forma que los vínculos
estén donde deberían. También necesitará modificar las dos funciones DIREC-
CIÓN para que reflejen el rango de celdas que esté utilizando. En las funciones
que hemos utilizado en este ejemplo, el 1 representa la primera fila de la lista,
mientras que el 7 representa el n ú m e r o de la última fila.

Crear listas de validación que cambien en base


a la selección realizada en otra lista
Las necesidades en la validación pueden variar dependiendo del contexto
en el que sean utilizadas. De todas formas, puede crear una hoja de cálculo
en la que una lista de validación cambie dependiendo de lo que se
seleccione en otra.
Para hacer que funcione este truco, lo primero que tiene que hacer es rellenar
la hoja de cálculo con algunos datos. En una hoja en blanco llamada "Listas" y
con la celda Al seleccionada, escriba el siguiente encabezado: "Objetos". En la
celda Bl, escriba el encabezado "Lista correspondiente". En las celdas A2:A5, repi-
ta la palabra "Cubo".
En las celdas A6:A9 repita la palabra "Sofá". En las celdas A l 0 : A l 3 repita la
palabra "Ducha". En las celdas A14:17 repita la palabra "Coche". Luego, comen-
zando por la celda B2 y terminando por la celda B17, introduzca las siguientes
palabras (que se corresponden con la lista de objetos): "Plomo", "Acero", "Abri-
dor", "Tapa", "Cama", "Asiento", "Salón", "Colchón", "Lluvia", "Caliente", "Frío", "Tem-
plado", "Viaje", "Vacaciones", "Sombrero" y "Bota".
En la celda Cl introduzca el encabezado "Lista de validación". A continuación,
para crear u n a lista de entradas únicas, introduzca la palabra "Cubo" en la celda
C2, la palabra "Sofá" en la celda C3, la palabra "Ducha" en la celda C4 y la palabra
"Coche" en la celda C5.

También puede utilizar el filtro avanzado para crear una lista de


H^ elementos únicos. Seleccione las celdas Al :A17, seleccione Datos>Filtro>
Filtro avanzado y entonces active la casilla de verificación Sólo registros
únicos y seleccione el botón de opción Filtrar la listas y moverla a otro
lugar. Haga clic en Aceptar y entonces seleccione las celdas A2:A14
(que incluirán las celdas ocultas). Cópielas y pegúelas a la celda Al8.
Seleccione entonces la opción Datos>Filtro>Mostrar todos, seleccione
la lista de objetos únicos y cópielas y pegúelas en la celda A2. Con esto
ya tendrá la lista.
2. Trucos sobre las características incorporadas en Excel 87

Seleccione la opción lnsertar>Nombre>Definir y en el cuadro de texto Nombres


en el libro escriba la palabra "Objetos".
En el cuadro de texto Se refiere a escríbalo siguiente fórmula y luego haga
clic en Agregar:
=DESREF($A$2;0;0;CONTARA($A$1:$A$2 0) ;1)

Ahora escriba en el cuadro de texto Nombres en el libro el nombre "ListaVal" y


en el cuadro de texto Se refiere a introduzca $C$2:$C$5. Haga clic en Agregar.
Ahora inserte otra hoja, llámela "Hojal" y coloque todos estos datos en ella.
Teniendo activa a ú n la Hojal, seleccione la opción de menú lnsertar>Nombre>
Definir.
En el c u a d r o de t e x t o de la p a r t e s u p e r i o r a i n t r o d u z c a la p a l a b r a
"ListaCorrespondiente" y en el cuadro de texto de la parte inferior introduzca esta
fórmula y haga clic en Agregar:
= DESREF(INDIRECTO(DIRECCIÓN(COINCIDIR(CeldaVall;Obj ectos;0)+1,2 ; ; ;
"Listas"));0;0;CONTAR.SI(Objectos,CeldaVall);1)

En el cuadro de texto Nombres en el libro escriba la palabra "CeldaVall" y en el


cuadro de texto Se refiere a introduzca $D$6 y haga clic en Agregar. De nuevo e
introduzca en el primer cuadro de texto la palabra "CeldaVal2" y $E$6 en el se-
gundo, y luego haga clic en Agregar.
Ahora haga clic en A c e p t a r para volver a la Hojal y entonces seleccione la
celda $D$6.
Éste es un proceso largo, pero ya estamos cerca del final.Vaya a Datos>
Validación>Configuración. Seleccione la opción Lista del cuadro de lista desplega-
ble y en el cuadro de texto Origen escriba " = ListaVal". Asegúrese de que está
activada la casilla de verificación Celda con lista desplegable y haga clic en Acep-
tar.
Seleccione ahora la celda E6 y de nuevo vaya a Datos>Validación>Configuración.
Seleccione la opción Lista en el cuadro de lista desplegable y en el cuadro de texto
Origen escriba "ListaCorrespondiente". Asegúrese también de que la casilla de ve-
rificación Celda con lista desplegable está activada y haga clic en Aceptar. Selec-
cione u n o de los objetos de la lista de validación que aparece en la celda D6 y la
celda de validación en la celda E6 cambiará automáticamente para reflejar el ob-
jeto que acaba de seleccionar.
Ahora ya tiene u n a lista de validación m u y útil, como la que se muestra en la
figura 2.9, cuyos contenidos cambiará automáticamente basándose en el ele-
mento elegido en la otra lista.
En cualquier celda o rango de celdas puede utilizar u n a lista que contenga
hasta cinco listas separadas.
88 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

Figura 2.9. Dos listas de validación que se corresponden.

TRUCO Forzar la validación de datos para hacer


referencia a una lista en otra hoja
Una de las opciones disponibles en la función de validación de datos es la
opción Lista, que proporciona un cuadro de lista desplegable con elementos
específicos que el usuario puede elegir. Un problema que surge con la
validación de datos es que en el momento en el que intenta hacer
referencia a una lista que reside en otra hoja, verá que es imposible. Por
fortuna, será posible mediante este truco.

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.

Método 1. Rangos con nombre


Quizá la forma más sencilla y rápida para realizar esta tarea es dar nombre al
rango en el que reside la lista. Para los propósitos de este ejercicio, supondremos
que ha llamado ha dicho rango "MiRango". Seleccione la celda en la que desea
que aparezca el cuadro de lista desplegable y luego vaya a Datos>Validación. Se-
leccione la opción Lista en el cuadro de lista desplegable y en el cuadro de texto
Origen escriba "=MiRango". Haga clic en Aceptar. Ahora, la lista (que se encuen-
tra en otra hoja) puede ser utilizada por la lista de validación.

Método 2. La función INDIRECTO


La función INDIRECTO le permite hacer u n a referencia a u n a celda que con-
tiene un texto que a su vez representa la dirección de otra celda. Puede utilizar la
celda que contiene la función INDIRECTO como referencia a u n a celda y puede
2. Trucos sobre las características incorporadas en Excel 89

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 " )

Asegúrese de que la casilla de verificación Celda con lista desplegable esté


activada y entonces haga clic en Aceptar. Ahora la lista que reside en Hojal
debería estar en la lista desplegable de validación.
Si el nombre de la hoja en la que reside la lista contiene espacios en blanco,
utilice la función INDIRECTO de la siguiente forma:
=INDIRECTO("'Hoja 1'!$A$1:$A$10")

Aquí hemos utilizado un apostrofe justo después de las dobles comillas y j u s -


to antes del signo de exclamación. Los apostrofes sirven para acotar los límites
del nombre de u n a hoja de Excel.

Siempre es una buena idea utilizar el apostrofe, independientemente


de que la hoja tenga o no espacios en blanco en su nombre. Siempre
% podrá hacer referencia a hojas que no contengan espacios, por lo que
resulta muy útil para evitar problemas.

Ventajas y desventajas de cada método


Existen ventajas y desventajas a la hora de utilizar nombres de rango y la
función INDIRECTO para forzar la validación de datos para que haga referencia
a u n a lista situada en otra hoja.
La ventaja de utilizar nombres de rango en este escenario es que cualquier
cambio que realice en el nombre de la hoja no tendrá efecto en la lista de valida-
ción. Esto sí supone u n a desventaja en el caso de la función INDIRECTO, ya que
cualquier cambio en el nombre de la hoja no se actualiza automáticamente den-
tro de dicha función, por lo que tendrá que cambiarlo de forma manual.
La ventaja de utilizar la función INDIRECTO es que si la primera celda o fila, o
la última celda o fila es eliminada del rango con nombre, dicho rango devolverá
un error #¡REF!. Esto supone u n a desventaja en caso de utilizar rangos con n o m -
bre: si elimina cualquier celda o fila dentro del rango con nombre, esos cambios
no afectarán a la lista de validación.
90 Excel. Los mejores trucos

ü Utilizar Reemplazar para eliminar caracteres no


deseados
Cuando importa datos externos o los copia desde otras ubicaciones dentro
de Excel, pueden aparecer caracteres no deseados en la hoja de cálculo.
Mediante este truco, puede evitar el inconveniente de tener que eliminar a
mano dichos caracteres.

La función Reemplazar de Excel puede ayudarle a eliminar caracteres no de-


seados de una hoja de cálculo, pero requiere de unos cuantos pasos extra. Por
ejemplo, puede reemplazar las celdas que contengan los caracteres no deseados
con nada (es decir, realmente eliminándolos). Para hacer esto, necesita saber los
códigos de los caracteres que desea eliminar. Todos los caracteres tienen un códi-
go y Excel le informará cuál es si utiliza la función CÓDIGO sobre ellos. Esta
función devuelve un código numérico para el primer carácter de u n a cadena de
texto. Dicho código corresponde con el conjunto de caracteres que esté utilizando
el ordenador. Para que esto funcione, seleccione u n a de las celdas que contengan
un carácter no deseados. En la barra de fórmulas, seleccione el carácter en cues-
tión y cópielo en el portapapeles. Luego seleccione cualquier celda que no esté
utilizando (por ejemplo la celda A l ) y copie el carácter en ella. En otra celda
introduzca la siguiente fórmula:
=C0DIG0($A$1)

Esto devolverá el código del carácter no deseado. A continuación seleccione


todos los datos y vaya a Editar>Reemplazar. Haga clic en el cuadro de texto Bus-
car, y mientras mantiene pulsada la tecla Alt o Comando, introduzca utilizando
el teclado numérico un 0 seguido del código que devolvió la función CÓDIGO.
Por ejemplo, si el código es 163, mantenga pulsada la tecla Alt o Comando mien-
tras escribe en el teclado numérico el número 0163. Deje vacío el cuadro de texto
Reemplazar con y luego haga clic en el botón Reemplazar todos. Esto eliminará
rápidamente todos los caracteres no deseados que coincidan con dicho código.
Ahora repita el mismo proceso para el resto de caracteres no deseados.

TRUCO Convertir números de texto en números reales


Los contenidos de una celda pueden parecer números, especialmente si han
sido importados, pero probablemente sea imposible utilizar dichos
números en los cálculos. A continuación mostramos algunos métodos para
convertir fácilmente esos números "de texto" en verdaderos números.

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

lia de identificar estos números de texto problemáticos en u n a columna que se


supone debería contener n ú m e r o s verdaderos dicha c o l u m n a , luego ir a
Formato>Celdas>Alineación, asegurarse de que la alineación horizontal está es-
tablecida a la opción estándar General y luego hacer clic en Aceptar. Amplíe el
ancho de la columna y verá como los números verdaderos quedarán alineados a
la derecha mientras que aquellos números de texto quedarán a la izquierda. Las
fechas también quedan alineadas a la derecha, ya que en realidad son números.
Ahora que ya sabe que tiene números que son tratados como texto, veamos
un método rápido y sencillo para convertirlos a verdaderos números, de forma
que Excel pueda utilizarlos para sus cálculos. Copie cualquier celda en blanco y
entonces seleccione aquellas celdas con los números. Vaya a Edición>Pegado es-
pecial y seleccione la opción Valores. También seleccione la opción Sumar en el
apartado de operaciones y haga clic en Aceptar.
Esto hará que cualquier número que estuviese como texto se convierta a un
verdadero número. Esto es así porque una celda vacía tiene un valor de 0 y cuan-
do añade cualquier n ú m e r o a un número que Excel está tratando como un texto,
forzará a que dicho n ú m e r o se convierta a un n ú m e r o verdadero.
Puede aplicar esta misma lógica a algunas funciones estándar de Excel, en
particular a las funciones TEXTO. Normalmente, cuando utiliza las funciones
TEXTO de Excel y el resultado obtenido es un número, Excel seguirá devolviendo
ese número como si fuera un texto en vez de un valor numérico. Supongamos
que tiene un rango de celdas comenzando por la $A$1. Cada celda contiene u n a
cantidad de dinero con el signo del dólar al principio, seguida de un espacio y el
nombre de u n a persona. Utilizando la siguiente fórmula, que combina las fun-
ciones IZQUIERDA y ENCONTRAR, puede extraer dicho símbolo del dólar:

=IZQUIERDA(Al;ENCONTRAR(" ";A1)-1)

Si, por ejemplo, la celda Al contuviese el valor "$22,70 Federico", el resultado


de la fórmula sería $22,70. Sin embargo, dicho resultado sería devuelto como un
texto, no como un valor numérico. Por tanto, de forma predeterminada, quedará
alineado a la izquierda. Puede modificar esta fórmula de forma que el resultado
no sea de tipo texto, sino un valor numérico de verdad. Para ello, añada un 0 al
final, de la siguiente forma:
=IZQUIERDA(Al;ENCONTRAR(" ";A1)-1)+0

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

For ICount = Len(sText) To 1 Step -1


If IsNumeric(Mid(sText, ICount, 1)) Then
L = L + 1
lNum = Mid(sText, ICount, 1) & lNum
End If

If L = 1 Then lNum = CInt(Mid(lNum, 1, 1))


Next ICount

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

Figura 2.10. Extraer la parte numérica de un texto.

En la figura 2.10, la columna A contiene una mezcla de texto y números, la


columna B contiene el resultado de utilizar esta función y la columna C muestra
la apariencia de la fórmula en la columna B.

Personalizar los comentarios de las celdas


Los comentarios de celda le permiten colocar el equivalente a una nota en
una celda específica de una hoja. Aunque muchas personas utilizar estos
comentarios, la mayoría no saben que pueden ser personalizados.
Cuando inserta un comentario de celda a través de la opción lnsertar>Comen-
tario, Excel, de forma predeterminada, inserta también el nombre del usuario del
2. Trucos sobre las características incorporadas en Excel 93

ordenador que está utilizando el programa. Puede cambiar este comportamiento


a través de Herramientas>Opciones>General. Observe que en la parte inferior del
cuadro de diálogo puede cambiar el nombre de usuario que desea que aparezca
de forma predeterminada.
Aunque los comentarios de celda tienen el propósito de mostrar un mensaje
escrito por usted o cualquier otro usuario, puede personalizar dichos comenta-
rios de forma que reflejen mejor las intenciones del que lo crea. Asegúrese de que
la barra de herramientas de dibujo esté visible, seleccionando la opción Ver>Barras
herramientas>Dibujo. Introduzca un comentario de celda seleccionándola y luego
yendo a la opción lnsertar>Comentario. Esto hará que entre en modo de edición
automáticamente, listo para introducir el texto en el cuadro de comentario.
Haga clic justo en el borde del comentario para salir del modo de edición pero
manteniéndolo seleccionado. Entonces seleccione Dibujo y elija la opción Cambiar
autoforma del menú que aparece. Obtendrá u n a lista con opciones en la que se
incluyen formas básicas, flechas de bloque, gráficos de flujo, etc. Elija u n a op-
ción y verá como el comentario de la celda cambiará su aspecto en función de
ello, tal y como se muestra la figura 2 . 1 1 .
A B C D E 1
1
2
3
4 --<•"""? ~>'""v
5
6
7
8
y
9
10
11
•"""
12
I 13
Figura 2.11. Un comentario de celda con un formato totalmente diferente.

Puede ir más lejos si aplica un estilo sombreado al comentario, dándole más


vida y un aspecto en tres dimensiones. Asegúrese de que todavía tiene seleccio-
nado el comentario pero que no está en modo de edición. En la barra de herra-
mientas de dibujo, haga clic en el icono Estilo de sombra que se muestra la figura
2.12 y elija una configuración de sombra para el comentario de la celda.
Otra cosa interesante que puede hacer con los comentarios de celda es utili-
zarlos para mostrar imágenes sin que impidan ver los datos. Por ejemplo, podría
insertar la imagen de un gráfico en el comentario de la celda para ilustrar los
datos del gráfico sin tener que mostrarlo todo el tiempo.
Para añadir u n a imagen, asegúrese de tener seleccionada el comentario, pero
sin estar en modo de edición. Seleccione Formato>Comentario o bien haga doble
clic en el borde del comentario. Vaya a la pestaña Colores y líneas y en el cuadro
94 Excel. Los mejores trucos

de lista desplegable Color, seleccione la opción Efectos de relleno. Vaya entonces a


la pestaña Imagen. Ahora busque la imagen que desee insertar en el comentario
de la celda.

% ÉP

:
Configuración de sombra.,,

; Dibujo" ,| Autoformas' \ \ • •„"> zJ -Jjí (¿ :•* * y¿ * & ~ z± Wi?. <£ J J -

Figura 2.12. Opciones de estilo 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:

Function ObtenerTextoComentario(rCommentCell As Range)


Dim strGotlt As String
On Error Resume Next
strGotlt = WorksheetFunction.Clean (rCommentCell.Comment.Text)
ObtenerTextoComentario = strGotlt
On Error GoTo 0
End Function

Vuelva a la ventana principal de Excel, bien cerrando esta ventana o pulsando


Alt/Comando-Q, Ahora, en cualquier celda introduzca la siguiente fórmula:
=ObtenerTextoComentario(Al)

donde Al es la celda que contiene un comentario. Entonces debería aparecer el


texto del comentario en la celda en la que haya introducido esta fórmula.

Ordenar más de tres columnas


La función de ordenación de Excel está limitada, en cuanto a que sólo permite
elegir tres campos de datos por los que ordenar. En muchos casos puede ser
suficiente, pero a veces es necesario poder ordenar por más de tres columnas
de datos. A continuación mostraremos cómo superar esta limitación.

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

For L = Selection.Columns.Count To 1 Step -1


Selection.Sort Keyl:=Selection.Cells(2, 1 ) , _
Orderl:=xlAscending, Header:=xlGuess, Orientation:=xlTopToBottom
Next L

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

columnas A, B, C y D utilizando como criterio el valor de la columna A, ya sea


ascendentemente o descendentemente, tendrá a los tres ganadores en la parte
superior de la tabla.
La función ALEATORIO es u n a función volátil que se calcula automáticamente
cada vez que se realiza u n a acción en Excel (como por ejemplo, introducir datos
en algún lugar o bien forzando a que se recalculen todas las fórmulas pulsando
la tecla F9). Por tanto, ya puede escribir en u n a hoja de papel quiénes eran los
ganadores antes de que vuelva a calcularse de nuevo todo, ya que el orden cam-
biará.
Sin embargo, puede utilizar esta volatilidad en su beneficio y grabar una macro
que ordene los datos inmediatamente después de recalcular y forzar a que la
función ALEATORIO devuelva a otro conjunto de números aleatorio. Entonces
puede asociar esta macro a un botón de forma que cada vez que desee calcular
los tres ganadores, todo lo que debe hacer es hacer clic en él y utilizar las tres
filas de la parte superior.
Por ejemplo, supongamos que tiene los datos en las columnas B, C y D y que
la fila 1 se utiliza para los encabezados. Primeramente, introduzca el encabezado
"Aleatorio" en la celda A l . En la celda A2 introduzca ^ALEATORIO () y propa-
gúela hacia abajo. Luego seleccione cualquier celda y vaya a Herramientas>Macro>
Grabar nueva macro.
Seleccione las columnas A, B, C y D y pulse F9 (para forzar de sede recalculen
las fórmulas). Vaya a Datos>Ordenar y ordene los datos por la columna A. De-
tenga entonces la grabación de la macro.
A continuación seleccione Ver>Barras de herramientas>Formularios. Seleccio-
ne el icono Botón en el cuadro de herramientas y colóquelo en cualquier lugar de
la hoja.
Asignen la macro que acaba de grabar a este botón y luego haga clic en Acep-
t a r (también cambie el texto del botón por algo más representativo). Puede ocul-
tar la columna A completamente, ya que los usuarios no tienen por qué ver los
números aleatorios. Cada vez que haga clic en el botón, los datos se ordenarán
aleatoriamente y simplemente bastará con leer los tres nombres que aparezcan
en la parte superior de la tabla para ver quiénes son los ganadores. Observe la
figura que le mostramos a continuación.

La función ALEATORIO de Excel 2003 tiene un fallo muy importante.


Aunque la ayuda asegura claramente que el número aleatorio devuelto
V está entre 0 y 1, esto no siempre es cierto si la función se utiliza en
muchas celdas. A veces ocurrirá que la función devuelva un número
menor que 0. Para saber porqué Microsoft ha cambiado el algoritmo,
visite la página http://support.microsoft.com/default.aspx?kbid=
828795.http://support.microsoft.com/default.aspx?kbid=828795.
2. Trucos sobre las características incorporadas en Excel 97

_ 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'

Figura 2.13. Resultado final de la ordenación aleatoria de la columna oculta A.

ü Manipular datos con el filtro avanzado


Si está familiarizado con la herramienta de auto filtrado de Excel, también
estará familiarizado con sus limitaciones. Si necesita hacer una
manipulación exhaustiva de los datos, la solución es utilizar la herramienta
de filtrado avanzado de Excel.

A pesar de su limitación, el filtrado automático es útil para mostrar solamen-


te aquellos datos que cumplan un criterio en particular. Sin embargo, en algunas
ocasiones, no podrá extraer la información que necesita utilizando las opciones
estándar disponibles en el filtrado automático. Por ello, existe u n a herramienta
más versátil, el filtro avanzado, que le permite manipular los datos más allá de
dichas limitaciones. Cuando utilice esta herramienta, la tabla debe estar configu-
rada en un formato clásico, tal y como describimos al comienzo del capítulo 1.
Cuando utilice la herramienta de filtrado avanzado de Excel, necesitará u n a
copia de los encabezados de las columnas en algún lugar por encima de los datos.
Siempre debería dejar al menos tres filas en blanco por encima de la tabla con los
datos. Para asegurarse de que los encabezados son siempre los mismos y se m a n -
tengan así independientemente de que cambie los encabezados de las columnas,
haga siempre las referencias a los encabezados de las columnas con u n a fórmula
de referencia simple, como pueda ser =A4, donde la celda A4 contiene el encabe-
zado de la columna. Copie esto a lo largo de los encabezados de las columnas que
tenga en la tabla. Esto asegurará que los encabezados de los criterios para el
filtrado avanzado sean dinámicos. Directamente debajo de los encabezados co-
piados, coloque el criterio que desea utilizar para el filtro avanzado. Para más
detalles sobre este proceso, consúltela ayuda de Excel acerca de los criterios de los
filtros avanzados. Hay que tener en cuenta que cuando se utiliza el filtro avan-
zado, si hay dos o más criterios colocados directamente por debajo del encabeza-
do, utilizarán un operador de comparación O. Si desea utilizar el operador de
comparación Y, entonces los encabezados de columna y sus criterios deben apa-
recer dos veces, del lado a lado. En la figura 2.14 se muestra cómo utilizar el
operador O para filtrar los datos y en la figura 2.15 cómo utilizar el operador Y.
98 Excel. Los mejores trucos

-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

Figura 2 . 1 4 . Usar el filtro avanzado con el operador O para mostrar solamente


aquellas personas que tengan u n a paga mayor que $16,00 o menor que $15,00.

- 4 ] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana

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

Figura 2 . 1 5 . Usar el filtro avanzado con el operador Y para mostrar solamente


aquellas personas cuyo nombre comienza por B y termina por L.
2. Trucos sobre las características incorporadas en Excel 99

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.

Es importante destacar que cuando utilice una fórmula para el criterio,


S. no debe utilizar por encima del criterio un encabezado que sea idéntico
w\ a uno que haya en la tabla. Por ejemplo, si tiene un listado con datos
numéricos en la columna A y la lista comienza en la celda A5 (siendo
A4 el encabezado), si necesita extraer todos los números de dicha lista
que sean mayor que la media, debería utilizar un criterio como este:
=A5>PR0MEDI0($A$5:$A$500)

Si el criterio fuese colocado en la celda A2, el rango del criterio sería


$A$1 :$A2, pero $A$ 1 no podría contener el mismo encabezado que el
usado en la lista. Debe ser o bien vacío o bien un encabezado diferente.
También es importante reseñar que cualquier fórmula que utilice
debería devolver o bien VERDADERO o FALSO. El rango para la función
promedio se hace absoluto al utilizar el signo del dólar, mientras que
la referencia a la celda A5 es relativa. Esto es necesario porque cuando
aplique el filtro avanzado, Excel verá que la celda A5 es una referencia
relativa y se moverá por la lista hacia abajo por cada entrada
devolviendo VERDADERO o FALSO. Si devuelve VERDADERO, entonces
habrá que necesita ser extraído. Si devuelve FALSO, entonces es que
no coincide con el criterio, y por lo tanto, no será mostrado.

S u p o n g a m o s que m u c h o s de los n o m b r e s están repetidos en el r a n g o


$A$5:$A$500, siendo la celda A4 el encabezado. También que muchos de los
encabezados se repiten numerosas veces. Se le ha asignado la tarea de extraer de
la lista todos los nombres que aparecen más de u n a vez. Para hacer esto, necesita
utilizar el filtro avanzado, así como la siguiente fórmula como criterio:
=CONTAR.SI($A$5:$A$500;A5)>1

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

5 David David David Acción


6 Alex Alex Alex í"" Filtrar la lista sin moverla a otro lugar
7 [Ana Marta Marta <•" Copiar a otro lugar
8 Marta Juan Juan
9 Juan Mar Mar Rango de la lista: j $c$4: $C$ 14
3
10 Santos
11 Laida
Marta
David
Rango de criterios: j "3
12 Mar Juan Copiar a: |$D^4 "3
13 Luis Mar
P" Sólo registros únicos
14 Marta Alex
15 David
16 Juan
j Aceptar J Cancel
»1 «-
17 Antonio
18 Mar
19 Alex
¡H 4 • M ' / Hoja2 / Hoja3 / Hoja4 / HojaS / Hojaó / Hoja? / HojaS \ H o j a 9 / |<f i nr
Figura 2 . 1 7 . Usar el filtro avanzado en la lista extraída de nombres para mostrar cada
u n o de ellos solamente u n a vez.

Los usuarios que utilicen el filtro avanzado a menudo se preguntan


^ cómo pueden forzar a Excel para que filtre sus datos por el criterio
exacto que h a n especificado. Si el criterio que ha elegido es "Juan", por
2. Trucos sobre las características incorporadas en Excel 101

ejemplo, y realiza un filtro avanzado en una larga lista de nombres,


Excel no sólo mostrará el nombre de "Juan", sino también nombres
como "Juana", "Juan Carlos", etc. en otras palabras, cualquier nombre
que comience con las letras "Juan", en ese orden, serán considerados
como que cumplen el criterio. Para obligar a Excel a que encuentre
solamente aquellos que coincidan totalmente, introduzca el criterio
así: ="=Juan".

m g 3 j Crear formatos de número personalizados


Exce
II ^ E C j H ' incorpora una serie de formatos para números, pero a veces
^^^£^B necesitará utilizar un formato de número que no esté entre los
predefinidos. Mediante los trucos de este apartado, podrá crear formatos
de número que puede personalizar de acuerdo a sus necesidades.

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).

Cuando nos referimos a números, no significa que el formato


personalizado sólo se aplique a datos de tipo numérico. Dicho formato
también se aplicará a los números que estén en formato texto.

El formato personalizado de número mostrado en la figura 2.18 es el formato


estándar de moneda de Excel, que muestra los valores negativos en rojo. Lo he-
mos modificado añadiendo un formato aparte para los valores cero y otro para
los textos.
Si introduce un n ú m e r o positivo como un valor de moneda, Excel le dará
formato automáticamente de forma que incluya un punto como separador de
millares seguido de dos lugares decimales. Hará lo mismo con los valores negati-
vos, excepto que los mostrará en color rojo. Cualquier valor cero no tendrá el
símbolo de moneda y sólo mostrará dos lugares decimales. En caso de que intro-
duzca un texto en la celda, Excel mostrará el texto "No introduzca texto" en vez
de el texto que haya introducido el usuario.
102 Excel. Los mejores trucos

Formato para Formato para Formato para Formatos para


números positivos números negativos valores cero texto

$#,##0.00 ; [Rojo]$#,##0.00 ; 0.00 ; "No escribir texto"


Figura 2.18. Secciones del formato de número personalizado.

Es importante recordar que dar formato al valor de u n a celda no afecta al


verdadero valor que ésta contiene. Por ejemplo, escriba cualquier número en la
celda A l . Luego vaya a Formato>Celdas>Número>Personalizado y escriba en el
cuadro de texto Tipo la palabra "Hola" (incluyendo las dobles comillas). Haga clic
en A c e p t a r para cerrar el cuadro de diálogo.
Aunque la celda muestre el texto "Hola", puede ver el verdadero valor conteni-
do de la celda seleccionándola y mirando la barra de fórmulas de la parte supe-
rior de la ventana (o bien pulsando F2). Si fuese a hacer u n a referencia a esta
celda en u n a fórmula (por ejemplo =Al + 2 0), la celda resultante tomaría el for-
m a t o personalizado. Si hiciese referencia a la celda Al j u n t o a otras muchas cel-
das que tuviesen un formato estándar, por ejemplo, =SUM (Al :A10), la celda
resultante seguiría tomando el formato personalizado de la celda A l . Esto es así
porque Excel tiene la delicadeza de dar al resultado el mismo formato que tengan
aquellas celdas referenciadas. En caso de que éstas tuviesen más de un formato,
si existe alguno personalizado, tendrá preferencia sobre los demás.
Esto significa que siempre deberá recordar que Excel utiliza el valor real de
u n a celda para hacer sus cálculos, y no el valor que muestra resultado de un
formato en particular. Esto puede provocar u n a sorpresa cuando Excel hace cál-
culos basándose en celdas que están formateadas para no mostrar lugares deci-
males o para mostrar solamente unos cuantos, por ejemplo. Para ver esto por sí
mismo, introduzca 1,4 en la celda Al y 1,4 en la celda A2. Cambie el formato de
ambas celdas para que no muestren lugares decimales y luego introduzca la fór-
mula =A1+A2 en otra celda cualquiera. Verá que el resultado es 3, ya que Excel
ha redondeado el cálculo. Excel tiene u n a opción llamada Precisión de pantalla
que encontrará en Herramientas>Opciones>Calcular, pero debe tener en cuenta
que esta opción cambiará definitivamente los valores almacenados en las celdas a
la precisión máxima (15 dígitos), independientemente del formato, incluyendo
los lugares decimales, en caso de que se muestren. Dicho de otra forma, u n a vez
que se activa esta opción, no hay posibilidad de volver atrás (puede intentarlo,
pero la información extra sobre la precisión se perderá).
El formato predeterminado para cualquier celda es General. Si introduce un
número en u n a celda, Excel le asignará el formato numérico que considere más
apropiado. Por ejemplo, si introduce 10% en u n a celda, Excel le dará el formato
de porcentaje. La mayoría de las veces, Excel acierta correctamente con el forma-
to, aunque a veces será necesario cambiarlo.
2. Trucos sobre las características incorporadas en Excel 103

Cuando utilice la opción Formato>Celdas, resista la tentación de forzar


la alineación a la izquierda, derecha o al centro para el formato
horizontal. De forma predeterminada, los números se alinean a la
derecha y el texto a la izquierda. Si deja esto así, puede decir en
cualquier momento si una celda contiene texto o números, como ya
vimos en el ejemplo anterior, en el que en la celda Al parecía haber un
texto pero en realidad contenía un número.

Cada u n a de las secciones de un formato dado utiliza su propio conjunto de


códigos de formato. Estos códigos obligan a Excel a hacer que los datos aparez-
can de u n a cierta forma. Así, por ejemplo, supongamos que quiere que los n ú -
meros negativos aparezcan entre paréntesis y por lo demás, que cualquier número,
ya sea positivo, negativo o cero, muestre dos lugares decimales. Para hacer esto,
utilice este formato personalizado:
0,0 0_ ; ( - 0 , 0 0)

Si desea que los números negativos aparezcan en rojo, utilice este formato:
0 . 0 0_ ; [Rojo] ( - 0 . 0 0 )

Observe que hemos utilizado corchetes en el código anterior. El código de for-


m a t o indica a Excel que haga que los números aparezcan en color rojo.
Puede utilizar muchos códigos de formato diferentes dentro de las secciones
de un formato personalizado. Las tablas 2 . 1 a 2.5, realizadas a partir de la docu-
mentación de Microsoft, explican estos códigos.

Tabla 2.1. Códigos de formato

Código de número Descripción

General Formato de número general.


0 (cero) Muestra los ceros sin valor si un número tiene menos
dígitos que ceros en el formato.
# Muestra únicamente los dígitos significativos y no
muestra los ceros sin valor.
? Añade los espacios de los ceros sin valor a cada lado del
separador decimal. También se puede utilizar ? para las
fracciones que tengan un número de dígitos variable.
% Un porcentaje. Excel multiplicará el valor por 100 y
mostrará el carácter % después del número.
104 Excel. Los mejores trucos

Código de número Descripción

. (punto) Separador de millares. Un p u n t o seguido de un código


ampliará el número por 1.000.
E+ E- e+ e- Notación científica.

Tabla 2.2. Códigos de texto

Código de texto Descripción

$ - + / ( ) : y espacio Estos caracteres se m o s t r a r á n en el n ú m e r o . Para


en blanco mostrar cualquier otro carácter, enciérrelo entre do-
bles comillas o bien precedido de u n a barra invertida
(\).
\carácter Este código muestra el carácter especificado. Observe
que si escribe !, ^, &, ', ~, {, }, =, <, o>se colocará
automáticamente u n a barra invertida delante del ca-
rácter.
"texto" Este código muestra el texto que hay encerrado entre
las dobles comillas.
Este código repite el siguiente carácter en el formato
para rellenar el ancho de la columna. Sólo se admite
un asterisco por cada sección del formato.
_ (subrayado) Este código omite el ancho del siguiente carácter. Nor-
malmente se utiliza así: _) para dejar un espacio para
un paréntesis de cierre en el formato de un número
positivo cuando el formato para números negativos
incluye paréntesis. Esto permite que, tanto valores p o -
sitivos como negativos se alineen en el punto decimal.
Lugar para un texto.

Tabla 2.3. Códigos de fecha

Código de fecha Descripción

m Un mes representado como un número sin ceros de re-


lleno (1-12)
2. Trucos sobre las características incorporadas en Excel 105

Código de fecha Descripción

mm Un mes representado como un número con ceros de


relleno (01-12)
mmm Un mes dado como su abreviatura (ene-dic)
mmmm Un mes dado tal cual, sin abreviar (enero-diciembre)
d Un día representado como un número sin ceros de re-
lleno (1-31)
dd Un día representado como un número con ceros de re-
lleno (01-31)
ddd Un día dado como su abreviatura (lun-dom)
dddd Un día dado tal cual, sin abreviar (lunes-domingo)
aa Un año dado como un número de dos dígitos (por ejem-
plo, 96)
aaaa Un año dado como un número de cuatro dígitos (por
ejemplo, 1996)

Tabla 2.4. Códigos de hora

Código de hora Descripción

h Una hora representada como un número sin ceros de


relleno (0-23)
hh Una hora representada como un número con ceros de
relleno (00-23)
m Un minuto representado como un número sin ceros de
relleno (0-59)

mm Un minuto representado como un número con ceros


de relleno (00-59)
m Un segundo representado como un número sin ceros
de relleno (0-59)

mm Un segundo representado como un número con ceros


de relleno (00-59)

AM/PM a m / p m Hora en formato del reloj de 12 horas


106 Excel. Los mejores trucos

Tabla 2.5. Códigos misceláneos

Código misceláneo Descripción

[Negro], [Azul], Estos códigos muestran los caracteres en el color espe-


[Aguamarina], cificado. Observe que "n" puede ser un valor entre 1 y
[Verde], [Magenta], 56, y se refiere al enésimo color de la paleta.
[Rojo], [Blanco],
[Amarillo], [Color n]
[Condiciónvalor] Las condiciones pueden ser < , > , = , > = , < = ó o ,
mientras que el valor puede ser cualquier número. Un
formato de número puede contener hasta dos condi-
ciones.

Observe en particular el último tipo de códigos de formato de la tabla 2.5, es


decir, los operadores de comparación. Supongamos que desea un formato de n ú -
mero personalizado del tipo de 0,00_ ;[Rojo](-0.00) para mostrar los números
negativos en color rojo y entre corchetes, pero solamente si el número es menor
que -100. Para conseguir esto, tendría que escribir el formato de esta forma:
0,00_ ; [Rojo] [<-100] ( - 0 , 0 0 ) ; 0 , 0 0

Los códigos de formato [Rojo][<-l00](-0,00) colocados en la sección para n ú -


meros negativos hacen que esto sea posible. Utilizando este método j u n t o con el
formato condicional, puede doblar el número de formatos condicionales disponi-
bles de tres a seis.
A menudo, los usuarios desean mostrar el símbolo del euro como u n a pala-
bra. Para conseguir eso, utilice el siguiente formato personalizado:
0 " e u r o s con" .00 " c é n t i m o s "

Este formato obliga a que un n ú m e r o introducido como 55,25 se muestre


como 55 euros con 25 céntimos. También podría utilizar un formato condicional
para mostrar las palabras "Bajo", "En la media" o "Alto", dependiendo del número
introducido. Para ello utilice este simple formato:
[<ll]'MBajoM* 0 ; [>20] " A l t o " * 0;"En la media"* 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

ü Añadir más niveles de Deshacer a Excel


Todos estamos familiarizados con la maravillosa característica de Deshacer
de Excel, que permite a los usuarios deshacer aquellas acciones que desee
en caso de equivocación. Por desgracia, el nivel predeterminado de
cambios que se pueden deshacer es tan sólo de 16. Con este truco,
podemos cambiar el registro de forma que podamos deshacer hasta 100
equivocaciones.
Cuando utiliza la característica Deshacer de Excel y alcanza el n ú m e r o de 16
acciones, el primer deshacer es reemplazado por el número 17, y así sucesiva-
mente. Además, en cuanto guarde el libro, toda la lista de acciones a deshacer se
elimina, coloque se pierde el historial de acciones. Esto es así porque se supone
que a pulsar Guardar, está indicándole a Excel que está de acuerdo con los cam-
bios realizados y que por lo tanto no tiene sentido deshacer nada.
Probablemente haya descubierto que, en ocasiones, poder deshacer t a n sólo
en vez de tener que aguantar esto, puede cambiar este comportamiento modifi-
cando el registro, algo que sólo funciona en Windows. Para ello, lo primero que
hay que hacer es cerrar Excel. Luego vaya a lnicio>Ejecutar y en el cuadro de
texto escriba "Regedit.exe". Luego haga clic en Aceptar. Cuando se abra el Editor
del registro, despliegue la carpeta HKEY_CURRENT_USER. Luego despliegue la
carpeta Software, luego Microsoft, Office y por último la carpeta 10.0 (esta últi-
ma carpeta depende de la versión de Office que tenga. En este caso, la carpeta
11.0 es la correspondiente a Excel 2002). A continuación despliegue la carpeta
Excel y finalmente abra la carpeta Options.
A h o r a v a y a a Edición>Nuevo>Valor DWORD, i n t r o d u z c a la p a l a b r a
"UndoHistory" y pulse Intro. Luego haga doble clic sobre el elemento que acaba
de crear, seleccione el botón de opción Decimal y a continuación escriba en el
cuadro de texto un valor m a y o r que 16 y menor que 100.
En general, disponer de 100 acciones para deshacer será suficiente para la
mayoría de los usuarios, aunque el problema de que la opción Deshacer se pierda
u n a vez guardada la hoja seguirá ocurriendo.

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

guientes elementos de la lista. De esta forma, puede crear fácilmente su propia


lista personalizada con aquellos elementos utilizados más a menudo.
La forma más flexible de crear u n a lista personalizada es introducir sus con-
tenidos en un rango de celdas. Por ejemplo, digamos que tiene u n a lista de 100
nombres de empleados. Introduzca cada nombre, comenzando por la celda Al y
terminando en la celda Al 00, y luego ordenándola, si es necesario. A continua-
ción seleccione Herramientas>Opciones y en la pestaña Listas personalizadas haga
clic en el cuadro de texto Importar lista desde las celdas. Utilizando el cursor del
ratón, haga clic en la celda Al y arrástrelo hasta la celda Al 00 y luego haga clic
en el botón Importar. Llegados a este punto, la lista personalizada estará dispo-
nible para todos los libros con los que se trabaje en este mismo ordenador.

Si la lista está ordenada y desea que esté colocada de arriba a abajo,


S encontrará más sencillo ordenarla de Z a A en caso de que la lista
original estuviese ordenada al revés.

TRUCO Subtotales en negritas de Excel


¿No sería muy interesante si pudiese identificar los subtotales en sus hojas
de cálculo de forma que los pudiera encontrar fácilmente? Con los trucos
de este apartado, podrá hacerlo.

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 haga clic en el botón Formato..., vaya a la pestaña Fuente y seleccione


como estilo de fuente la opción negrita. Haga clic en Aceptar dos veces hasta
cerrar los dos cuadros de diálogo.
La parte más importante de la fórmula es la utilización de u n a referencia
absoluta de la columna ($A) y de u n a referencia relativa de la fila (1). Como
empezó la selección desde la celda A l , Excel cambiará automáticamente la fór-
mula para cada celda. Por ejemplo, las celdas A2 y B2 contendrán la fórmula de
formato condicional = DERECHA ($A2 ; 5) = " T o t a l " y las celdas A3 y B3 ten-
drán = DERECHA ( $ A 3 ; 5 ) = " T o t a l " .
110 Excel. Los mejores trucos

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.

El truco sobre el truco


El único inconveniente que puede surgir con este método es que el Total final
aparezca con el mismo estilo que los subtotales. Sería interesante que el Total
final tuviese un formato diferente de forma que resaltase de los subtotales y
pudiera ser identificado más fácilmente. Utilizando el mismo ejemplo, podemos
hacer esto fácilmente.
Con los mismos datos, seleccione las celdas A1:B9, asegurándose de que la
celda Al sea la activa. Entonces seleccione Formato>Formato condicional, elija
la opción Fórmula del cuadro de lista desplegable e introduzca la siguiente fór-
mula:

=$A1= "Total f i n a l "

Haga clic en el botón F o r m a t o . . . y luego vaya a la pestaña Fuente y seleccio-


ne como estilo la fuente en negrita. Seleccione también la opción Simple del cua-
dro de lista desplegable Subrayado, haga clic en A c e p t a r y de nuevo otra vez en
A c e p t a r para cerrar todos los cuadros de diálogo.
A continuación, seleccione la opción Datos>Subtotales, acepte las opciones
predeterminadas y haga clic en Aceptar. Ahora la hoja de cálculo debería tener el
aspecto de la que se muestra en la figura 2.22.
Puede utilizar cualquier formato que desee para conseguir que los subtotales
sean más sencillos de identificar.
2. Trucos sobre las características incorporadas en Excel 111

_ " _ 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.

Puede hacer esto manualmente de dos maneras, o también puede utilizar u n a


macro que haga el trabajo de forma automática. Veamos primeramente los mé-
todos manuales.

Utilizar Pegado especial


Puede copiar los resultados de una fórmula y dejarla tal cual en su ubicación
original utilizando la herramienta Pegado especial de Excel. Supongamos que sus
fórmulas están en las celdas A1:A100. Seleccione este rango, luego seleccione
Edición>Copiar y entonces seleccione la celda inicial en la que quiere duplicar los
resultados. Ahora vaya a Edición>Pegado especial y seleccione la opción Valores.
Haga clic en Aceptar.

Utilizar Copiar aquí sólo valores


También puede copiar los resultados de u n a fórmula y dejar las fórmulas ori-
ginales en su lugar utilizando el menú contextual que muchos usuarios ni si-
quiera saben que existe.
Seleccione el rango de fórmulas y haga clic con el botón derecho sobre el borde
derecho o izquierdo de la selección (excepto en el pequeño recuadro de la esquina
inferior derecha que sirve para la propagación). Manteniendo pulsado el botón
112 Excel. Los mejores trucos

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.

I B Micros oftE «ce! - Librol.xls f ü T w HHHHHHBHBS^^':^' :' , ~ .,lnixi;


•-¿a] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? » _& Xi
J J d 3 . j -é JL *$ ü á -J / -*> - B á, E ' $1 í l M ^ i 100% . ^ j |
:>T A
Arial

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

Figura 2.23. Menú contextual de acceso rápido.

Utilizar una macro


Si con frecuencia convierte celdas que contienen fórmulas y funciones a sus
valores resultantes, puede utilizar esta simple macro:
Sub SoloValores( )
Dim rRange As Range
On Error Resume Next
Set rRange = Application.InputBox(Prompt:="Seleccione las fórmulas",
Title:="SÓLO VALORES", Type:=8)
2. Trucos sobre las características incorporadas en Excel 1t3

If rRange Is Nothing Then Exit Sub


rRange = rRange.Valué
End Sub

Para utilizar esta macro, vaya a Herramientas>Macro>Editor de Visual Basic


(Alt/Opción-Fll), y seleccione lnsertar>Módulo para insertar un módulo estándar.
Entonces escriba el código anterior directamente dentro de la ventana del m ó d u -
lo. Cierra esta ventana para volver a Excel y guardar los cambios. Ahora seleccio-
ne Herramientas>Macro>Macros (Alt/Opción-F8), seleccione la m a c r o que
acabamos de crear, SoloValores, y haga clic en el botón Opciones n e g r i t a s para
asignarle u n a tecla de acceso rápido. Cuando utilice la macro, aparecerá un cua-
dro de diálogo que le pedirá que seleccione el rango que contiene las fórmulas. El
rango que seleccione aparecerá, automáticamente, como u n a dirección dentro
del cuadro de diálogo, y en ese momento todo lo que debe hacer es realizar la
conversión haciendo clic en Aceptar.

Añadir datos automáticamente a una lista


de validación
La función de validación de Excel es estupenda, pero hay algo clave que no
es capaz de hacer (al menos sin el siguiente truco): añadir automáticamente
una nueva entrada a la lista que está siendo utilizada como origen de una
lista de validación.
Si ha utilizado la validación, ya sabrá que es u n a característica m u y intere-
sante. Quizá es más impresionante su capacidad de añadir u n a lista a cualquier
celda, desde la cual el usuario podrá seleccionar un elemento. ¿No sería estupen-
do si, cuando introdujese un nuevo nombre en u n a celda con validación, Excel
automáticamente añadiese dicho valor a la lista? Esto es posible gracias al si-
guiente truco. Supongamos que tiene un listado de nombres en el rango de cel-
das Al :A10, como en la figura 2.24.

[ 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

Estos nombres representan los empleados de u n a empresa. No es de extrañar


que deban añadirse los nuevos empleados a dicha lista, pero por ahora, la única
forma de hacer esto es añadiendo los nuevos nombres al final de la lista y luego
seleccionándolos en la celda con validación.
Para superar esta limitación, siga estos pasos. En la celda Al 1, introduzca la
siguiente fórmula y cópiela hacia abajo hasta la fila 20, tal y como se muestra en
la figura 2.25 (observe la referencia relativa a A10):
=SI(0($D$l="»;CONTAR.SI($A$1:A10;$D$1));"x";$D$1)

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.

Ahora seleccione lnsertar>Nombre>Definir y en el cuadro de texto Nombres en


el libro, escriba "MisNombres".
En el cuadro de texto Se refiere a, introduzca la siguiente fórmula, tal y como
se muestra en la figura 2.26. Luego haga clic en A g r e g a r y posteriormente en
Aceptar:

=DESREF(Hoj a l ! $ A $ 1 ; 0 ; 0 ; C O N T A R . S I (Hoj a l ! $ A : $ A ; " < > x " ) /1)

Seleccione la celda DI y luego vaya a Datos>Validación. Elija la opción Lista en


el cuadro de lista desplegable y en el cuadro de texto Origen, escriba ^MisNombres,
asegurándose de que la casilla de verificación Celda con lista desplegable esté
activada.
Luego vaya a la pestaña Mensaje de error y desactive la casilla de verificación
Mostrar mensaje de error si se introducen datos no válidos. Entonces haga clic en
A c e p t a r y verá los resultados como se muestran en la figura 2.27.
2. Trucos sobre las características incorporadas en Excel 115

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.

Trucar las características de fecha y hora de Excel


Las características de fecha y hora de Excel son estupendas si crea hojas de
cálculo sencillas, pero pueden causar problemas para proyectos más
avanzados. Por suerte, existen formas de evitar estos problemas.

Excel, de forma predeterminada, utiliza el sistema de fecha 1900. Esto signifi-


ca que la fecha 1 de enero de 1900 tiene un valor numérico de 1, la fecha 2 de
enero de 1900 un valor numérico de 2, y así sucesivamente. A estos valores se les
llama "valores en serie" en Excel y permiten utilizar fechas en los cálculos.
Con las horas ocurre prácticamente lo mismo, aunque Excel las trata como
fracciones decimales, siendo 1 la representación de 24:00 ó 00:00 y, por ejemplo,
0, 75 la representación de las 18:00, ya que esta hora representa los tres cuartos
de las 24 horas del día.
Para ver el valor numérico de u n a fecha y / o una hora, asigne el formato Ge-
neral a la celda que contenga dicho valor. Por ejemplo, la hora y fecha 3 de julio
de 2002 15:00:00 tiene un valor numérico de 37.440,625, siendo el número 625
la representación de la hora y el 3 7.440 el número de serie para la fecha.

Sumar más allá de las 24 horas


Puede sumar horas utilizando la función SUMA (o simplemente el signo +).
De esta forma, la función =SUMA(A1 :A5) sería el resultado total de horas, en
caso de que dichas celdas tuviesen valores válidos. Sin embargo, aquí nos encon-
tramos un gran problema: a menos que se diga lo contrario, Excel no sumará
más allá de las 24 horas. Esto es debido a que cuando u n a hora excede el valor de
24 horas (un valor verdadero de 1), entonces se convierte en un nuevo día y
comienza de nuevo. Para obligar a Excel a que no pase a un nuevo día después de
las 24 horas, puede utilizar un formato de celda de 37:30:55 o bien un formato
personalizado de [h]:mm:ss.
2. Trucos sobre las características incorporadas en Excel 117

Puede utilizar un formato similar para obtener el total de minutos o segun-


dos de u n a hora en particular. Para obtener el n ú m e r o total de minutos de la
hora 24:00, por ejemplo, asigne el formato [m] a la celda y obtendrá un resulta-
do de 1440. Para obtener el n ú m e r o total de segundos, utilice un formato perso-
nalizado [s], con lo que obtendrá 86.400.

Cálculos de fecha y hora


Si desea utilizar estos valores reales de hora en otros cálculos, tenga siempre
en mente estos números "mágicos":

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

Para conseguir lo contrario, es decir, u n a hora decimal a partir de u n a hora


real, utilice esto:
Al*24

Si u n a celda contiene la fecha y hora real (por ejemplo 22 de enero de 2003


15:36) y sólo desea obtener la fecha, utilice esto:
=ENTERO(Al)

Para obtener solamente la hora, utilice esto:


=A1-ENTERO(Al)
118 Excel. Los mejores trucos

o bien

=RESIDU0(A1;1)

y aplique el formato que sea necesario. Para averiguar la diferencia entre a m -


bas fechas, utilice esto:
A1-A2

Siendo Al la fecha posterior y A2 la fecha anterior. El resultado que obtendre-


mos será el número de días transcurridos entre ambas fechas. Para que funcione
correctamente, la celda que contenga este cálculo debe tener formato numérico,
ya que de lo contrario, obtendremos un error. Si no sabe cuál de las dos fechas es
la más antigua, puede utilizar las funciones MIN y MAX. Por ejemplo, para ase-
gurarse de que el resultado es el correcto, utilice esto:
=MAX(A1;A2)-MIN(Al;A2)

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)

Para añadir un mes a u n a fecha almacenada en la celda A l , escriba:


= FECHA(AÑ0(A1) ; MES ( A l ) + 1 ; D Í A ( A l ) )

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.

Horas y fechas reales


Aveces, las hojas de cálculo con datos importados (datos que se h a n introdu-
cido incorrectamente) acaba mostrando las fechas y las horas como texto y no
como números reales. Puede solventar esto fácilmente en Excel aumentando el
ancho de las columnas un poco. Para ello, seleccione u n a columna, vaya a
Formato>Celdas>Alineación y luego cambie la alineación horizontal a General
(que es el formato predeterminado para las celdas). Haga clic en Aceptar y ob-
serve cuidadosamente las fechas y las horas. Si no están correctamente alinea-
das, entonces es porque Excel no sabe que son fechas.
Para arreglar esto, primero copie u n a celda vacía y luego seleccione la colum-
na dándole formato de fecha y / o hora. Teniendo la columna seleccionada, vaya a
Edición>Pegado especial, seleccione las opciones Valores y Sumar. Esto obliga a
Excel a convertir cualquier fecha u hora en formato texto a fecha y hora real.
Puede que necesite cambiar el formato nuevamente. Otro método también senci-
llo es hacer referencia a las celdas de esta forma:

=Al + 0

o bien

=A1*1

¿Un fallo de fechas?


Excel asume, de forma incorrecta, que 1900 no fue un año bisiesto. Esto sig-
nifica que el sistema interno de fechas de Excel cree que existió el 29 de febrero de
1900, cuando en realidad no fue así. Lo más sorprendente es que Microsoft hizo
esto de forma intencionada, o al menos eso dicen. Puede encontrar más informa-
ción en la dirección http://support.microsoft.com/default.aspx?scid=kb;EN-
US;ql81370. A continuación le presentamos algunos vínculos interesantes con
información referente a fechas y horas:
• Cómo utilizar fechas y horas en Excel 2 0 0 0 :
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q214094#6
• Texto o número convertido al formato numérico no deliberado:
http://support.microsoft.com/default.aspx?scid=kb;en-us;Q214233
120 Excel. Los mejores trucos

• Horas máximas en Microsoft Excel:


http://support.microsoft.com/default. aspx?scid=kb;en-us;Q214386
• Fechas y horas mostradas como números de serie cuando se visuali-
zan fórmulas:
http://support.microsoft.com/default. aspx?scid=kb;en-us;Q241072
• Manipular y comprender las configuraciones del cuadro de diálogo
Formato de celdas:
http://support.microsoft.com/default.aspx?scid=kb;en-us;a264372
• Cómo utilizar fechas y horas en Microsoft Excel:
http://support.microsoft.com/default.aspx?scid=kb;en-us;214094

Probablemente, el tratamiento de fechas y horas es u n o de los aspectos más


confusos de Excel. De todas formas, con toda esta información podrá entender
mejor todos los entresijos en relación a este tema.
CAPÍTULO 3

Trucos sobre nombres


Trucos 39 a 44

Probablemente la m a y o r ventaja de utilizar rangos con nombre es que las


fórmulas son mucho más fáciles de leer y comprender, no sólo para usted, sino
para todos aquellos que tengan que trabajar con sus hojas de cálculo. Al utilizar
rangos con nombres (una de las características más fáciles y útiles de Excel),
puede seleccionar un rango de celdas y darle un hombre específico. Llegados a ese
punto, puede hacer u n a referencia a ese rango utilizando el nombre en vez de su
dirección. A pesar de que los rangos con nombre son u n a característica m u y
potente, podemos ir más allá de su uso estándar mediante algunos métodos.

m Usar direcciones de datos por el nombre


Aunque los números de celda son el fundamento de todo lo que hace Excel,
resulta mucho más sencillo recordar nombres, como por ejemplo "Número
y cantidad de elementos", que recordar los números de celdas, como por
ejemplo A1:A100. Excel nos permite hacer esto de forma muy sencilla.

Excel utiliza la misma técnica para definir nombres de celdas y de rangos:


mediante el Cuadro de nombres que está situado en la parte superior izquierda
de la ventana, j u n t o a la barra de fórmulas. Para dar nombre a u n a celda, selec-
ciónela, escriba el nombre que desee darle en el Cuadro de nombres (véase figura
3.1) y pulse Intro. Para dar nombre a un rango de celdas, seleccione primero el
rango, escriba el nombre que desee darle en el Cuadro de nombres y luego pulse
la tecla Intro.
La lista desplegable que aparece a la derecha del Cuadro de nombres le permite
buscar nombres de rangos y celdas que ya estén almacenados. Si selecciona m a -
124 Excel, Los mejores trucos

nualmente un rango que ya tuviese un nombre, aparecerá dicho nombre en lu-


gar de la referencia al rango de celdas.

IffM^.^c^.i^N^^w^MHMBPiMiMii i i lili iiiiPiiiwn


«^j Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? - & X j

J J d J» _J J J. ¥ ¿> -J * - gg ^,, 2: - i i kg kt> | j


Anal
- io ^ N ^ $ =: =: := ^ c IF _ - -^ - AT £!
MiCeldaFavorita • £ 1000000 *1
r — A "" ' B T "~C D | — =
1 [Celda muy interesante— -> 1 1.000,000 €1 —
| 2 '
3
4
5
6
7
8
9 _J
10
11
12
13
14
|l< 4 • w \ H o j a l / H o j a 2 / H o j a 3 / | <» | j • | f|
Listo NUM 1

Figura 3.1. Dar el nombre "MiCeldaFavorita" a una celda.

En las fórmulas puede utilizar estos nombres en vez de los identificadores de


celdas o rangos. Si, por ejemplo, le dio el nombre "fecha" a la celda E4, podría
escribir la fórmula =f e c h a en vez de =E4. De forma similar, si creó el nombre
"cantidad" para el rango de celdas A3:A10 y quisiera obtener el total de los valo-
res almacenados en ellas, la fórmula podría ser =SUMA ( c a n t i d a d ) en vez de
= SUMA(A3:A10).
Dado que las hojas de cálculo se van haciendo más y más grandes e intrinca-
das, resulta vital utilizar nombres de celdas y rangos para hacerlas manejables.

Utilizar el mismo nombre para rangos en diferentes


hojas de cálculo
A veces resulta conveniente utilizar el mismo nombre para los datos que se
encuentran en el mismo lugar, pero en diferentes hojas, dentro de un
mismo libro. Ello requiere de unos cuantos pasos adicionales para que
pueda funcionar.

Normalmente, cuando da nombre a un rango, éste se asigna a nivel del libro,


lo que significa que un nombre se refiere a un rango específico de u n a hoja en
particular que esté situada dentro de un libro. Una vez asignado el nombre, no
3. Trucos sobre nombres 125

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

Estando en la celda Al 1, introduzca la siguiente fórmula:


=SUMA(MisNúmeros)

En la celda Bl 1 introduzca esta fórmula:


= SUMA(Mi sNúme r o s )

Debería obtener los resultados 55 y 10, respectivamente. Esto es debido a que


la celda A l l estaba activa cuando seleccionó lnsertar>Nombre>Definir y asignó
al nombre de rango la referencia A $ l :A$10, que es u n a columna relativa y u n a
fila absoluta.

> El signo del dólar ($) obliga a que cualquier rango sea absoluto.

Cuando utilizamos el nombre "MisNúmeros" en u n a fórmula, siempre hará


referencia a las 10 celdas que se encuentran inmediatamente por encima de la
fórmula. Si escribimos la fórmula =SUMA (MisNúmeros) en la celda Al 1 de cual-
quier otra hoja, seguirá haciendo referencia a las celdas A1:A10 de la hoja que
estaba activa cuando creó el nombre del rango.
Supongamos que desea simplificar la suma de las 10 celdas que hemos men-
cionado anteriormente. Seleccione la celda A l l de cualquier hoja. Vaya a
lnsertar>Nombre>Definir y escriba en el cuadro de texto de la parte superior
"MiSuma". Luego en el cuadro de texto Se refiere a escriba lo siguiente:
=SUMA(A$1:A$10)

Haga clic en A g r e g a r y luego en Aceptar. Ahora introduzca el número 1 en


la celda A l , selecciónela de nuevo, coloque el cursor del ratón sobre el cuadro de
propagación y mientras mantiene pulsada la tecla Control, arrástrelo hasta la
celda A10. Una vez hecho esto, introduzca un 1 en la celda Bl y propagúelo
hasta la celda B10, pero esta vez sin mantener pulsada la tecla Control.
En la celda Al 1, introduzca la siguiente fórmula:
=MiSuma

En la celda Bl 1 introduzca la fórmula:


=MiSuma

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

QnKjQI Crear funciones personalizadas utilizando nombres


M ^ V ^ w ^ l Aunque hacer referencia a datos por su nombre es muy útil, a veces lo sería
K l f l más si pudiésemos almacenar un valor constante o incluso una fórmula,
especialmente si ha estado creando funciones personalizadas en VBA.

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)

Luego haga clic en A g r e g a r y en Aceptar.


Introduzca cualesquiera 10 números en cualquier columna, empezando en la
fila 1. Ahora vaya a la fila 11 de la misma columna y escriba lo siguiente:

=Total

El nombre "Total" automáticamente devolverá la SUMA de los 10 valores que


haya introducido en el rango A1:A10. Si desea crear una fórmula similar a la
anterior, pero que no esté restringida a solamente 10 celdas, sino que haga refe-
rencia a todas las celdas que se encuentren por encima de la fila en cuestión, siga
estos pasos.
Seleccione la celda BU y luego vaya a lnsertar>Nombre>Definir. Seleccione el
nombre Total.
128 Excel. Los mejores trucos

Vaya al c u a d r o de t e x t o Se refiere a, que debería c o n t e n e r el t e x t o


=SUMA ( B l : B l 0 ) . Esto le permite crear fórmulas con nombre. En otras palabras,
como no hizo referencias absolutas para columna en el nombre original Total,
siempre hará referencia a la columna en la que se utilice el nombre.
Ahora haga clic en el cuadro de texto Se refiere a y cambie la fórmula por la
siguiente:
=SUMA(B$1:B10)

Haga clic en A g r e g a r y luego en Aceptar.


Seleccione cualquier fila de cualquier columna que no sea la fila 1 e introduz-
ca = T o t a l , con lo que obtendrá automáticamente la SUMA de todas las celdas
que se encuentran por encima, independientemente de cuantas filas haya. Esto
se debe a que ha vinculado la fila n ú m e r o 1 utilizando u n a referencia absoluta,
dejando la referencia a la celda B10 como relativa, lo que significa que siempre
terminará en la celda inmediatamente superior a donde se introduzca la fórmula
=Total.
Combinando este truco con u n a de las características estándar (aunque poco
conocida) de Excel, el método de la intersección, es posible crear funciones de
búsqueda sofisticadas. Si no conoce cómo funciona el método de la intersección,
a continuación mostramos un pequeño ejemplo sobre su uso.
En la celda A l , introduzca el encabezado "Nombre", en la celda Bl, "Pagar" y
en la celda Cl, "Título". Introduzca "Juan" en la celda A2 y "Antonio" en la celda
A3. Introduzca 10 en la celda B2 y 20 en la celda B3. Introduzca "Sr." en la celda
C2 y "Dr." en la celda C3. Ahora, seleccione el rango A1:C3 y luego vaya a
lnsertar>Nombre>Crear. Asegúrese de que están activadas las casillas de verifica-
ción Fila superior y Columna izquierda, y luego haga clic en Aceptar.
Seleccione cualquier celda que esté fuera de ese rango e introduzca = A n t o -
n i o T í t u l o . Debería obtener el título correspondiente a la persona que ha in-
troducido.

. El espacio entre las palabras Antonio y Título es importante, ya que


\r es la forma por la que Excel entiende que se trata de un operador de
^\ intersección.

Basándonos en este concepto, podemos combinar esta característica con las de


fórmulas con nombre de Excel, para conseguir no sólo que las hojas de cálculo
sean más sencillas utilizar, sino también mucho más sencillas de leer y compren-
der. Supongamos que tiene u n a tabla configurada en u n a hoja de cálculo de for-
ma m u y similar a la que se muestra en la figura 3.2, y que está utilizando esa
tabla para crear los nombres en Excel.
3. Trucos sobre nombres 129

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

• M\Hojal^Hoja2/Hpja3J/ " J<J. l\f


5uma=i38,4

Figura 3.2. La tabla y el cuadro de diálogo de Crear nombres.

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

La tarifa por hora para Antonio se devolverá automáticamente.


Quizá desee experimentar ahora con las intersecciones para ver cómo funcio-
n a n de forma óptima en sus proyectos.

Crear rangos que se expandan y contraigan


Si constantemente necesita actualizar y añadir información a los datos, o si
trabaja con gráficos y tablas dinámicas, deseará poder crear rangos dinámicos
con nombre, que se expandan y contraigan en función de los datos.

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

^§] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana

J .J d J> _JI J JL ¿* ¿ - J ^ - J -i - 81 * >li í i M *•


* • • • 2íJ ^ 1 % 000 €
B12 - f*
B D
Nombre e m p l e a d o Tarifa *¿£
Carlos Martínez iSi
Antonio García Nombres en el libro:
María Solans
TarifaHoraAntonio
Sergio Velasco
Guillermo_Ortega
Silvia Rodríguez Javier_Pérez
Ángel Blanco María_Solans Agregar
Esther Carrasco Nombre_empleado
Puesto
Javier Pérez 5ergio_Velasco
Ana Rebollo 5ilvia_Rodriguez
Guillermo Ortega Tarifa Hora

|=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)

Ahora haga clic en A g r e g a r y luego en Aceptar.

Cuando defina el rango para CONTARA, evite la tentación de incluir


toda la columna de datos, para así no obligar a dicha función a contar
^\, miles de celdas innecesarias.

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.

Recuerde que la función CONTARA contará todas las celdas que no


estén vacías. Tenga en cuenta que esto también incluye las fórmulas
que dichas celdas contenga, que puedan estar devolviendo un texto
vacío ("").

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

Figura 3.4. Tabla dinámica de datos y el cuadro de diálogo Definir nombre.

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)

en el mismo conjunto de números que mostrábamos de la figura 3.5, la fun-


ción COINCIDIR devolverá el n ú m e r o 10, que representa la fila 10 de la columna
3. Trucos sobre nombres 133

A. Ha devuelto 10 porque le hemos dicho a la función que encuentre el n ú m e r o 6


en el rango Al :A100.

Agregar |

Qiminar

Se refiere a:
=DE5REF(Hoja2!$A$l;0;0;CONTAR(Hoja2!$A$l :$A$100); 1)| 31

l< i • " • l l V H o } a l " \ H o i a 2 / H Q j a 3 Z LíL JID


Figura 3.5. Un rango de números y cuadro de diálogo Definir nombre.

Obviamente, cuando utilicemos esta función como parte de un rango dinámi-


co con nombre, lo más probable es que no conozcamos el último n ú m e r o del
rango. Por tanto, necesitamos decirle a la función COINCIDIR que intente buscar
un número exageradamente alto en el rango, que nunca podría existir, y cam-
biar el último argumento de la función por 1.
El ejemplo anterior, le dijimos a la función COINCIDIR que encontrarse el n ú -
mero exacto 6, ni más ni menos. Ahora, si reemplazamos el 0 por 1 en el último
argumento de la función, estamos indicándole que busque el valor más alto que
sea menor o igual que el valor indicado.
Para ello, utilice esta fórmula:

=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.

Para hacer esto, reemplace la función COINCIDIR con la siguiente:


COINCIDIR("*";$A$1:$A$100;-1)

Esto siempre devolverá el n ú m e r o de fila de la última entrada de texto situada


en el rango $A$1:$A$100.
Ahora que ya sabe cómo hacer esto para entradas numéricas y de texto, es
lógico que necesite definir de alguna forma un rango dinámico con nombre que
sea capaz de buscar más allá de las celdas en blanco en u n a lista que contenga
tanto texto como números.
Para poder hacer esto, primeramente insertados celdas en blanco por encima
de la lista, seleccionando las filas 1 y 2 y luego seleccionando la opción lnsertar>Fila.
En la primera fila, añada esta función:
=MAX(COINCIDIR("*";$A$3:$A$100;-1);COINCIDIR(1E+306;$A$3:$A$100;1))

En la celda inmediatamente por debajo, introduzca el número 1. La celda por


debajo de ella debe contener un encabezado de texto para la lista. Hemos añadido
el número 1 de forma que la segunda función COINCIDIR no devuelva # N / A
cuando no haya números en el rango A3:A100. Esta segunda función siempre
encontrará el texto, porque disponemos de un encabezado.
Déle el nombre "FilaMax" a la celda Al y luego seleccione lnsertar>Nombre>
Definir. De un nombre al rango dinámico, como por ejemplo "MiLista" y en el
cuadro de texto Se refiere a, introduzca los siguiente, tal y como se muestra en
la figura 3.7:
= DESREF(Hoj a2!$A$ 3;0;0;Fi1aMax;1)
3. Trucos sobre nombres 135

•.Jal -1
- ^ j Archivo Edición Ver Insertar Formato Herramientas Datos Ventana _ fi" x

A3 £ =MAX(CQINCIDIR("*"; $A$3:$A$100;-1); COINCIDIR(1 E+3QG;$A$3:$A$100; 1))

±£ 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.

Expandir tantas filas como entradas numéricas haya

En el cuadro de texto Se refiere a, introduzca los siguiente:


=DESREF($A$1;0;0;CONTAR($A:$A);1)

Expandir tantas filas como entradas de texto y numéricas haya

En el cuadro de texto Se refiere a, introduzca los siguiente:


=DESREF($A$1;0;0;CONTARA($A:$A);1)

Expandir hasta la última entrada numérica

En el cuadro de texto Se refiere a, introduzca los siguiente:


= DESREF($A$1;0;0;COINCIDIR(1E + 3 06/$A:$A) )
136 Excel. Los mejores trucos

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.

Expandir hasta la última entrada de texto

En el cuadro de texto Se refiere a, introduzca los siguiente:


=DESREF($A$1;0;0;COINCIDIR("*";$A:$A;-1))

Expandir basándose en el valor de otra celda

Introduzca el número 10 en la celda Bl y luego, en el cuadro de texto Se


refiere a, introduzca los siguiente:
=DESREF($A$1;0;0;$B$1;1)

Hora cambie el número en la celda Bl, y el rango cambiará de acuerdo a ello.

Expandir una fila por cada mes

En el cuadro de texto Se refiere a, introduzca los siguiente:


=DESREF($A$1;0;0;MES(HOY());1)

Expandir una fila por cada semana

En el cuadro de texto Se refiere a, introduzca los siguiente:


=DESREF($A$1;0;0;NUM.DE.SEMANA(HOY());1)

Esta última requiere que el paquete de análisis esté instalado. Para ello, debe
seleccionarlo en la opción Herramientas>Complementos.

Anidar rangos dinámicos para obtener


una flexibilidad máxima
Un rango dinámico con nombre que reside dentro de otro rango dinámico
con nombre puede ser muy útil cuando tengamos que trabajan con grandes
listas de nombres, por ejemplo.

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

Haga clic en Agregar. Nuevamente haga clic en el cuadro de texto Nombres


en el libro e introduzca "NombresJ" (o podría ser cualquier otra letra que desee) y
luego haga clic en Se refiere a e introduzca lo siguiente:
=DESREF(INDIRECTO(DIRECCIÓN(COINCIDIR(»J* ' ;Nombres;0)+1;1));0;0;
CONTAR.SI(Nombres;»J*n);1)

donde "J*" es el criterio de coincidencia que deseamos en este caso, es decir,


aquellos nombres que comienzan por J. Ahora haga clic en Agregar. Cuando
haga clic en el cuadro de texto Se refiere a en el que se encuentra la función,
todos los nombres que comienzan por la letra J tienen u n a marca a su alrededor,
tal y como se muestra en la figura 3.8.
A
:
Nombres JSi
Al ex Nombres en el libro;
Ana
NombresJ
David
Guadalupe -3
paime Agregar
«Javier
8 «Juan EJMnar
9 'Caída
10 Luis
11 Mar J
12 Marta
13 Sandra
| S=DE5REF(INDIRECTO(DIRECCION(COINCIDIRf" J*"; Nombres; 0)+1.; 1)); 0; 0; ^J
14 Santos
1 5 S o n i a -—••••- "-••--• ••• -

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)

Haga clic de nuevo en el cuadro de texto Nombres en el libro y escriba


"NombresDeLetra". Luego, en el cuadro de texto Se refiere a, introduzca la si-
138 Excel. Los mejores trucos

guiente fórmula, y cuando haya terminado, haga clic en Agregar y luego en


Aceptar:

=DESREF(INDIRECTO(DIRECCIÓN(COINCIDIR(Letra;Nombres;0)+1;1));0;0;
CONTAR.SI(Nombres/Letra);1)

El resultado debería ser como el de la figura 3.10.

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

r" Aplicar estos cambios a otras celdas con la misma configuración

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.

Identificar rangos con nombre en una hoja


de cálculo
Excel permite a los usuarios asociar nombres representativos a rangos
específicos dentro de las hojas de cálculo. A medida que el número de
diferentes rangos con nombre crezca en la hoja de cálculo, necesitará
algunas herramientas para poder identificar las áreas que son referenciados
por dichos rangos con nombre.

A continuación veamos un par de métodos rápidos que puede utilizar para


identificar las áreas que son referenciadas por cada rango con nombre.

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

• J U Í J Í J Ja ^ a * ;* :& - y ->. . B ^ Z ^ I Ü I Ü *} •*- |


Arial
. - 10 - N ¿T S » S 3 ^ ¿§ % 000 € *g§ pE L_ - ^ .& ' I
A1 <r fx Días
B .__D . .__! E _ J F _G__*Tí
JL [Días |=Hoja1!$DJ2:$D$24
Meses '"=Hoja1!$F$6:$K$9
2
"I Miembros
Mis totales
=Hoja1!$C$4:$C$27
=Hoja1!$G$12:$G31
i
AJ
JJ
7! Pegar nombre:
V
_. .j [Pías....
Meses
Miembros
-m
Misjtotales
Si
J2J
11- zl
15 i Pegar lista I J Cancelar

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.

á] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? - f l X

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
(/)

M i •" M j V H o j a l / H o j a 2 / Hoja3 / til •ir


Listo

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

Trucos sobre tablas


dinámicas
Trucos 45 a 49

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.

Tablas dinámicas: un truco en sí mismas


Las tablas dinámicas son una de las características más potentes e
impresionantes de Excel, un truco muy ingenioso en sí mismo y que
requiere cierta experimentación para poder comprender.

Utilizaremos con frecuencia las tablas dinámicas cuando desarrollemos hojas


de cálculo para nuestros clientes. Una vez que un cliente vea u n a tabla dinámica,
a partir de entonces siempre nos pedirá que si le podemos crear u n a para ellos
144 Excel. Los mejores trucos

mismos. Aunque cualquiera puede crear u n a tabla dinámica, por desgracia m u -


chas personas tienen miedo de hacerlo, porque ven que puede ser m u y complejo.
De hecho, cuando utilice u n a tabla dinámica por primera vez, el proceso puede
parecer algo engorroso. Por ello, está claro que es necesaria cierta persistencia.
Descubrirá que esa persistencia merecerá la pena u n a vez que experimente la
mejor característica de las tablas dinámicas: su capacidad de ser manipulada
mediante prueba y error e inmediatamente mostrar los resultados de dicha m a -
nipulación. Si el resultado que obtiene no es el esperado, puede utilizar la fun-
ción Deshacer de Excel e intentar otra cosa nueva. Haga lo que haga, nunca
estará cambiando la estructura de la tabla original, por lo que no tendrá que
preocuparse.

¿Por qué se les llama tablas dinámicas?


Las tablas dinámicas le permiten organizar los datos utilizando técnicas de
arrastrar y colocar y luego obtener los resultados de forma inmediata. Las tablas
dinámicas son interactivas: u n a vez que la tabla esté completa, podrá ver fácil-
mente cómo la información se ve afectada cuando mueve los datos dinámicamente.
Esto resultará m u y claro u n a vez que pruebe las tablas dinámicas.
Incluso para los desabolladores experimentados de tablas dinámicas, un ele-
mento de prueba y error siempre es necesario a la hora de producir los resultados
deseados, i Al final, se encontrará a sí mismo manejando dinámicamente su tabla
con frecuencia!

¿Para qué cosas resultan buenas las tablas dinámicas?


Las tablas dinámicas pueden producir información de resumen para u n a ta-
bla con datos. Imagine que tiene u n a tabla con información que contiene n o m -
bres, direcciones, edades, puestos, números de teléfono y códigos postales. Con
u n a tabla dinámica, podrá encontrar fácil y rápidamente cosas como las que le
mostramos a continuación:

• Cuántas personas tienen el mismo nombre.


• Cuántas personas comparten el mismo código postal.
• Cuántas personas ostentan el mismo puesto.

También podría obtener información como esta:

• Un listado con las personas que tienen el mismo puesto.


• Un listado de aquellas direcciones con el mismo código postal.
4. Trucos sobre tablas dinámicas 145

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.

¿Por qué utilizar tablas dinámicas cuando las hojas de cálculo ya


ofrecen muchas funciones de análisis?
Quizá la ventaja m a y o r de utilizar tablas dinámicas es el hecho de que puede
generar y extraer información m u y útil a partir de u n a tabla m u y grande de
datos en cuestión de minutos y sin tener que utilizar gran cantidad de memoria
del ordenador. En muchos casos, podría obtener los mismos resultados de u n a
tabla utilizando las funciones incorporadas de Excel, pero le llevaría más tiempo
y utilizar más memoria.
Otra de las ventajas de utilizar tablas dinámicas es que si desea tener alguna
información nueva, simplemente basta con arrastrar y colocar. Además, puede
optar por tener la información actualizada cada vez que abre el libro o hace clic
en Actualizar.

Los gráficos dinámicos como extensión de las tablas dinámicas


Microsoft ya introdujo los gráficos dinámicos en Excel 2000. La tabla que
genera a través del Asistente para tablas dinámicas también produce un gráfico
dinámico (o más bien u n a tabla dinámica y un informe de gráfico dinámico).
Cuando crea u n a tabla dinámica, también puede crear un gráfico dinámico al
mismo tiempo, sin ningún esfuerzo extraordinario. Los gráficos dinámicos le
permiten crear gráficos interactivos que antes eran imposibles, a menos que se
utilizara VBA o los controles de Excel.
Veremos, más detalle el Asistente para gráficos dinámicos más adelante, en
este mismo capítulo.

C& Los gráficos dinámicos no están disponibles en la versión de Excel para


^^. Macintosh.

Crear tablas y listas para ser utilizadas en tablas dinámicas


Cuando crea u n a tabla dinámica debe organizar el conjunto de datos que está
utilizando en u n a tabla y / o en u n a lista. Dado que las tablas dinámicas basan
todos sus datos en esta tabla o lista, es de vital importancia que configure dichas
tablas y listas de forma uniforme. En este contexto, u n a tabla no es más que u n a
lista que tiene un título, que tiene más de u n a columna con datos y que tiene
146 Excel. Los mejores trucos

diferentes encabezados para cada u n a de esas columnas. A menudo, se hace refe-


rencia a un listado en el mismo contexto en el que crea u n a tabla. Las mejores
prácticas que se deberían aplicar a la hora de configurar un listado le a y u d a r á n
enormemente cuando necesite generar u n a tabla dinámica para los datos.
Cuando se extraen datos a través del uso de funciones de búsqueda o de base
de datos, se puede ser algo menos exigente a la hora de configurar la tabla o la
lista. Esto es debido a que siempre puede compensar esa carencia con la ayuda de
u n a función, obteniendo al final los resultados deseados. De todas formas, siem-
pre será más sencillo si configura las tablas o las listas de la forma más clara
posible. Las características incorporadas de Excel presuponen mucho acerca de la
configuración y la distribución de los datos. Aunque ofrecen cierto grado de fle-
xibilidad, m u y a menudo encontrará que es más sencillo todo si se ajusta a la
siguiente guía a la hora de configurar dichas tablas o listas:

• Es necesario la utilización de encabezados, ya que las tablas dinámicas los


utilizarán para dar nombre a los campos. Dichos encabezados deberían
aparecer siempre en la fila inmediatamente superior a la que se encuentra
los datos. Además, nunca dejé u n a fila en blanco entre los datos y los
encabezados. Más aún, haga que los encabezados sean diferentes de algu-
na manera, por ejemplo, poniéndolos en letra negrita.
• Al menos deje tres filas en blanco por encima de los encabezados. Podrá
utilizarlos para fórmulas, datos críticos, etc. En cualquier caso, siempre
podrá ocultar dichas filas si así lo desea.
• Si tiene más de u n a listado tabla en la misma hoja de cálculo, deje al me-
nos una columna en blanco entre cada lista o tabla. Esto ayudará a Excel a
reorganizarlas como entidades diferentes. Sin embargo, si esas listas y ta-
blas están relacionadas unas con otras, entonces es mejor que las combine
en u n a única tabla más grande.
• Evite tener celdas en blanco dentro de los datos. En vez de dejar celdas en
blanco para indicar datos repetidos en u n a misma columna, repita el dato
tantas veces como sea necesario.
• Ordene la lista o los datos, preferiblemente por la columna situada más a
la izquierda. Esto hará que los datos sean más sencillos de leer y de inter-
pretar.

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

que se configura la distribución de los datos en el asistente, en el que se mues-


t r a n los campos opcionales Página, Fila y Columna, así como el campo obligato-
rio Datos.

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.

El Asistente para tablas dinámicas y gráficos dinámicos


Como ya mencionamos anteriormente, para ayudar a los usuarios a crear
tablas dinámicas, Excel ofrece un asistente para tablas dinámicas y gráficos di-
námicos. Este asistente le guiará a través de los pasos para crear la tabla dinámi-
ca utilizando un proceso consistente en cuatro pasos, en los que le dirá a Excel
las siguientes cosas:

• Cómo están configurados los datos y si desea crear un gráfico dinámico


asociado (en caso de que estén disponibles en la versión que esté utilizan-
do de Excel).
• Dónde están almacenados los datos, por ejemplo, un rango de celdas en el
mismo libro, u n a base de datos, otro libro, etc.
• Qué columnas de datos van en cada campo: los campos opcionales Pági-
na, Fila y Columna, así como el campo obligatorio Datos.
• Dónde colocar la tabla dinámica (por ejemplo, en u n a nueva hoja o en la
ya existente).
148 Excel. Los mejores trucos

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.

Q M 9 Compartir tablas dinámicas pero no sus datos


M ^ P f f T ^ I Crearemos una imagen de la tabla dinámica que no necesita de la
^ H M ^ H estructura de datos subyacente.

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

barra de herramientas Tabla dinámica, despliegue el m e n ú Tabla dinámica y lue-


go vaya a la opción Seleccionar>Toda la tabla. Una vez hecho esto, mantenga
pulsada la tecla M a y ú s y entonces vaya a Edición>Copiar imagen. En el cuadro
de diálogo que aparecerá, elija las opciones tal y como se muestran en la figura
4.2 y luego haga clic en A c e p t a r .

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.

Finalmente, haga clic en cualquier lugar fuera de la tabla dinámica y seleccio-


ne Edición>Pegar. Acabará teniendo u n a imagen a todo color y con formato de la
tabla dinámica, tal y como se muestra en la figura 4.3. Esto puede ser m u y útil,
especialmente si tiene que mandar la tabla dinámica por e-mail a otras personas,
para que puedan verla. Tendrán la información que necesitan, incluyendo todos
los formatos que sean relevantes, y todo ello con un t a m a ñ o del archivo que será
menor. Sin embargo, no podrán manipular los datos. De igual forma, sólo p o -
drán ver aquello que desee que vean.
También puede utilizar este método de tomar u n a imagen para un rango de
celdas. Puede seguir los pasos que hemos indicado anteriormente o puede utili-
zar la herramienta que proporciona el pequeño icono en forma de cámara situa-
do en la barra de herramientas.
Para utilizar este último método, vaya a Ver>Barras de herramientas>Persona-
lizar. En el cuadro de diálogo, haga clic en la pestaña Comandos, luego seleccione
la opción Herramientas en la lista de categorías y en el cuadro de lista de la parte
derecha desplácese hasta que encuentre la opción Cámara. Haga clic en ella y
arrástrela hasta aquella barra de herramientas en la que desee mostrarla. Ahora
seleccione un rango de celdas, haga clic en el icono de la cámara y luego haga clic
en cualquier lugar de la hoja, con lo que obtendrá u n a imagen vinculada de
150 Excel. Los mejores trucos

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.

Automatizar la creación de tablas dinámicas


Los pasos que debe seguir para crear una tabla dinámica requieren de un
cierto esfuerzo, y a menudo, dicho esfuerzo resulta redundante. Con un
poco de código VBA, podrá crear tablas dinámicas de forma automática.

Las tablas dinámicas son u n a característica m u y potente e inteligente para


ser utilizadas con datos que están almacenados en u n a lista u n a tabla. Por des-
gracia, el esfuerzo para crear u n a tabla dinámica es suficiente como para disua-
dir a algunas personas a que experimenten con ello. Aunque la configuración de
algunas tablas dinámicas puede ser m u y complicada, la mayoría de ellas pueden
ser creadas de forma rápida y sencilla. Dos de las preguntas más frecuentes en
Excel tienen que ver con cómo obtener la cuenta de todos los elementos de u n a
lista y cómo crear u n a lista de elementos únicos a partir de u n a lista que contie-
ne muchos datos duplicados. En este apartado, le mostraremos cómo crear u n a
tabla dinámica rápida y fácilmente que resuelva estas tareas.
Supongamos que tiene u n a larga lista de nombres en la columna A, siendo la
celda Al el encabezado. Desea conocer cuántos elementos hay en la lista, así
como generar un listado con los elementos únicos. Para ello, seleccione la celda
Al (el encabezado) y luego vaya a Datos>Informe de tablas y gráficos dinámicos
(en las versiones para Macintosh Datos>lnforme de tablas dinámicas) para abrir
el asistente.
4. Trucos sobre tablas dinámicas 151

Asegúrese de que o bien tiene seleccionada la opción Lista o base de datos de


Microsoft Excel o bien ha seleccionado u n a única celda dentro de los datos. Esto
permitirá a Excel detectar automáticamente los datos subyacentes que se van a
utilizar posteriormente. Si está utilizando la versión de Windows, seleccione la
opción Tabla dinámica en la parte inferior del cuadro de diálogo. Haga clic en el
botón Siguiente y el asistente debería haber tomado automáticamente el rango
correcto para los datos situados en la columna A (de hecho, los marcará en la
hoja). Si es así, haga clic en el botón Siguiente. En caso contrario, utilice el ratón
para seleccionar el rango correcto. Ahora haga clic en el botón Diseño y arrastre
al área DATOS los que serán sólo campos (debería ver el título que aparece en la
celda A l ) . Arrastre el campo nuevamente, pero esta vez al área FILA. Con ello, la
pantalla debería quedar como la que se muestra la figura 4.4. A continuación
haga clic en Aceptar.

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

. 1tí • Suma +. Ocultar j


19
Promedio Número,.,
20 Max Ayuda j | Aceptar | Cancelar j
21 Mín
22 Producto
Contar números Jü
H 4 l«l ! •ir
Figura 4.4. Cuadros de diálogo Campo de la tabla dinámica y Asistente para tablas
y gráficos dinámicos.

Llegados a este punto, si lo desea puede hacer doble clic en el botón de


CL campo situado en el área DATOS (que tendrá la etiqueta "Cuenta de
v^\^ nombres", como puede verse la figura 4.3) y cambiar, en el cuadro de
lista Resumir por, la opción seleccionada por cualquier otra (por
ejemplo, Suma, Promedio, etc). De forma predeterminada, Excel utiliza
la función CONTAR si está trabajando con texto, y la función SUMA si
está trabajando con números.

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.

^. Si ordena lista se eliminarán rápidamente las 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

trabajo de configuración de la tabla dinámica se realizará en un abrir y cerrar de


ojos.

Q ^ Q Mover los totales finales de una tabla dinámica


n ^P^^fl U n a ^ e ^as c o s a s m a s > r r ' t a n t e s de l as tablas dinámicas es que los totales
^ ^ ^ U ^ H finales que resumen los datos siempre terminan en la parte inferior de la
tabla, lo que significa que tiene que desplazarse hasta ellos para poder
verlos. Moveremos estos totales a la parte superior, donde es más sencillo
encontrarlos.
Aunque las tablas dinámicas son un gran método para resumir datos y ex-
traer información útil, no h a y u n a opción incorporada para hacer que el Total
general aparezcan la parte superior, de forma que sea localizable rápidamente.
Antes de que pasemos a describir un método m u y genérico para mover dicho
total a la parte superior, explicaremos cómo puede atacar este problema utilizan-
do la función IMPORTARDATOSDINAMICOS, que ha sido diseñada específicamente
para extraer datos a partir de u n a tabla dinámica.
Puede utilizar esta función de la siguiente forma:
=IMPORTARDATOSDINAMICOS("Suma de la cantidad";$B$5)

o así:
IMPORTARDATOSDINAMICOS ( " C a n t i d a d " ; $ B $ 5 )

Cada u n a de estas funciones extraerá los datos y hará un seguimiento del


Total general a medida que éste se mueva arriba, abajo, a izquierda o a derecha.
Hemos utilizado la dirección $B$5, pero con tal de que utilice cualquier celda que
esté dentro de la tabla dinámica, siempre obtendrá el total.
La primera función utiliza el campo "Suma de la cantidad", mientras que la
segunda utiliza el campo "Cantidad". Si la tabla dinámica tiene el campo "Canti-
dad" en el área de datos, debe darle nombre a dicho campo. Si, por el contrario, el
campo está siendo utilizado dos o más veces en el área de datos, deberá especifi-
car el nombre que le dio, o bien el nombre que aceptó de forma predeterminada
(véase figura 4.5).
Puede hacer doble clic en estos campos para cambiarlos. Este hecho puede
parecer confuso si no está m u y familiarizado con las tablas dinámicas. Por suer-
te, en Excel 2002 y posteriores, el proceso es mucho más sencillo, ya que puede
rellenar en una celda los argumentos y dar la sintaxis correcta utilizando el cursor
del ratón. En cualquier celda, escriba = (el signo de igual) y luego utilice el cursor
del ratón para hacer clic en la celda que actualmente contiene el Total general.
Excel rellenará automáticamente los argumentos.
154 Excel. Los mejores trucos

Áltente para tm*&mmmMmm *i

ó Construya el informe de tabla dinámica


arrastrando los botones de campo de la
derecha sobre el diagrama a la izquierda.

[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.

Por desgracia, si utiliza el asistente para funciones o escribe directa-


mente = IMPORTARDATOSDINAMICOS( ) y luego hace clic en la celda
que contiene el Total general, Excel se hace un lío intentando anidar
otra función IMPORTARDATOSDINÁMICOS dentro de la celda.

Probablemente el método más sencillo, aunque menos sofisticado, para ex-


traer el Total general es utilizar la siguiente función:
=MAX(ColTFTab)

donde la c o l u m n a que a c t u a l m e n t e contiene el Total general se llama


"ColTFTab".

Utilizar de forma efectiva datos de otro libro


dinámicamente
Utilizaremos los datos que se encuentran en otro libro como origen para
nuestra tabla dinámica.

Cuando se crea una tabla dinámica en Excel, disponemos de numerosas op-


ciones a la hora de elegir el origen de los datos. La aproximación más sencilla y
potente es utilizar los datos que residen dentro del mismo libro. Sin embargo,
por alguna otra razón, esto no siempre es posible o factible. Puede que los datos
residan en otro libro en el que se introducen a diario, por ejemplo, y por otro lado
no desea que esos usuarios puedan ver la tabla dinámica.
4. Trucos sobre tablas dinámicas 155

Si utilizamos un rango dinámico con nombre se producirá enormemente el


tiempo para actualizar la tabla dinámica. Dado que no se puede hacer referencia
a un rango dinámico con nombre desde otro libro, significa que no puede hacer
que u n a tabla dinámica haga referencia a quizá cientos de filas en blanco, lo que
causaría que el t a m a ñ o del archivo se incrementase sustancialmente. De esta
manera, lo mejor es traspasar los datos desde otro libro y luego basar la tabla
dinámica en ellos, en vez de tener que hacer u n a referencia externa.
Estando en el libro que contendrá la tabla dinámica, inserte u n a nueva hoja y
llámela "Datos". Abra el libro que contiene los datos a ser referenciados y asegú-
rese de que la hoja que los contenga sea la activa. A continuación, en cualquiera
de las celdas que sobre, introduzca la siguiente fórmula:

=SI(A1="M;"";A1)

donde Al es el primero de todos los encabezados de la tabla con los datos.


Ahora seleccione la celda A l , córtela, active el libro original y pegúela en la
celda Al de la hoja "Datos". Esto le proporcionará la referencia al otro libro. Copie
esta celda tantas columnas como encabezados haya en el origen de datos y luego
seleccione la opción lnsertar>Nombre>Definir. En el cuadro de texto Nombres en
el libro escriba "DatosDinamicos" y en el cuadro de texto Se refiere a, escriba lo
siguiente:
=DESREF($A$1;0;0;CONTARA($A:$A);CONTARA($1:$1))

Haga clic en Agregar y luego en Aceptar. A continuación inserte un código


que se ejecutará cada vez que se abra el libro, haciendo clic con el botón derecho
del ratón en el icono de Excel (situado en la esquina superior izquierda la venta-
na):
Prívate Sub Workbook_Open( )
With Worksheets("Datos")
.Range("2:1000").Clear
.Range("1:1").AutoFill .Range("1:1000")
.Range("2:1000") = .Range("2:1000").Valué
End With
End Sub

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.

Guarde el libro, ciérrelo y luego vuelva a abrirlo, asegurándose primero de


activar las macros. El código que acabamos de añadir se lanzará automáticamente
y copiará las fórmulas en la fila 1 de la hoja "Datos" y luego convertirá todas las
filas excepto la primera en valores. Esto no dejará una copia del origen, que se
actualizará cada vez que abra el libro.
Ahora ya puede ocultar esta hoja si no desea seleccionando la opción
Formato>Hoja>Ocultar.
A continuación, para hacer que u n a tabla dinámica se base en este rango
dinámico con nombre, seleccione cualquier celda dentro de la tabla dinámica y
luego seleccione la opción del asistente situado en la barra de herramientas de
tablas dinámicas. Haga clic en el botón Anterior del asistente hasta que llegue al
paso 1. Ahora seleccione la primera opción, Lista o base de datos de Microsoft
Excel, haga clic en Siguiente y, en el paso 2, escriba =DatosDinamicos (que es el
nombre del rango dinámico). Luego haga clic en Finalizar.
No experimentará el lapso de tiempo que a menudo ocurre cuando u n a tabla
dinámica hace referencia a un origen de datos externo, porque ahora los datos se
encuentran situados dentro del propio libro. Además de ello, como puede utilizar
el rango dinámico con nombre, la tabla dinámica será "dinámica" sin tener que
hacer referencia a filas en blanco, mientras que el t a m a ñ o del archivo se mantie-
ne razonablemente.
CAPÍTULO 5

Trucos sobre gráficos


Trucos 50 a 59

Los gráficos son u n a de las características más populares de externo, ya


que proporcionan a las hojas de cálculo u n a potencia visual más allá de unos
cálculos.
Aunque las capacidades gráficas de Excel son impresionantes, muchas veces
deseará ir más allá de la funcionalidad básica proporcionada por el asistente para
gráficos incorporado, para poder crear gráficos que sean más activos en cuanto
cambie los datos, o simplemente para ir más allá del rango de opciones que Excel
ofrece. Los trucos que presentaremos en este capítulo le permitirán hacer todo
esto y mucho más.

Separar una porción de un gráfico circular


Aunque los gráficos circulares son una excelente ayuda visual, a veces
deseará separar una porción en particular del gráfico. Si la separa del resto
del gráfico, le dará más importancia.

La opción predeterminada en un gráfico circular seccionado que se separan


todas las porciones, y a la misma distancia. Sin embargo, con un par de clics de
ratón, podremos separar u n a de ellas.
Para comenzar, configure un gráfico circular básico como el que se muestra
en la figura 5.1.
A continuación, ha de hacer clic en el gráfico circular y luego haga doble clic
lentamente (dejando un pequeño espacio entre ambos clics) sobre la porción que
desea separar. Arrastre la porción seleccionada hacia fuera del centro del gráfico
y verá cómo queda separada, tal y como puede verse en la figura 5.2.
160 Excel. Los mejores trucos

: 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

Figura 5.2. Gráfico circular simple con una porción separada.

Al arrastrar u n a única porción dejará el resto como estaban. Puede repetir


este proceso para el resto de las porciones si así lo desea. Esta técnica también
funciona con los gráficos circulares en 3D. Para hacer un gráfico de este estilo,
haga clic en él, haga clic con el botón derecho del ratón y luego seleccione la
opción Tipo de gráfico y entonces seleccione el icono de gráfico circular en 3D.
Si desea separar todas las porciones al mismo tiempo, simplemente haga clic
en el gráfico para seleccionarlo, luego arrástrelo hacia fuera del centro del mismo
y todas las porciones quedarán separadas, tal y como se muestra en la figura
5.3. Recuerde que cuanto más separe las porciones, más pequeñas quedarán.
5. Trucos sobre gráficos 161

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

H i • •iX.Hojal/ " " I«! ! •ir


Figura 5.3. Gráfico circular en 3D con porciones separadas.

También puede utilizar el proceso inverso si desea volver a j u n t a r las porcio-


nes de un gráfico. Para ello simplemente haga clic en u n a de las porciones y
arrástrela hacia el centro del mismo, para colocarlas j u n t a s otra vez.

TRUCO Crear dos conjuntos de porciones en un único


gráfico circular
Muchas personas creen que un gráfico circular está limitado a solamente
un conjunto de valores, pero existe una forma de crearlo basándose en dos
columnas con valores.

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.

Haga doble clic de nuevo en el gráfico, vaya a la pestaña Eje y coloque la


series en el segundo eje. Haga clic en Aceptar. El gráfico circular todavía parece
ser el mismo en la superficie, pero por debajo no lo es.
Seleccione el gráfico y, mientras mantiene pulsado el botón del ratón, arrás-
trelo fuera del centro y entonces suelte el botón del ratón, con todo esto creará
un efecto de separación, que era el que estábamos buscando (véase figura 5.5).

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.

IGi ófico 1 Gi ótico 2


2 '" 0,049619 0,766177
3 0,416347 0,835703
4 0,157347 0,650905
5 0,514901 0,744752
6
7
8
9
10
11
12 / /"
13
11 Gráfico 2
14
15 B Gráfico 1 I
16
17
18
19
20
21
4 4 • HlXHojal /
id
Figura 5.6. Gráfico circular completo compuesto de dos gráficos.

Si j u n t a de nuevo todas las porciones de gráfico circular, tendrá un gráfico


circular totalmente funcional en el que están dibujadas dos series de datos en ejes
separados. Ahora ya puede aplicar el color y el formato que desee.

Crear gráficos que se ajusten a los datos


Los gráficos pueden incluir y dibujar nuevos datos automáticamente, en el
momento en el que los añada a la hoja de cálculo.

Si utiliza rangos dinámicos con nombre en vez de referencias a rangos, el


gráfico dibujará cualquier dato nuevo en el momento en el que lo añada a la hoja
de cálculo. Para ver cómo funciona esto, comenzaremos con u n a hoja en blanco
y la rellenaremos con algunos datos, de forma parecida a como se muestra en la
figura 5.7.
Para crear el gráfico y hacerlo dinámico, necesitaremos añadir dos rangos con
nombre. Uno de esos rangos será para las etiquetas de la categoría (Fechas) y
otro para los puntos representados por los datos (Temperatura).
164 Excel. Los mejores trucos

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 <

Figura 5.7. Datos a partir de los cuales crearemos un gráfico.

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)

Observe que hemos incluido un -1 inmediatamente después del primer argu-


mento de la función CONTARA. Esto asegura que el encabezado no se incluya en
el rango con nombre para esa serie en particular.

En este ejemplo, hemos hecho referencia a toda la columna A en el


S^ argumento ($A:$A) de la función CONTARA. En versiones anteriores
*~-V de Excel, resulta una buena práctica restringir este rango al menor
grupo de celdas posible, para no añadir una sobrecarga innecesaria a
los cálculos. Esto es porque está forzando a externo a buscar en miles
de celdas innecesariamente. De todas formas, algunas funciones de
Excel son lo suficientemente inteligentes para saber qué celdas contienen
datos, aunque no todas ellas lo hacen. A pesar de todo, esto ya no es
tan necesario en las versiones más recientes de Excel, ya que éste ha
mejorado el manejo de rangos de gran tamaño.

A continuación, para las lecturas de temperaturas de la columna B, configure


otro rango dinámico que se llame "LECTURAS_TEMP" y utilizando la siguiente
fórmula:
=DESREF($B$2;0;0;CONTARA($B:$B)-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

situado en la barra herramientas estándar. En el paso 1, seleccione el tipo de


gráfico que desee utilizar (para este ejemplo utilizaremos u n a columna) y haga
clic en el botón Siguiente. En el segundo paso, se le presentarán dos pestañas:
Rango de datos y Serie. Elija la segunda y entonces elimine la fórmula que apa-
rece en el cuadro de texto Valores, introduciendo lo siguiente:
=Hoj al!LECTURAS_TEMP

Es muy importante que incluya el nombre de la hoja a la que hacen


referencia las fórmulas. Si no lo hace, no podrá introducir el rango
con nombre dentro de la fórmula.

Para terminar, elimine la fórmula que actualmente se encuentra en el cuadro


de texto Rótulos del eje de categorías (X) e introduzca lo siguiente:
=Hoj al!FECHAS_TEMP

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 |

Rótulos del eje de categorías (X): |=HojaliFECHAS_TEMP Ü

Cancelar < Atrás 1 [.SJSy®n¿e.>.,..|j Finalizar

• 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.

Dibujar los últimos x valores correspondientes a las lecturas


Otro tipo de rango con nombre que puede utilizar en los gráficos es aquel que
solamente recoge las últimas 10 lecturas (o cualquier otro número que desee) de
u n a serie de datos. Probaremos esto con los mismos datos que hemos utilizado
en la primera parte del truco.
Para las fechas que hay en la columna A, configure un rango dinámico con
nombre llamado FECHAS_TEMP_1 ODIAS, que hace referencia de la siguiente for-
ma:
=DESREF($A$1;CONTARA($A:$A)-10;0;10;1)

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)

Si desea cambiar el número de lecturas (por ejemplo a 20), simplemente cam-


bie la última parte de la fórmula de forma que quede así:
= DESREF(Hoj al!$A$1;CONTARA(Hoj al5!$A:$A) - 2 0 ; 1;2 0;1)

Al utilizar rangos dinámicos con nombre en los gráficos, dispone de u n a gran


flexibilidad y ahorrará gran cantidad de tiempo al no tener que manipular los
gráficos cada vez que añade nuevos datos.

TRUCO Interactuar con los gráficos utilizando controles


personalizados
Para hacer que los gráficos sean realmente interactivos, puede utilizar uno
o más rangos dinámicos en los gráficos y luego utilizar una barra de
desplazamiento o un cuadro de lista desplegable personalizado para
mostrar las figuras que los usuarios de la hoja de cálculo desean ver.

Como vimos en el truco anterior, puede utilizar rangos dinámicos con n o m -


bre para añadir flexibilidad a los gráficos. Pero también puede utilizar rangos
dinámicos con nombre para crear interfaces que controlen qué datos deben ser
dibujados por los gráficos. Si vinculamos los rangos dinámicos con nombre con
controles personalizados, permitiremos a los usuarios cambiar los datos de los
5. Trucos sobre gráficos 167

gráficos mediante dichos controles, que se encargarán de actualizar automática-


mente los datos en la hoja o viceversa.

Utilizar un rango dinámico con nombre vinculado a una barra


de desplazamiento
En este ejemplo, utilizaremos u n a barra de desplazamiento para mostrar las
figuras mensuales de un período de 12 meses. La barra de desplazamiento se
utilizará para modificar el n ú m e r o de meses que se presentan. El valor de dicha
barra también se utilizará en el rango dinámico, que servirá como origen de los
datos para gráfico. Para comenzar, configure algunos datos de forma similar a
los que se muestra en la figura 5.9.

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.

Cree un rango dinámico con nombre seleccionando la opción lnsertar>Nombre>


Definir y llámelo PERIODO_VENTAS. En el cuadro de texto Se refiere a, escriba lo
siguiente:

=DESREF($B$5;0;0;$C$5;1)

Al utilizar la función DESREF, podemos usar la celda $C$5 para forzar al r a n -


go referenciado en PERIODO_VENTAS a expandirse tanto arriba como abajo en
función del número que aparezca en la celda $C$5. Es decir, si por ejemplo cam-
biamos el número que h a y en $C$5 por 5, estaremos obligando a que el rango
incorpore las celdas B5:B10.
168 Excel. Los mejores trucos

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

Utilizar un rango dinámico con nombre vinculado a un cuadro


de lista desplegable
Otra variante posible es vincular el gráfico con un cuadro de lista desplegable.
Comenzamos con algunos datos configurados como en la figura 5.9. Añada un
rango dinámico que utilizaremos como origen de los datos para gráfico, y que
estará vinculado a un cuadro de lista desplegable que podemos utilizar para ver
los resultados de los exámenes de un estudiante. Utilizaremos, por tanto, el cua-
dro desplegable para seleccionar el nombre del estudiante cuyos resultados de-
seamos ver. Para ello, introduzca la fórmula =PROMEDIO (B6 :B11) en la celda
B12 y propagúela hasta la celda F12, tal y como se muestra en la figura 5.11.

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.

Cree un rango dinámico seleccionando la opción lnsertar>Nombre>Definir y


llámelo ESTUDIANTES. En el cuadro de texto Se refiere a escriba lo siguiente:
=DESREF($A$5;$G$6;1;1;5)

Cree otro rango dinámico llamado NOMBRE_ESTUDIANTE y en el cuadro de


texto Se refiere a escriba lo siguiente:
= DESREF($A$5;$G$6;0 ; 1; 1)

El uso de la referencia $G$6 en la fórmula DESREF obliga a que los rangos


referenciados para ESTUDIANTES y NOMBRE_ESTUDIANTE se expandan en fun-
ción del número introducido en la celda G6. Ahora cree un gráfico de columnas
agrupadas utilizando el rango A11:F12. Cuando llegue al paso 2 del asistente,
vaya a la pestaña Serie y cambie la referencia que aparece en el cuadro de texto
Valores para la primera serie, de forma que quede =<Nombre d e l l i b r o .
170 Excel. Los mejores trucos

x l s > ! ESTUDIANTES. En el cuadro de texto Nombre escriba =<Nombre d e l


l i b r o . x l s > !NOMBRE_ESTUDIANTE. Llegados a este punto, inserte un cuadro
de lista desplegable desde el cuadro de herramien-tas Formularios. Luego haga
clic con el botón derecho en dicho control y seleccio-ne la opción Formato de
control e introduzca $A$6:$A$11 para el rango de entrada y $G$6 como vínculo
de celda. Para terminar, introduzca la función CONCATENAR en u n a celda vacía,
como por ejemplo la B4, de la siguiente forma:

=CONCATENAR(MResultados para ";ÍNDICE(A6:A11;G6))

Ahora, si abre el cuadro de lista desplegable y selecciona un estudiante (véase


figura 5.12), se mostrarán los resultados de sus exámenes.

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

I I sf1 1 1 pl¡JMM| flfel^M if;«^^ I • Esther I

Exam A Exam D
• H¡\ Hojal\Hoja2/

Figura 5.12. Un gráfico dinámico completo vinculado a un cuadro de lista desplegable.

Tres formas rápidas para actualizar los gráficos


Aunque es maravilloso crear nuevos gráficos, actualizarlos para que
reflejen los cambios producidos en la hoja puede llevar su tiempo. Podemos
reducir la cantidad de trabajo necesario para cambiar los datos utilizados
por un gráfico de diferentes formas.

Utilizar arrastrar y colocar


Podemos añadir datos a u n a serie ya existente o crear u n a completamente
nueva simplemente arrastrando y colocando los datos en un gráfico. Excel inten
5. Trucos sobre gráficos 171

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

Figura 5.13. Datos para un gráfico de columnas agrupadas.

Mediante el asistente para gráficos, cree un gráfico de columnas agrupadas


sólo para el rango $A$1 :$D$5, con lo que se obtendrán los resultados de la figu-
ra 5.14.

25 -.

jHi,-J M ariun
Enero Febrero Marzo Abril

Figura 5.14. Gráfico de columnas agrupadas creado para el rango A1:D5.

Seleccione el rango A6:D6, haga clic con el botón derecho en el borde de la


selección y sin soltarlo arrástrela hasta el gráfico. Suelte entonces el botón y
aparecerá el cuadro de diálogo Pegado especial, tal y como se muestra en la
figura 5.15. Seleccione la opción Columnas y haga clic en el botón Aceptar. Con
esto se añadirá al gráfico la serie de datos correspondiente a mayo, tal y como se
muestra en la figura 5.16. El cuadro de diálogo Pegado especial nos ofrece la
mayoría de las acciones que necesitaremos para poder utilizar este truco.

Utilizar la barra de fórmulas


También podemos actualizar el gráfico utilizando la barra de fórmulas. Cuando
seleccionamos un gráfico y hacemos clic en u n a serie de datos del m i s m o ,
172 Excel. Los mejores trucos

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

• •! \ D r a g and Drop / Usmg Formula Bat / Dragging Bounding Atea / j*j _L ID


Figura 5.15. Gráfico de columnas agrupadas junto con el cuadro de diálogo espacio
Pegado especial.

Figura 5.16. Gráfico de columnas agrupadas con la serie de datos correspondiente a


mayo añadida.

Dicha función se llama SERIES y normalmente utiliza cuatro argumentos,


aunque el gráfico de burbujas requiere un quinto elemento adicional (para el
tamaño). La sintaxis de la función SERIES es la siguiente:
=SERIES( [Nombre];[Valores X];[Valores Y];[Orden de dibujo])

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

Figura 5.17. Un gráfico de columnas agrupadas, con la barra de fórmulas resaltada.

Como puede verse en la figura anterior, la primera parte de la referencia


(Hojal!$B$l) se refiere al nombre, o al título del gráfico, que en este caso es
2004. La segunda parte (Hojal !$A$2:$A$5) se refiere a los valores X, que en este
caso son los meses. La tercera parte (Hojal !$B$2:$B$5) se refiere a los valores Y,
que son 7,43, 15, 21,3 y 11,6. Finalmente, la última parte de la fórmula (el 1) se
refiere al orden de dibujo, o al orden de la series. En este caso, como sólo hay u n a
serie sólo podemos elegir el valor 1. Si hubiese más de u n a serie, la primera ten-
dría el número 1, la segunda el número 2 y así sucesivamente. Para realizar
cambios al gráfico, simplemente modifique las referencias a celdas en la barra de
fórmulas.
Además de utilizar referencias a celdas, puede introducir en los gráficos valo-
res explícitos, conocidos también como constantes matriciales. Para ello, deberá
añadir unas llaves {} por delante y por detrás de los valores X e Y, como puede
verse en la siguiente fórmula:
11
=SERIES("Mi barra" C " ; " D " } ; { 1 ; 2 ; 3 ; 4 } ; 1)

En esta fórmula, A, B, C y D serían los valores X, mientras que 1, 2, 3 y 4


serían los valores Y correspondientes.
174 Excel. Los mejores trucos

Utilizando este método puede crear o actualizar un gráfico sin tener que al-
macenar los datos en celdas.

Arrastrar el área del borde


Si los datos del gráfico contienen referencias a celdas continuas, puede exten-
der o reducir fácilmente el rango de datos de la serie arrastrando el borde hasta el
p u n t o deseado. Haga clic en la serie que desea extender o reducir. Después de
hacer dos clics lentamente, aparecerán unos pequeños recuadros negros alrede-
dor del área de la serie (o en medio en caso de estar utilizando un gráfico de
líneas). Sólo tiene que hacer clic en u n o de esos recuadros y arrastrar el borde en
la dirección deseada, tal y como se muestra en la figura 5.18.

WB¡ Microsoft EKCCI - Graficos.xls


~ j j Archivo Edición Ver Insertar Formato Herramientas Gráfico Ventana ? x

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

Figura 5.18. Borde de una serie seleccionado.

Si extiende o reduce los datos de u n a serie, al igual que en la figura 5.19, el


origen de datos original, así como las etiquetas del eje (en caso de estar configu-
radas en automático), también se modificarán para reflejar los cambios que aca-
ba de realizar. Esta técnica es ideal para probar diferentes escenarios, sobre todo
en aquellas ocasiones en las que desee probar cuáles serían los diferentes resulta-
dos en función de los conjuntos de datos que se utilicen.
5. Trucos sobre gráficos 175

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.

TRUCO Crear un simple gráfico de tipo termómetro


Excel no proporciona un tipo del gráfico termómetro. Si desea uno, tendrá
que construirlo.

Es posible crear un gráfico de tipo termómetro sin mucho esfuerzo, utilizan-


do el asistente para gráficos para crear un gráfico de columnas agrupadas que
compare valores a lo largo de las categorías, y luego manipulando los diferentes
elementos gráficos.
Introduzca algunos datos, de la misma forma que aparecen en la figura 5.20
y utilice el asistente para gráficos para crear un gráfico básico de columnas agru-
padas, dibujando los datos en filas. Para el ejemplo utilizaremos el rango B3:C4.
Elimine la leyenda y la cuadrícula (para ello simplemente selecciónelas y pul-
se Supr). Dé formato a la serie de datos Temperatura para el eje Y2. Para ello,
seleccione la serie, haga clic con el botón derecho del ratón, seleccione Formato de
serie de datos, vaya a la solapa Eje y luego seleccione la opción Eje secundario, lo
que hará que quede un gráfico como el de la figura 5.21.
De formato a los ejes Yl (a la izquierda) e Y2 (a la derecha) seleccionándolos,
haciendo clic en el botón derecho del ratón sobre ellos, seleccionando la opción
176 Excel. Los mejores trucos

Formato de ejes y luego haciendo a la pestaña Escala. Establezca el valor mínimo


a 0 y el máximo a 100, la unidad m a y o r a 10 y la menor a 5. Con esto podrá ver
el gráfico que se muestra en la figura 5.22.

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

posición a su gusto. Como se demuestra en la figura 5.23, retocando algunas de


las características existentes en los gráficos de Excel, puede conseguir construir
un termómetro totalmente funcional y con u n a apariencia impresionante.

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

Crear un gráfico de columnas con anchos y altos


variables
¿No sería estupendo poder crear un gráfico de columnas, las cuales
pudiesen variar en ancho y alto? Luego, a medida que se dibujan los datos
en dichas columnas, su ancho y su alto se ajustarían inteligentemente y de
forma simultánea.

Excel no proporciona esta característica directamente, pero trucando un grá-


fico XY de dispersión podemos crear un gráfico de columnas de ancho variable
m u y efectivo. Los gráficos de dispersión se utilizan para comparar valores, por lo
que proporcionan u n a base perfecta sobre la que comenzar a crear un gráfico de
columnas de ancho variable.
La figura 5.24 muestra un gráfico de columnas de ancho variable que dibuja
el porcentaje compartido comparado con el coste de los siguientes gastos: gas,
electricidad, agua, comida, viajes y otros. El eje X (el eje a lo largo de la parte
inferior del gráfico) muestra los porcentajes, mientras que el eje Y (el eje que se
encuentra en la parte izquierda) muestra el coste en dinero.

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.

Para ver las fórmulas correctas en su sitio en las celdas, seleccione la


K^ opción Herramientas>Opciones y luego vaya a la pestaña Ver y actívela
^-"V casilla de verificación Fórmulas.

Ha llegado el momento de manipular el gráfico para crear las columnas. Pri-


meramente elimine la leyenda y la cuadrícula (basta con seleccionarlas y luego
pulsar Supr). Cambie el formato del área de dibujo para que no se rellene: haga
clic en el color de fondo gris, luego haga clic con el botón derecho sobre él y
seleccione Formato del área de trazado. Seleccione la opción Ninguna en el aparta-
do Área.
Seleccione el eje X y luego haga doble clic sobre él para acceder al cuadro de
diálogo Formato de ejes. Vaya a la pestaña Escala e introduzca un mínimo de 0 y
un máximo de 1. Vaya a la pestaña Tramas y seleccione la opción Ninguna en
Marca de graduación principal y en Rótulos de marca de graduación seleccione
Ninguno. Luego haga clic en Aceptar, con lo que el gráfico se parecerá al que se
muestra en la figura 5.25.
El siguiente paso será crear las líneas para las columnas, así que haga doble
clic sobre los puntos de los datos para abrir el cuadro de diálogo Formato de serie
de datos. Vaya a la pestaña Barras de error X. En la sección Presentar, seleccione
la opción Por defecto y luego seleccione la opción Personalizada y establezca el
rango G2:G8. Al hacer clic en Aceptar, obtendrá los lados verticales de las co-
lumnas.
Ahora que ya hemos hecho el trabajo duro, es el momento de retocar un poco
el gráfico y añadir algunas etiquetas. Primeramente, en el cuadro de diálogo For-
mato de serie de datos vaya a la pestaña Tramas y seleccione la opción Ninguno
en el apartado Marcador. Los resultados se muestran en la figura 5.26.
Si desea utilizar etiquetas, deberá descargar las herramientas para gráficos de
John Walkenbach, disponibles en http://j-walk.com/ss/excel/files/charttools.htm.
Una parte de este componente está diseñado específicamente para etiquetas de
datos.
Le permite especificar un rango de la hoja para las etiquetas de datos que se
utilizarán en la serie de un gráfico (por desgracia, parece que este componente
no funciona en la versión de Macintosh de Excel).
180 Excel. Los mejores trucos

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.

Antes de utilizar estas herramientas, deberá añadir u n a nueva serie de datos


para proporcionar las etiquetas al eje X del gráfico. Para ello, seleccione el gráfi-
5. Trucos sobre gráficos 181

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.

Lo mejor de este tipo de gráficos es que las barras se expandirán o contraerán


a lo largo de los ejes X e Y cuando los valores introducidos en las columnas %
Compartido y Coste cambien.
182 Excel. Los mejores trucos

Crear un gráfico de tipo velocímetro


Es posible crear un velocímetro realmente impresionante y funcional, con
su aguja movible, todo ello gracias a la combinación de gráficos circulares y
gráficos de anillo. El truco está en controlar el velocímetro a través de una
barra de desplazamiento.
El asistente para gráficos de Excel ofrece diferentes tipos de gráficos, aunque
no u n o como el que queremos hacer. Un gráfico de tipo velocímetro proporciona
u n a forma ingeniosa de representar los datos. Con este truco, podemos crear un
velocímetro y u n a barra de desplazamiento a partir del cuadro de herramientas,
que servirá para modificar el gráfico y cambiar los valores de la hoja simultánea-
mente.
Lo primero que debemos hacer es introducir algunos datos, al igual que se
muestra en la figura 5.28, y luego crear un gráfico de tipo anillo. Éstos funcio-
n a n de forma similar a los gráficos circulares, aunque permiten contener múlti-
ples series, cosa que los gráficos circulares no pueden.

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.

Asegúrese de mostrar las fórmulas en la hoja. Para ello vaya a Herramientas>


Opciones>Ver y active la casilla de verificación Fórmulas, aunque esto será un
proceso largo.
Ahora seleccione el rango B2:B5 y seleccione el asistente para gráficos. En el
paso 1, en la pestaña Tipos estándar, seleccione el primer tipo de gráfico de anillo.
Haga clic en Siguiente y en el paso 2 asegúrese de que los datos se dibujarán por
filas. Haga clic de nuevo en Siguiente y realice cualquier cambio que considere
necesario en el paso 3 (aunque no lo son para este truco). Vaya al paso 4 hacien-
5. Trucos sobre gráficos 183

do clic en Siguiente y asegúrese de que el gráfico se generará como un objeto (es


la opción predeterminada). Al general gráfico como un objeto resultará más sen-
cillo trabajar con él y así poder configurar el velocímetro (véase figura 5.29).

Velocímetro

Figura 5.29. Gráfico de anillo básico.

Seleccione el gráfico de anillo y seleccione la porción más grande haciendo


doble clic lentamente, para luego seleccionar la opción Formato de punto de datos
e ir a la pestaña Opciones. Establezca el ángulo para esta porción en 90 grados.
Vaya a la pestaña Tramas y configure el área y el borde de esta porción a Ningu-
no. Haga clic en A c e p t a r y haga doble clic lentamente para seleccionar cada u n o
de las porciones restantes. Haga doble clic entonces para volver al cuadro de diá-
logo anterior y establecer el color como sea necesario. Al final, el gráfico de tipo
anillo debería parecerse al que se muestra en la figura 5.30.

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.

Figura 5.31. Gráfico de tipo anillo con múltiples series.

Llegados a este punto, el velocímetro está empezando a tomar forma. Si desea


añadir etiquetas a este gráfico, necesitará descargar u n a herramienta para poder
añadirlas libremente. Vaya a http://j-walk.com/ss/excel/files/charttools.htm,
donde podrá descargar Chart Tools de Jonh Walkenbach.
Parte de este complemento, que por desgracia sólo funciona con Windows,
está diseñado específicamente para crear etiquetas de datos. Nos permite especi-
ficar un rango de u n a hoja para las etiquetas de datos que se utilizarán en la
serie de un gráfico el complemento también contiene otras características que
pasamos a detallar a continuación:
• Tamaño del gráfico: Permite especificar un t a m a ñ o exacto para un grá-
fico, y también permite hacer que todos los gráficos tengan el mismo ta-
maño.
• Exportar: Le permite guardar los gráficos como archivos .gif, j p g , .tif, o
.png.
• Imagen: Convierte un gráfico en una imagen (a color por escala de grises).
• Tamaño del texto: Congela el t a m a ñ o de todos los elementos de texto en
un gráfico, de forma que si éste cambia de tamaño, los elementos de texto
no lo harán.
• Informe del gráfico: Genera un informe de resumen para todos los grá-
ficos o bien un informe detallado para u n o en particular.
5. Trucos sobre gráficos 185

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.

Figura 5.33. Gráfico de tipo velocímetro superpuesto con el gráfico circular.

A continuación es necesario reducir el t a m a ñ o de gráfico circular que acaba-


mos de colocar sobre el gráfico de anillo. Para ello, sepárelo en diferentes porcio-
nes y luego vuelva a ensamblar las más pequeñas. Seleccione u n a porción de
gráfico circular (haciendo dos clics lentamente en la porción que desea modifi-
186 Excel. Los mejores trucos

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.

Figura 5.34. Gráfico circular separado y cambiado de tamaño.

Ahora seleccione todo el círculo, haga doble clic sobre él y en el cuadro de


diálogo Formato de serie de datos vaya a la pestaña Opciones. Cambie el ángulo
de la primera porción a 90 grados. Seleccione u n a a u n a el resto de las porciones
y, haciendo clic con el botón derecho del ratón, vuelva a este cuadro de diálogo y
luego vaya a la pestaña Tramas. Ahí seleccione Ninguno tanto para el borde como
para el área de todas las porciones excepto para la tercera, que deberá estar relle-
nada con un color negro. Esto producirá un gráfico como el que se muestra en la
figura 535.

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

címetro como el de la figura 5.36. Ahora, mueva, cambie el t a m a ñ o y modifique


el gráfico si así lo desea.

Velocímetro

D Normal

• Alto

Figura 5.36. Gráfico de tipo velocímetro con una leyenda.

Ahora que el gráfico de tipo velocímetro está construido, necesitamos crear


u n a barra de desplazamiento a partir del cuadro de herramientas y hacer que
este control y el gráfico puedan comunicarse entre ellos.
Para ello, deberá mostrar el cuadro de herramientas Formularios: haga clic
con el botón derecho ratón en un área vacía de la barra de herramientas (a la
derecha de donde se encuentran las barras de herramientas estándar y de forma-
to) y seleccione en el m e n ú la opción Formularios. Ahora seleccione el icono Barra
de desplazamiento y dibuje dicha barra en cualquier lugar de la hoja.
Seleccione la barra de desplazamiento que acaba de dibujar, haga clic con el
botón derecho sobre ella y seleccione la opción Formato de control. Elija como
celda vinculada la celda F3, establezca un valor máximo de 100 y un valor míni-
mo de 0. Cuando cierre este cuadro de diálogo y mueva la barra de desplaza-
miento sobre el gráfico, verá algo parecido a lo que se muestra en la figura 5.37.

Figura 5.37. Gráfico de tipo velocímetro ya terminado.


188 Excel. Los mejores trucos

Al hacer clic en las flechas o al arrastrar el selector de la barra de desplaza-


miento, hará que el velocímetro se modifique. Pero recuerde, esto también cam-
biará los datos de la hoja de cálculo que están vinculados con el gráfico.

Vincular los elementos de texto de un gráfico


a una celda
Cuando se crean y se utilizan gráficos repetidamente, puede ser útil
conocer cómo vincular algunos de los textos de los gráficos, como por
ejemplo títulos y etiquetas, directamente a una celda. Esto quiere decir que
si los datos subyacentes al gráfico cambian, los datos del gráfico y sus
elementos de tipo texto siempre estarán en armonía.

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

Edad de los empleados

H < • n\Hojal/ lilL id


Figura 5.39. Gráfico de columnas agrupadas con el título vinculado a la celda Al 7.

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.

Trucar los datos de un gráfico de forma


que no se dibujen las celdas en blanco
Excel trata las celdas en blanco como si tuvieran un valor de 0, lo que
puede provocar que se generen gráficos un tanto feos. Esto provoca que la
representación de valores de un gráfico caiga de repente, con lo que queda
un gráfico que no dibuja con precisión la imagen que está intentando
mostrar. Con el siguiente truco, nos aseguraremos de que las celdas en
blanco no sean dibujadas.

Es posible impedir que se dibujen las celdas en blanco de dos formas m u y


sencillas: bien ocultando las filas con las columnas o bien haciendo que dichas
celdas devuelvan el valor # N / A .
190 Excel. Los mejores trucos

Ocultar filas y columnas


Configure algunos datos de forma que queden como en la figura 5.40. Cree
un gráfico de líneas y vea cómo queda si tiene valores 0 dibujados. Seleccione el
rango A1:B12, abra el asistente para gráficos y configure el gráfico de líneas
como un objeto para la hoja de cálculo actual.

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

de celdas vacías, dado que todavía no disponemos de los datos desde m a y o a


diciembre.
Para evitar este inconveniente, bastaría con ocultar las filas 5 a 12 (mayo a
diciembre). Al hacer esto, Excel no dibuja los datos que haya en filas ocultas, con
lo que obtendremos un resultado como el de la figura 5.41. Para ocultar estas
filas, selecciónelas y luego vaya a Formato>Fila>Ocultar.
CAPÍTULO 6

Trucos sobre fórmulas


y funciones
Trucos 60 a 80

Las fórmulas y funciones proporcionan la lógica que da potencia a las hojas


de cálculo. Saber manipular la lógica de programación siempre resulta un reto,
pero mantener un seguimiento de la lógica de programación a lo largo de múlti-
ples celdas, hojas y libros puede ser particularmente difícil, especialmente cuan-
do estas hojas de cálculo crecen y son reutilizadas. Y lo que es m á s , las
características incorporadas en Excel en relación a las fórmulas y funciones pue-
de que no siempre sean las que desea. Por suerte, existen numerosas formas de
mantener en buen estado esas fórmulas y funciones.

ü Añadir un texto descriptivo a las fórmulas


Los rangos con nombre de Excel y los comentarios de celdas pueden ayudar
a clarificar las fórmulas, pero a veces deseará poder añadir más
documentación dentro de los propios fórmulas. Con los trucos de este
apartado, podrá añadir un texto descriptivo a las fórmulas de forma rápida
y sencilla.

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

utilizado en cálculos posteriores. Excel, sin embargo, proporciona u n a función a


menudo olvidada que puede utilizar para añadir texto descriptivo a las fórmulas
o a las funciones.
Digamos que tiene la siguiente fórmula en la celda Al 1:
=SUMA($A$1:$A$10)*$B$1

Suponiendo que $A$1:$A$10 contienen varios resultados numéricos que re-


presentan los totales para un mes en particular, y que $B$1 contiene el porcen-
taje que representa un impuesto, podemos añadir algún texto descriptivo a la
fórmula utilizando la función N de Excel:
=SUMA($A$1:$A$10;N("Valores para abril"))*$B$1+N("Impuesto para abril")

Ahora, puede determinar para qué se está utilizando la fórmula simplemente


seleccionando esta celda y mirando la barra de fórmulas. La función N siempre
devuelven un valor de 0 sea cual sea el texto, por lo que no interfiere con el
resultado total de la fórmula.

0 ^ 3 Mover fórmulas relativas sin cambiar las referencias


) ^ V ^ ^ H En Excel, una referencia de una fórmula puede ser relativa o absoluta. Sin
^ ^^^^^| embargo, algunas veces deseará reproducir las mismas fórmulas en algún
otro lugar de la hoja o el libro, o incluso en otra hoja diferente.

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.

Comparar dos rangos de Excel


Buscar las diferencias entre dos grandes tablas con datos puede ser una
tarea muy costosa. Afortunadamente, al menos hay dos métodos con los
que podemos automatizar lo que de otra manera sería un proceso manual
muy tedioso.
Estos dos métodos ya los hemos utilizado anteriormente cuando recibimos
u n a copia actualizada de u n a hoja de cálculo y necesitábamos identificar qué
celdas en la copia actualizada eran diferentes de las celdas que había en la copia
original. Ambos métodos nos ahorrarán el tedioso trabajo de hacer u n a compro-
bación m a n u a l y, lo que es más importante, evitarán la posibilidad de cometer
errores. Para los siguientes ejemplos, hemos copiado los datos más nuevos en la
misma hoja en la que estaban los antiguos. En la figura 6.1 se muestra cómo se
presentan los datos en dos rangos. Tenga en cuenta que para facilitar la lectura,
hemos puesto en negritas las celdas de la tabla 2 que no son iguales que las
correspondientes de la tabla 1.

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.

Método 1. Utilizar Verdadero o Falso


El primer método implica introducir u n a simple fórmula en otro rango con el
mismo t a m a ñ o y composición. La parte mejor de este método es que puede aña-
196 Excel. Los mejores trucos

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

Introduzca esta fórmula pulsando Control-Intro al mismo tiempo.


Éy De esta forma, estará introduciendo la fórmula con referencia relativa
en cada una de las celdas de la selección. Éste es un método estándar
^A para introducir una fórmula en una matriz de celdas y hacer que esa
referencia cambie de forma apropiada según cada celda.

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.

/ Para eliminar una fórmula introducida en una matriz, debe seleccionar


x y eliminar todo el rango. No podrá, por consiguiente, eliminar
w
**\ solamente una parte de él.

Método 2. Utilizar el formato condicional


El segundo método es normalmente el preferido, ya que es más sencillo hacer
los cambios necesarios u n a vez que se realiza la comparación. Sin embargo, con
este método, ambos conjuntos de datos deben estar en la misma hoja, lo que
significa utilizar la función de copiar y pegar simple.
De nuevo, supondremos que estamos comparando los dos rangos que dijimos
antes. Seleccione el rango Al :C7, comenzando por la celda A l , de forma que nos
aseguremos que sea la celda activa.
6. Trucos sobre fórmulas y funciones 197

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

Agregar» j Eliminar,,, | j Aceptar | Cancelar I

Figura 6.2. Cuadro de diálogo de formato condicional.

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.

B| Rellenar todas las celdas en blanco en una lista


A menudo
H ^••Kfl ' m u c n a gente deja celdas en blanco si el dato que deben
I ^ H Í I contener es el mismo que el de la celda inmediatamente superior.
Visualmente esto hace que las listas sean más sencillas de leer, pero desde
el punto de vista estructural no es una buena idea. Con los trucos de este
apartado, podrá rellenar las celdas en blanco de una lista de forma rápida y
sencilla.

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

crear muchos problemas cuando se utilicen características tales como subtotales


y tablas dinámicas. En la mayoría de los casos, Excel espera que los datos relacio-
nados estén configurados en u n a lista o tabla continua, en la que no haya celdas
en blanco.
I ^ B C D E 1 F GTJ
1 Frutas Coste
2 Manzana 1,25 €
3 1,25 €
4 Plátano 2,55 €
5 2,55 €
6 2,55 €
7 Naranja 1,55 €
8 1,55 €
9 1,55 €
10 Pera 4,55 €
11
12
13
14
15
16 J
17
18

|H < • M\ Hojal \Hoja2 / Hoja3 / |_<j l HU

Figura 6.3. Lista de una hoja configurada con celdas en blanco.

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.

Método 1. Rellenar las celdas en blanco mediante


una fórmula
Digamos que tiene u n a lista con entradas en la columna A, similar a la del
ejemplo anterior, y con u n a lista que contiene numerosas celdas en blanco. A
continuación mostramos un método fácil y rápido para rellenar esas celdas en
blanco con los valores de las celdas inmediatamente superiores.
Seleccione todos los datos de la columna A, vaya a Edición>lr a (Control-I) y
luego haga clic en Especial... Seleccione el botón de opción Celdas en blanco y
haga clic en Aceptar. Llegados este punto, hemos seleccionado solamente las cel-
das vacías que se encuentran dentro de la lista. Pulse la tecla = (signo de igual) y
luego la tecla cursor arriba. Ahora, mientras mantiene pulsada la tecla Control,
pulse la tecla Intro. Puede convertir rápidamente las fórmulas a valores simple-
mente seleccionando la columna A por completo. Vaya a Edición>Copiar (Con-
trol-C), luego vaya a Edición>Pegar especial, active la casilla de verificación Valores
y haga clic en el botón Aceptar.
6. Trucos sobre fórmulas y funciones

Método 2. Rellenar las celdas en blanco a través


de una macro

Si va a tener que rellenar celdas en blanco con frecuencia, debería considerar


resolver este problema utilizando u n a m a c r o . La siguiente m a c r o realiza todo
este trabajo.
Para crearla, v a y a a Herramientas>Macro>Editor de Visual Basic ( A l t / O p c i ó n -
Fl 1), luego seleccione la opción de m e n ú lnsertar>Módulo e introduzca el siguiente
código:

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

Set rRangel = Selection

On Error Resume Next


Set rRange2 = rRangel.SpecialCells(xlCellTypeBlanks)
On Error GoTo 0

If rRange2 Is Nothing Then


MsgBox "No se encontraron celdas en blanco", _
vblnformation, "Información"
Exit Sub
End If

rRange2.FormulaRICl = "=R[-1]C"

IReply = MsgBox("¿Convertir a valores?", vbYesNo + vbQuestion,


"Atención")
If IReply = vbYes Then rRangel = rRangel.Valué
End Sub

Después de introducir este código, cierre la v e n t a n a p a r a volver a la v e n t a n a


principal de Excel y g u a r d a r el trabajo. Ahora vaya a Herramientas>Macro>Macros
(Alt/Opción-F8), seleccione la m a c r o RellenarBIancos y h a g a clic en el b o t ó n
Ejecutar, a u n q u e también puede utilizar el botón Opciones y asignar esta macro
a u n a tecla de acceso rápido.
200 Excel. Los mejores trucos

Q H Q Hacer que las fórmulas se incrementen por filas


| V ^ f l cuando las copie a lo largo de las columnas
^MBBM La función de Excel que incrementa automáticamente las referencias a
celdas funciona bastante bien en la mayoría de los casos, pero a veces
deseará cambiar la forma en la que lo hace.
Por ejemplo puede que desee hacer referencia a u n a única celda, como puede
ser A l , y luego copiar esta referencia a lo largo de las columnas que hay a la
derecha. Normalmente, Excel cambiará la referencia de la siguiente forma: = B1,
= C1, = D 1 , etc., lo cual no es el resultado que deseamos. En este caso queremos
que las fórmulas se incrementen por filas en vez de por columnas, es decir, =A1,
=A2, =A3, etc. Por desgracia no h a y u n a opción en Excel que le permita hacer
esto. Pero, podemos conseguir realizar todo esto mediante la función INDIRECTO
y la función DIRECCIÓN situada dentro del anterior.
Quizá la mejor forma de explicar cómo crear la función requerida es utilizar
un ejemplo en el que los resultados sean predecibles. En las celdas Al :A10 intro-
duzca los números del 1 al 10 en este orden. Seleccione la celda DI e introduzca
la siguiente fórmula en ella:
= INDIRECTO(DIRECCIÓN(COLUMNA() - 3;1) )

Tan pronto como introduzca esto, el número 1 debería aparecer en la celda d i .


Esto es debido a que la fórmula hace referencia a la celda A l .
Si copia esta fórmula a lo largo de las columnas situadas a la derecha, la celda
El contendrá el número 2. Es decir, a pesar de que estamos copiando a lo largo de
las columnas, la referencia de la fórmula se está incrementando por filas, tal y
como se muestra en la figura 6.4.

Este método es especialmente útil cuando una hoja de cálculo tiene


encabezados que van de arriba a abajo en una columna, y desea crear
una referencia dinámica a esos encabezados de fila a lo largo del resto
de columnas.

Si sigue copiando esto hacia la derecha, la celda Fl contendrá el número 3, la


celda Gl contendrá el n ú m e r o 4, etc. Éste es un proceso m u y fácil de seguir si
solamente se hace referencia a u n a única celda. Pero, muchas veces, necesitará
hacer referencia a un rango de celdas que está siendo utilizado como argumento
de u n a función. Utilizaremos la popular función SUMA para demostrar a qué
nos referimos. Suponga que recibe u n a larga lista de números y su trabajo es
sumar la columna de números para obtener un total, algo parecido a esto:
=SUMA($A$1:$A$2), =SUMA($A$1:$A$3) y =SUMA($A$1:$A$4)
6. Trucos sobre fórmulas y funciones 201

IB Microsoft Excel -Libro! ..•.:.-• 1- "WMSSU^^^^^M


41 Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ?

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

Figura 6.4. El resultado de copiar la celda DI a la celda El.

El problema surge porque los resultados necesitan ser dinámicos y expandirse


a lo largo de las 100 columnas solamente para la fila 1, no 100 filas hacia abajo
en otra columna (como suele ser lo habitual).
Naturalmente, podría escribir manualmente esas funciones en cada celda
individual, pero eso sería un trabajo m u y largo. En vez de eso, puede utilizar
el mismo principio el que hemos utilizado antes al referenciar a u n a única
celda.
Rellene el rango A l : A l 0 0 con los números 1 al 100 en este orden. Para ello,
introduzca un 1 en la celda A l , selecciónela y mientras mantiene pulsada la tecla
Control, haga clic en el pequeño recuadro de la esquina inferior derecha y arras-
tre el cursor del ratón hasta la fila 100. Ahora seleccione la celda DI e introduzca
la siguiente fórmula:
=SUMA(INDIRECTO(DIRECCIÓN(1;1) & ": & DIRECCIÓN (COLUMNA () -2/1) ) )

Esto le dará un resultado de 3, que se corresponde con la suma de las celdas


A1:A2. Copie esta fórmula en la celda El y obtendrá un resultado de 6, que se
corresponde con la suma de las celdas A l : A 3 . De igual manera, al copiar la fór-
mula en la celda Fl, obtendrá un resultado de 10, que es la suma de las celdas
A1:A4 (véase figura 6.5).
202 Excel. Los mejores trucos

.B Microsoft Excel - Libro 1


^mü'!
¿§j Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? . . . T . fl x

J J ' J J J J i ^ a ¿ -J ^ - / ^ * 9 & £ - H Ü JjJJ 4> 1007o . v |;


T T T
Arial - 10 - N iT S ^ W M ^j ^J % 000 € %t „°8 £^ * D ^ A |
DI ^ ^ =SUMA(INDIRECTQ(DIRECCION(1;1)&":"&D1RECCIQM(CQLUMNAO-2;1)))
B C : D I E ' F G H
1 6 10
2 2
3 3
4 4
5 5
6 6
7 7
8 8
9 9
10 10
11 11
12 12
13 13
14 14
1F¡ 15
H i • H \ Hojal /Hoja2 XHoja3/ ir
Listo

Figura 6.5. Resultado de copiar la celda DI en la celda Fl.

La función volátil COLUMNA hace que la última referencia a celdas se


incremente en un 1 cada vez que la copia en u n a nueva columna. Esto es debido
a que la función COLUMNA siempre devuelve el número de la columna (no la
letra) de la celda que la contiene, a menos que haga referencia a u n a celda dife-
rente.
Otra alternativa es utilizar la función Pegado especial>Trasponer de Excel.
Añada la fórmula =SUMA ($A$1: $A2) a la celda Bl (observe que hemos utilizado
u n a referencia relativa a fila y absoluta a columna en $A2) y luego copie esta
fórmula hacia abajo hasta la celda B100. Teniendo seleccionadas las celdas
B2:B100, cópielas, seleccione la celda DI (o cualquier celda que tenga 100 o más
columnas a la derecha) y luego vaya a Edición>Pegado especial>Trasponer. Si lo
desea, puede eliminar las fórmulas que hay en B2:B100.

Convertir fechas en fechas con formato de Excel


Las fechas que se importan desde otros programas suelen causar problemas
en Excel. Mucha gente reescribe manualmente esas fechas, pero existen
métodos más sencillos para solucionar este problema.

Como puede verse en la figura 6.6, las fórmulas en la columna B convierten


los datos situados en la columna A en tres resultados en la columna C, todos ellos
siguiendo el formato de fecha americano de m m / d d / a a .
La figura 6.7 muestra el mismo método, excepto que las celdas de la columna
C tienen el formato de fechas europeo ( d d / m m / a a ) .
6. Trucos sobre fórmulas y funciones 203

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

Figura 6.6. Formatos de fecha convertidos en fechas válidas (formato americano).

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

Figura 6.7. Formatos de fecha convertidos en fechas válidas (formato europeo).

Por suerte, estas interesantes fórmulas nos quitarán algo de estrés a la hora
de trabajar con fechas importadas.

Sumar o contar celdas evitando valores de error


Los valores de error son advertencias muy útiles, pero a veces deseará hacer
los cálculos sin tener en cuenta esos errores. Para poder hacer esto,
tendremos que utilizar funciones que sean tolerantes a dichos errores.

Teniendo un rango de celdas que contienen u n o o más valores de error, la


mayoría de las fórmulas que hagan referencia a ese rango también devolverán un
valor de error. Podemos evitar esta frustración si utilizamos la función BDSUMA.
Supongamos que tiene u n a larga lista de números de los que desea obtener la
suma total. Sin embargo, u n a de las celdas, por cualquier razón, está devolvien-
do un valor de error # N / A .
Rellene algunos datos de la misma forma que aparecen en la figura 6.8.
Para generar el error # N / A , introduzca la fórmula =#N/A () en las celdas A2
y B2. La celda Al 2 utilizar la función estándar SUMA, que suma los valores de
las celdas A2:A11, y dado que la celda A2 contiene el error #N/A, la función
SUMA también devolverán dicho error. Al rango DI :D2 se le ha dado el nombre
"Criterio" y se utiliza como último argumento para la función BDSUMA, que se
encuentra en la celda B12.
La sintaxis para la función BDSUMA (y para todas las funciones de base de
datos) es la siguiente:
=BDSUMA(base de datos;campo;criterio)
204 Excel. Los mejores trucos

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

Figura 6.8. Datos rellenados de forma que generan un error #N/A.

El argumento "base de datos" identifica al rango de celdas que componen la


lista o la base de datos. Dentro del rango de base de datos, las filas con informa-
ción son tratadas como registros, mientras que las columnas son tratadas como
campos.
La primera fila contiene etiquetas para todas las columnas, que sirven a modo
de encabezados.
El argumento "campo" indica qué columna es utilizada en la función. La co-
lumna puede ser identificada por el nombre utilizando las etiquetas que se en-
cuentran en la parte superior de la columna, o bien puede ser identificada por su
posición. La primera columna es la 1, la cuarta es la 4, etc.
El argumento "criterio" identifica un rango de celdas que contienen condicio-
nes. El rango que se utiliza para el criterio debe incluir al menos u n a etiqueta de
columna además de al menos u n a celda por debajo de ella que especifique u n a
condición para la columna.
Si los datos que desea sumar contienen diferentes tipos de errores, deberá con-
siderar utilizar la función BDSUMA j u n t o con un amplio rango de criterios que
se acomoden a todos los posibles errores. Sin embargo, lo mejor siempre es en-
frentarse a los errores en su origen y eliminarlos siempre que sea posible, en vez
de evitarlos.
Si, de todas formas, desea evitar esos errores, utilizaremos la función BDSUMA,
pero esta vez necesitaremos configurar un criterio que se extienda por cuatro
columnas, expandiendo el rango con nombre que contiene el criterio para que
incluya las celdas D1:G2.
Para ello utilizaremos la opción lnsertar>Nombre>Definir, tal y como se mues-
tra en la figura 6.9.
Excel dispone de un rico conjunto de funciones de base de datos, y puede uti-
lizar cualquiera de ellas de la misma forma. Por tanto, considere utilizar este
m é t o d o p a r a las funciones BDCONTAR, BDCONTARA, BDMAX, BDMIN,
BDPRODUCTO, etc.
6. Trucos sobre fórmulas y funciones 205

m Microsoft Excel - LibroZ

•M]¡ Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? ' - ff X

Times New Román ,10 - N K S s: = s ^| *f§ % 000 € *oo *o i^ W O '


B12 ^ £ ^SUMA(SI(RE5IDUQ(F1LA($A$1:$A$500);2)=0¡%A$ 1:%A$500;0))
D
Númerosl Números2 Números2
#N/A r
#N/A
X" Allamado
estas celdas se las ha
"Criterio"
1
2
3
4
5
6
9 7
10 8
11 9 Esta celda contiene una
fórmula BDSUMA que usa el
¡ 121 #N/A ^ * - rango "Criterio" para
13
ignorar cualquier error de
14 tipo #N/A
15
Esta celda ha usado
16 | la Función estándar
17 SUMA, lo que produce
18 un error porque A2
19 no tiene valor
20
ti
< < • •l\Hojal/Hoja2/Hoja3_/ •ir

Figura 6.9. La función BDSUMA utilizada para ignorar diferentes errores.

Reducir el impacto de las funciones volátiles


a la hora de recalcular
Las funciones volátiles, que deben ser recalculadas cada vez que el usuario
realiza una acción en Excel, pueden consumir una gran cantidad de tiempo.
Aunque estas funciones son muy útiles para descartarlas por completo,
existen algunos métodos para reducir los tiempos de espera que generan.

Una función volátil es simplemente u n a función que debe recalcularse cada


vez que se realiza u n a acción en Excel, como puede ser introducir datos, cambiar
el ancho de las columnas, etc. (una de las pocas acciones que no provocarán un
recálculo de las funciones volátiles es la de cambiar el formato de las celdas, a
menos que lo haga a través de la opción Pegado especial>Formatos).
Probablemente dos de las funciones volátiles más conocidas son HOY y AHORA.
Dado que la primera devuelve la fecha actual y la segunda la fecha y la hora
actual, es importante que ambas tengan que recalcularse a menudo. Si tiene u n a
hoja de cálculo que contienen muchas funciones volátiles, probablemente estará
obligando a Excel a realizar muchos cálculos innecesarios de forma continua.
Este problema puede ser peor cuando tiene funciones volátiles que están anida-
206 Excel. Los mejores trucos

das dentro de funciones no volátiles, ya que en esos casos, la fórmula entera se


convertirá en volátil.
Para entender lo que estamos hablando, supongamos que tiene u n a hoja de
cálculo que está utilizando la función HOY dentro de u n a tabla compuesta por 20
columnas y 500 filas. Esto significa que tiene 10.000 funciones volátiles en el
libro, cuando en realidad u n a sola podría realizar el mismo trabajo. En vez de
anidar 10.000 funciones HOY dentro de cada u n a de las celdas de la tabla, en
muchos casos podrá introducir simplemente la función HOY en u n a celda que
esté aparte, darla el nombre "FechaHoy" (o bien utilizar el identificador de la cel-
da) y luego hacer referencia a "FechaHoy" en todas las funciones de la tabla.

(i Una forma rápida y sencilla para hacer esto es seleccionar toda la


N tabla y luego ir a Edición>Reemplazar para reemplazar el texto "HOYO"
x por "FechaHoy" en todas las fórmulas.

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.

^ ^ ^ Q Contar solamente una aparición de cada entrada


§ K j 5 J de una lista
M B " Cuando tiene una larga lista de elementos, puede que desea realizar la
cuenta de los elementos, pero sin tener incluir aquellas entradas que
aparezcan en varias ocasiones. Con este truco podrá contar cada entrada
única solamente una vez.
Observe la lista que aparece en la siguiente figura, que ha sido ordenada de
forma que pueda ver las entradas repetidas fácilmente. Un conteo normal de esta
lista (utilizando la función CONTARA) resultaría en que los nombres Marta, Da-
vid, Laida y Ana fueran contados más de u n a vez. La función BDCONTARA ofre-
ce u n a alternativa que resulta m u y eficiente y fácil de modificar. La sintaxis de
esta funciones la siguiente:
=BDCONTARA(base de datos;campo;criterio)
6. Trucos sobre fórmulas y funciones 207

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

Figura 6.10. Rango con nombres ordenados.

^v Los argumentos para esta función son los mismos que para la función
w^ BDSUMA, que ya vimos anteriormente.

A partir de la lista anterior, introduzca en la celda DI la palabra "Criterio" (o


cualquier encabezado que no sea igual que el de u n a columna un campo). Debajo
de éste, en la celda D2, introduzca la siguiente fórmula:
=CONTAR.SI($A$2:A2;A2)=1

Observe la combinación de referencias relativas (A2) y absolutas ($A$2). Esto


resulta vital para que el criterio pueda funcionar.
Ahora, en la celda de la que desea mostrar el resultado, introduzca la siguien-
te función:
=BDCONTARA($A$1:$A$10 0;1;$D$1:$D$2)

Utilizará el criterio para excluir los duplicados y proporcionar el resultado


que necesitamos, que en este caso es 10, ya que solamente hay ese número de
nombres únicos.

Sumar cada dos, tres o cuatro filas o celdas


Es probable que desee sumar cada segunda, tercera, cuarta, etc. celda de
una hoja de cálculo. Ahora es posible, si utiliza el siguiente truco.

Excel no dispone de u n a función estándar que sume cada cierto n ú m e r o de


celdas o filas. Sin embargo, podemos llevar a cabo esta tarea de diferentes for-
208 Excel. Los mejores trucos

mas. Todas ellas utilizan la función FILA y la función RESIDUO. La primera, la


función FILA, devuelve el n ú m e r o de fila de la referencia a u n a única celda. Lo
vemos:

FILA(referencia)

La función RESIDUO devuelve el resto de dividir un número por otro:


RESIDUO(número/divisor)

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))

Dado que esto es una fórmula matricial, debe introducirla usando


Control-Mayús-Intro. Al hacer esto, Excel introducirá unas llaves,
S quedando la fórmula de esta forma:
{=SUMA(SI(RESIDUO(FILA($A$1:$A$50 0);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.

Aunque este método funciona, no resulta un diseño de hoja de cálculo ideal,


ya que estamos utilizando sin necesidad una fórmula matricial. Para complicar
más las cosas, estamos utilizando la función volátil FILA anidada dentro de ella,
haciendo que toda la fórmula matricial sea volátil. Esto significa que la fórmula
tiene que ser recalcular constantemente mientras está trabajando en el libro. Por
ello, no resulta el mejor camino a seguir.
A continuación mostramos otra fórmula que podría utilizar, siendo ésta u n a
mejor elección.

=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

Seleccione la celda C2 y luego vaya a Datos>Validación. Seleccione la opción


Lista en el cuadro de lista desplegable y en el cuadro de texto Origen, escriba
1,2,3,4,5,6,7,8,9,10. Asegúrese de que está activada la casilla de verificación Celda
con lista desplegable y entonces haga clic en Aceptar. En la celda Cl, introduzca
"SUMAR cada..." y en cualquier otra celda a partir de la fila 1, introduzca esta
forma:

=BDSUMA($A:$A;1;$E$1:$E$2)

En la celda inmediatamente superior a la que introdujo la función BDSUMA,


introduzca esto:
="Sumando cada " & $C$2 & " celdas"

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.

m Encontrar la enésima aparición de un valor


Las funciones de búsqueda incorporadas en Excel pueden hacer un trabajo
estupendo, pero desgraciadamente Excel no dispone de una única función
que devuelva la enésima aparición de un dato especificado. Por suerte,
existen algunos métodos para que Excel pueda hacer esto.

Puede utilizar las funciones de búsqueda y de referencia de Excel sobre u n a


tabla de datos para extraer los detalles correspondientes a un valor específico.
Quizá la más popular de todas esas funciones sea BUSCARV. Aunque es estupenda
para encontrar un valor específico en la columna más a la izquierda de u n a ta-
bla, no puede utilizarla para encontrar la enésima aparición de dicho valor en la
columna más a la izquierda.
210 Excel. Los mejores trucos

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

Figura 6.11. Posible resultado final con formato.

Sin embargo, podemos utilizar un método m u y simple para encontrar cual-


quier aparición de un valor específico utilizando la función BUSCARV o u n a de
las otras funciones de búsqueda.
Para este ejemplo, supondremos que tiene u n a tabla con dos columnas de
datos, siendo la columna A la que contiene los nombres y la columna B las eda-
des correspondientes a cada u n o de ellos, tal y como se muestra en la figura 6.12.

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.

Puede utilizar la función BUSCARV para extraer la edad de u n a persona ba-


sándose en su nombre. Por desgracia, algunos nombres puede que aparezca más
de una vez. Lo que deseamos es poder buscar el nombre de David y hacer que la
función BUSCARV no sólo encuentra la primera aparición, sino también todas
las demás que pudiera haber. A continuación veremos cómo podemos hacer esto
(recuerde que en este ejemplo los datos están en las columnas A y B).
Primeramente seleccione la columna A por completo haciendo clic en la letra
A que aparece en su encabezado y luego seleccione la opción lnsertar>Columnas
para insertar u n a nueva columna en blanco (que se convertirá en la nueva co-
6. Trucos sobre fórmulas y funciones 211

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.

Si no se ha dado cuenta todavía, observe que puede utilizar la columna A para


encontrar las ocurrencias de un cierto nombre.
Haga clic en la celda D2 e introduzca la siguiente fórmula:
= BUSCARV("David3";$A$1:$ C$10 0;3;FALSE)

La fórmula le devolverá la edad de la tercera aparición del nombre "David", tal


y como puede verse en la figura 6.14.
Por supuesto, puede ocultar la columna A, ya que no es necesario verla.
También puede utilizar los nombres de la columna A como rango de origen
para u n a lista situada en otra celda, seleccionando la opción Datos>Validación y
luego eligiendo la opción Lista. Luego haga u n a referencia a la celda que conten-
ga esta lista en la función BUSCARV.
212 Excel. Los mejores trucos

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

Figura 6.14. Datos obtenidos con la segunda fórmula BUSCARV añadida


a la columna D.

TRUCO Hacer que la función subtotal de Excel


sea dinámica
Aunque la función SUBTOTALES es una de las funciones de Excel más
recomendables, a veces deseará poder elegir qué operación realiza o aplica
a aquellos datos que pueden expandirse y contraerse.

La función SUBTOTALES de Excel se utiliza para realizar u n a función especí-


fica sobre un rango de celdas que tienen configurado un Autofiltro. En estos
casos, la función SUBTOTALES sólo utilizará las celdas visibles (las celdas ocultas
son ignoradas). La operación que realiza esta función depende solamente del n ú -
mero (entre 1 y 11) que proporcione como primer argumento (núm_función).
Por ejemplo:

= SUBTOTALES(1;Al:Al0 0)

Calcula el promedio de todas las celdas visibles en el rango Al :A100 después


de que se haya aplicado un Autofiltro. Si todas las filas son visibles, esta función
simplemente obtendrá el promedio de todas ellas al igual que lo haría la función:
=PROMEDIO(Al:A100)

El número que ha de proporcionarse como primer argumento de la función


SUBTOTALES es núm_función, y que se corresponde con las funciones que se
muestran en la siguiente tabla.
6. Trucos sobre fórmulas y funciones 213

Tabla 6.1. Números de función para SUBTOTALES y su correspondiente función

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).

Para hacer que el cuadro de lista desplegable se ajuste automáticamente


^\ al tamaño de la columna y la fila en la que reside, mantenga pulsada
^\, la tecla Alt mientras cambia el tamaño del control.
214 Excel. Los mejores trucos

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:

=SI($C$2="";"";"Resultado de " & ÍNDICE(Subs;$C$2))

En la celda C4 introduzca la siguiente fórmula:


=SI($C$2="»;"»/SUBTOTALES($C$2/$A$4:$A$10 0))

donde $A$4:$A$100 es el rango sobre el que debe actuar la función SUBTO-


TALES.
Ahora todo lo que necesita hacer es seleccionar la función SUBTOTALES en el
cuadro de lista desplegable, con lo que se mostrará el resultado correspondiente,
tal y como se muestra en la figura 6.15.

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

Figura 6.15. Una función SUBTOTALES ajustable.

TRUCO Añadir extensiones de fecha


Los formatos de fechas de Excel consisten en diferentes formas que pueden
ser utilizadas para mostrar una fecha. Sin embargo, un formato que
siempre se ha echado de menos en Excel (por los angloparlantes) es aquel
capaz de mostrar una fecha al estilo 15th October 2003. Podemos
conseguir que Excel haga esto en caso de que lo necesitemos.

Este truco está orientado a aquellas personas que utilicen la versión


Sy en inglés de Excel, que tengan establecida la configuración regional de
w\ su sistema operativo en ese mismo idioma y deseen utilizar este formato
de fechas cuando creen hojas de cálculo que estén orientadas al público
angloparlante.

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

configurar un formato personalizado para mostrar las fechas de esta manera.


Aunque muchas personas simplemente aceptan que esto no es posible, mostra-
remos un método para poder llevarlo a cabo.
En u n a hoja en blanco, comenzando por la celda A l , introduzca los siguientes
datos en las siguientes celdas: A l = s t , A2=nd, A3=rd, A4:A20=th, A21=st,
A22=nd, A23=rd, A24:A30=th, A31=st.
Asigne el nombre "Extensiones" a este rango, luego vaya a lnsert>Name>Define
y en el cuadro de texto Ñames in Workbook escriba "HoyPersonalizado".
En el cuadro de texto Refers To, introduzca la siguiente fórmula:

=TEXT(TODAY(),"dddd d n ) & INDEX(Extensiones,DAY(TODAY()),1) &


TEXT(TODAY()," mmmm yyyy")

Luego haga clic en Add y en OK.


Ahora, en cualquier celda, introduzca = H o y P e r s o n a l i z a d o y la fecha actual
se mostrará con el formato: ThursDay l ó t h October 2 0 0 3 .
Si prefiere utilizar celdas en la hoja para almacenar las extensiones de fecha
(es decir, th, st, rd y nd), puede utilizar la función CHOOSE para almacenarlas.
Para ello, vaya a lnsert>Name>Define y en el cuadro de texto Ñames in Workbook
introduzca la palabra "Dia". En el cuadro de texto Refers to introduzca la si-
guiente fórmula:

=DAY(TODAY( ))

Haga clic en Add. Vuelva al cuadro de texto Ñames in Workbook e introduzca


el texto "HoyPersonalizado".
En el cuadro de texto Refers to introduzca la siguiente fórmula y luego haga
clic en el botón Add:
=TEXT(TODAY(),"dddd
d")&IF(Day=31,"st",IF(Day=3 0,"th", CHOOSE(Dia,"st","nd","rd","th","th",
"th","th","th","th","th","th","th","th","th","th","th","th","th","th",
"th", "st", "nd", "rd", "th", "th","th", "th", "th","th") ) )& TEXT(TODAY( ) ,"
mmmm yyyy")

Después de hacer clic en OK, puede introducir la fórmula = H o y P e r s o n a l i z a d o


en cualquier celda en la que desee mostrar este formato de fecha.

La fecha devuelta por cualquiera de estas funciones no será una fecha


numérica verdadera tal y como suele hacer Excel, sino que simplemente
/ será una entrada de tipo texto. Esto significa que no podrá hacer
referencia a esta celda en una fórmula que esté esperando un dato
numérico.
216 Excel. Los mejores trucos

TRUCO Convertir números con signo negativo


a la derecha a números de Excel
¿Ha tenido que trabajar alguna vez con números negativos importados que
tienen el signo negativo a la derecha? SAP es uno de esos programas que
hacen este tipo de cosas con los números (200-en vez de -200). Tener que
cambiar esto a mano de forma que Excel pueda entenderlos es tedioso,
pero no tiene por qué ser necesariamente así.
Supongamos que tiene u n a larga lista de números que acaba de importar y
que algunos de ellos están en el formato que acabamos de describir. Nuestro
trabajo consistirá en convertir esos números en valores negativos que Excel pue-
da reconocer. Para los propósitos de este ejercicio, utilizaremos el rango Al :A100.
Coloqúese en la celda B l e introduzca la siguiente fórmula:
=SUSTITUIR(SI(DERECHA(ESPACIOS(Al))= -";DERECHA(ESPACIOS(Al)) &
Al;Al);"-»;"»;2)+0

Introduzca esta fórmula en tantas celdas de la columna como sea necesario y


luego cópiela. Seleccione la celda Al y vaya a Edición>Pegado especial y selec-
cione la opción Valores para eliminar las fórmulas y dejar solamente los valores.
En la figura 6.16 puede ver un ejemplo de la situación antes y después de llevar a
cabo esta tarea (A1:A7 representa el antes).

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.

Para darnos u n a idea de cómo funciona la fórmula, introduzca la siguiente


fórmula en cualquier celda, siempre que la celda Al contenga el valor 200-:
=DERECHA(ESPACIOS(Al);1) &A1

Acabará teniendo -200-.


La función ESPACIOS simplemente se asegura de que no haya espacios por
delante y por detrás del texto de u n a celda. Dado que nuestro valor terminar con
un -, necesitamos quitar esa segunda aparición. Aquí es donde entra enjuego la
función SUSTITUIR. Le diremos que sustituya la segunda aparición de - por ""
(texto vacío). El resultado de esta operación será de tipo texto (ya que la función
6. Trucos sobre fórmulas y funciones 217

SUSTITUIR devuelve un valor de tipo texto), por lo que simplemente añadiremos


+ 0, con lo que Excel lo convertirá en un número.
Si va a tener que utilizar este método con frecuencia debería considerar utili-
zar u n a macro que haga el trabajo por usted. A continuación le presentamos
dicha macro:
Sub ConvertirNegativos( )
Dim rCell As Range
Dim rRange As Range
Dim ICount As Long
Dim lLoop As Long
1
Nos aseguramos de tener seleccionados los datos, y en caso contrario,_
se muestra un mensaje y la macro termina.
If Selection.Cells.Count = 1 Then
MsgBox "Debe seleccionar el rango a convertir.", vblnformation
Exit Sub
End If

'Establece una variable sólo para las celdas de tipo texto, por ejemplo,
200-
On Error Resume Next
Set rRange = Selection.SpecialCells(xlCellTypeConstants, xlTextValues)

'Si esta variable devuelve "Nothing", es que no hay números negativos


'incorrectos, con lo que se muestra un mensaje y termina la macro
If rRange Is Nothing Then
MsgBox "No se encontraron números negativos incorrectos",
vblnformation
On Error GoTo 0
Exit Sub
End If

'Cuenta el número de celdas del tipo 200- y pasa el resultado a una


'variable que controlará el número de ciclos necesarios para el bucle.
ICount = WorksheetFunction.Countlf(Selection, "*-")
'Establece una variable a la primera celda de la selección
Set rCell = Selection.Cells(1, 1)

'Bucle que se repite tantas veces como números negativos


incorrectos haya
For lLoop = 1 To ICount
'En cada ciclo, se establece una variable a la celda que
contiene *-
'El asterisco es un símbolo comodín
Set rCell = rRange.Find(What:="*-", After:=rCell, _
Lookln:=xlValues, LookAt:=xlPart, _
SearchOrder:=xlByRows, SearchDirection:= _
xlNext, MatchCase:=False)
'Utilizamos la función estándar Reemplazar para reemplazar el
218 Excel. Los mejores trucos

'signo negativo por el texto vacio, es decir, eliminamos dicho signo.


rCell.Replace What:="-", Replacement:=""
'Multiplicamos la celda por -1 para convertirla a un número
negativo
rCell = rCell * -1
Next lLoop

On Error GoTo 0
End Sub

Para escribir esta macro, vaya a Herramientas>Macro>Editor de Visual Basic


( A l t / O p c i ó n - F l l ) . Ahora seleccione lnsertar>Módulo y copie el código anterior.
Cierre la ventana para volver a Excel y vaya a Herram¡entas>Macro>Macros y
seleccione la macro que acabamos de crear. Haga clic en Opciones., para asignar
u n a tecla de acceso rápido. A partir de ahora, si necesita convertir esos números
negativos importados a verdaderos números negativos que Excel pueda recono-
cer, simplemente seleccione el rango de números y utilice la tecla de acceso rápi-
do que asignó.

Mostrar valores de hora negativos


A veces deseará mostrar valores de hora negativos, pero Excel sólo
mostrará ######. Existen numerosos métodos para solucionar este
problema.

Si introduce la hora 12:00:00 (mediodía) en una celda y luego le asigna el


formato General, observará que tiene un valor numérico de 0,5. De forma simi-
lar, introduzca la hora 24:00:00 en cualquier celda, observe la barra de fórmulas
y verá cómo Excel muestra 1/1/1900 24:00:00.
Excel trata las fechas y las horas simplemente como números. En el caso de
las fechas, Excel, de forma predeterminada, considera que el 1 de enero de 1900
se corresponde con el valor numérico 1, el dos de enero de 1900 se corresponde
con el valor numérico 2, y así sucesivamente. Las horas son consideradas como
números decimales, a excepción del mediodía, que tiene un valor numérico de 1.
Debido a esto, Excel tiene un verdadero problema a la hora de tratar horas nega-
tivas.
A continuación mostramos tres métodos para conseguir que Excel muestre
valores de hora negativos.

Método 1. Cambiar el sistema de fecha predeterminado de Excel


Un método rápido y sencillo para mostrar valores negativos es seleccionar
Herramientas>Opciones, ir a la pestaña Calcular y activar la casilla de verifica-
6. Trucos sobre fórmulas y funciones 219

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.

Método 2. Utilizar la función TEXTO


El segundo método requiere del uso de la función TEXTO. Para empezar, in-
troduzca 5:00:00 en la celda A2, 6:00:00 en la celda A3, y en la celda A4 escriba
lo siguiente:
=TEXTO(MAX($A$2:$A$3)-MIN($A$2:$A$3);"-H:MM")

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.

> Debe saber que el resultado devuelto es de tipo texto, no numérico.


> Esto es importante en caso de que necesitase un valor numérico para
^ otra fórmula.

Método 3. Utilizar un formato personalizado


Último método para mostrar horas negativas, sin tener cambiar al sistema de
fechas de 1904 pero que devuelva valores numéricos reales, es ir a Formato>Celdas,
220 Excel. Los mejores trucos

seleccionar la categoría Personalizado y utilizar un formato personalizado -h:mm.


Este método funciona solamente en caso de que siempre desee mostrar los valo-
res de hora negativos. También requiere que siempre reste la hora que sea infe-
rior de la hora que sea superior, lo que significa que todas las veces la hora será
realmente positiva pero se mostrará como negativa.
Por tanto, utilizando cualquiera de estos tres métodos, será capaz de mostrar
horas en negativo. Simplemente recuerde que cada método tiene sus inconve-
nientes, por lo que utilícelos teniendo estos inconvenientes en mente.

^ g g Utilizar la función BUSCARV a lo largo de múltiples


WJm tab,as
• • ^ B Aunque de por sí la función BUSCARV es muy útil, está restringida a la
búsqueda de valores en una tabla específica para devolver un resultado, lo
que a veces no será suficiente. Podemos superar esta limitación si
utilizamos la función INDIRECTO.
A veces deseará utilizar u n a única fórmula BUSCARV que busque en diferen-
tes tablas con datos que estén en u n a hoja de cálculo. Una de las formas para
poder hacer esto es anidar muchas funciones BUSCARV j u n t a s , indicándoles que
busquen en u n a tabla específica dependiendo de un número que introduzca en
otra celda. Por ejemplo:

=SI(Al=l;BUSCARV(Bl;Tablal;2;FALSO);IF(Al=2;BUSCARV(Bl;Tabla2;2;
FALSO);""))

En esta fórmula, estamos diciéndole a la función BUSCARV que busque en el


rango con nombre Tabla 1 en caso de que la celda Al contenga el número 1
(SI(Al = l;BUSCARV(Bl;Tablal;2;FALSO)) y que busque en un rango llamado
Tabla2 en caso de que la celda Al contenga el número 2 (IF(A1= 2 BUSCARV
(Bl;Tabla2;2;FALSO);MM)).
Como puede imaginarse, la fórmula sería mucho más larga y enrevesada si
tiene que utilizar más de dos funciones SI anidadas. La siguiente fórmula, por
ejemplo, utiliza solamente cinco funciones anidadas, pero ya es complicadísima:
=SI(Al=l;BUSCARV(Bl;Tablal;2;FALSO);SI(Al=2;BUSCARV(Bl;Tabla2;2;
FALSO);SI(Al=3;BUSCARV(Bl;Tabla3;3;FALSO);SI(Al=4;BUSCARV(Bl;Tabla4;
2/FALSO);SI (Al=5;BUSCARV(Bl;Table5/2;FALSO);"")))))

Aunque esta fórmula devuelve los resultados deseados, podemos conseguir


que la fórmula sea mucho más corta, añadir más de cinco condiciones y acabar
teniendo una fórmula que sea m u y sencilla de manejar. Supongamos que tiene
12 tablas diferentes configuradas en u n a hoja de cálculo, cada u n a de las cuales
6. Trucos sobre fórmulas y funciones 221

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!

|n 4 • H \ Hojal / HojaZ / Hoja3 / Hoja4 / HojaS / Hoja6 / Hoja? \ HojaS / j< { , _ i »H 1

Figura 6.17. Doce tablas, cada una representando un mes del año.

Seleccione la celda A l . Entonces vaya a Datos>Validación y en la pestaña Con-


figuración, seleccione la opción Lista en el cuadro de lista desplegable. El cuadro
de texto Origen escriba cada uno de los meses del año, separándolos por comas.
Es m u y importante que los nombres de rangos para cada tabla sean los mismos
que los nombres de los meses que ha utilizado en la lista de validación. Haga clic
en Aceptar. Ahora seleccione la celda Bl y configure para ella u n a lista de vali-
dación de la misma forma que acabamos de explicar, esta vez utilizando los n o m -
bres de cada u n o de los empleados. Si los nombres de éstos son m u y largos para
escribirlos, simplemente haga u n a referencia al rango de celdas que los contie-
nen para que sea el origen y luego haga clic en Aceptar.
En la celda A2 introduzca esta fórmula:
=BUSCARV($B$1;INDIRECTO($A$1);2;FALSO)

Seleccione el mes que desee en la lista situada en la celda Al y el nombre del


empleado en la lista situada en la celda B2, y la fórmula que se encuentra en A2
devolverá la cantidad correspondiente para la persona y el mes seleccionados.
222 Excel. Los mejores trucos

Existen algunas ventajas de utilizar esta aproximación. Si no está


H^ familiarizado con la función INDIRECTO, la hemos utilizado para leer
v-^ los contenidos de una celda como si fuera la dirección de un rango en
vez de un texto. Como hemos dado nombre a 12 rangos diferentes,
cada uno de los cuales representando un mes del año, la fórmula que
utilizar la función INDIRECTO leerá la palabra "Enero" como referencia
un rango en vez de como una cadena de texto. Otra ventaja de utilizar
una fórmula que incluye la función INDIRECTO es que puede librarse
de la restricción de Excel que impide tener más de siete niveles de
anidamiento en las funciones.

m Mostrar el tiempo total como días, horas y minutos


Cuando añade horas en Excel, puede hacer que el resultado devuelto
aparezca como el total de horas y minutos, pero por desgracia, no como
días, horas y minutos. Para poder mostrar esto necesitaremos hacer algún
trabajo extra.

Por ejemplo, si el tiempo total es igual a 75 horas, 45 minutos y 0 segundos,


el total normalmente se mostraría como 75:45:00, proporcionándolos este re-
sultado en una celda cuyo formato personalizado fuese [h]:mm:ss, lo que permi-
te mostrar horas superiores a 24. Aunque ciertamente es un resultado correcto,
también significa que tendríamos que calcular manualmente cuántos días, h o -
ras y minutos representa esta cantidad. Esto puede llevar cierto tiempo y además
es susceptible de calcular sea erróneamente.
Supongamos que tiene u n a lista de horas válidas en las celdas A1:A10 y que
en la celda Al 1 tiene u n a función SUMA normal que está sumando el total de
horas, es decir, contiene la fórmula =SUMA ($A$1: $A$10). Si el total de esta suma
excede de las 24 horas, el resultado de la celda que contiene a esta función debe-
ría tener el formato [h]:mm. Supongamos que el resultado de esta suma total es
de 306:26:00, que, por supuesto, son 306 horas y 26 minutos. Sin embargo, con
esta información no sabemos cuántos días, horas y minutos representa.
Para mostrar el resultado de esa forma, utilizaremos la siguiente fórmula:
=ENTER0(A11) &» Dias " & ENTERO(RESIDUO(All;ENTERO(All))*24) & " horas y
" & MINUTO(All) & » minutos a"

Teniendo en cuenta que la celda Al 1 contiene el valor 306:26:00, el resultado


correspondiente debería ser de 12 días, 18 horas y 26 minutos. Veamos cómo
funciona esto. Si no está familiarizado con la forma en la que Excel almacena y
utiliza las fechas y horas, primero debería consultar el truco 38.
Seleccione la celda con la fórmula que calcular el resultado y haga clic en el
botón fx que parece justo a la izquierda de la barra de fórmulas (en versiones
anteriores de Excel y en la versión para Macintosh el botón contiene el signo =).
6. Trucos sobre fórmulas y funciones 223

Haga clic en la primera aparición de la función ENTERO que aparece en la barra


de fórmulas. Esta función devolverá el valor entero 12 a partir del valor
12,76805556. Este n ú m e r o representa cuántos días hay.
A continuación, debemos calcular cuántas horas quedan después de quitar
esos 12 días. Haga clic en la segunda función ENTERO que aparece en la barra de
fórmulas. Aquí estamos utilizando la función RESIDUO ( A l l ; ENTERO (All) para
devolver el resto de dividir 12,76805556 por 12, que es 0,76805556 (el n ú m e r o
de minutos representado como un número decimal). Ahora debemos multipli-
carlo por 24 (lo cual nos da 18,433333) para devolver un número que represen-
tará la cantidad de minutos. Dado que sólo queremos el número entero, incluimos
la fórmula RESIDUO ( A l l /ENTERO ( A l l ) ) *24 dentro de u n a función ENTERO,
que se encarga de quitar la parte decimal.
Haga clic en la función MINUTOS dentro de la barra de fórmulas. Esta fun-
ción devolverá el valor 26 a partir del número de serie 12,7680556.
Dado que el valor devuelto por la función MINUTOS nunca será un valor
numérico, sería sensato mantener al menos la función original SUMA, que de-
vuelve el total de horas en u n a celda, de forma que pueda ser referenciada y
utilizada para cálculos posteriores en caso de que sea necesario. Por supuesto, la
fila que contiene el total de horas puede ser ocultada.

TRUCO Determinar el número de días especificados que


aparecen en cualquier mes
Cuando esté creando aplicaciones relacionadas con calendarios, en especial
aplicaciones de nómina, a veces necesitará conocer cuántas veces aparece
un cierto día de la semana en un mes en particular.

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é")

la cual nos devolvería 5, ya que hubo cinco miércoles en el mes de diciembre


de 2003.
224 Excel. Los mejores trucos

De forma similar, la siguiente función:


=CuantosDiasEnUnMes("1/12/03","jue")

nos devolvería 4, ya que solamente hubo cuatro jueves en el mes de diciembre


de 2003. Para utilizar esta función personalizada en un libro, primero debe escri-
bir el siguiente código en un módulo estándar. Para ello, abra el libro en el que
desea colocar esta macro y vaya a Herramientas>Macro>Editor de Visual Basic
( A l t / O p c i ó n - F l l ) . Luego seleccione lnsertar>Módulo y escriba el siguiente código:

Function CuantosDiasEnUnMes(FechaCompleta As String, sDia As String) As


Integer
Dim i As Integer
Dim iDia As Integer, iDiaCoincidente As Integer
Dim iDiasEnMes As Integer
Dim FechaCompletaNueva As Date

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

Cierre de esta ventana para volver a Excel.


Ahora simplemente ha de introducir la función en cualquier celda como vi-
mos antes, y Excel devolverá un n ú m e r o que representa cuántas veces apareció
el día especificado en el mes que hayamos elegido.
6. Trucos sobre fórmulas y funciones 225

K | ^ ^ 3 Construir mega fórmulas


jt ^ E T ^ H Las mega fórmulas (fórmulas que contienen fórmulas y a su vez otras
^ B A ^ H fórmulas) son lo suficientemente complicadas para que incluso los expertos
en Excel salgan corriendo. Con un poquito de esfuerzo y trabajando paso a
paso hasta conseguir la fórmula que deseamos, podemos afrontar esas
complejas mega fórmulas sin miedo.

¿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)

La función ENCONTRAR busca u n a cadena de texto (el primer parámetro)


dentro de otra cadena de texto (el segundo parámetro) y devuelve un n ú m e r o
que es la posición en la que se encuentra dicha cadena dentro de la otra.
Ésta es la sintaxis de esta función:
ENCONTRAR(texto_buscado;dentro_del_texto;núm_inicial)

Con esto encontraremos la posición inicial del primer carácter espacio en la


celda A l , ya que dijimos que buscase la cadena " " (un espacio). En el caso de
David Pérez Cardenal, debería devolver el valor 6. Pero nosotros estamos buscan-
226 Excel. Los mejores trucos

do el segundo espacio, no el primero. Lo que haremos será utilizar el n ú m e r o


devuelto por la primera fórmula (en Cl) y lo utilizaremos como punto de partida
para otra función ENCONTRAR que buscará el segundo espacio. Por tanto, en la
celda C2, introduzca lo siguiente:
=ENCONTRAR(" ";A1;C1+1)

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)

Esta función devuelve un n ú m e r o de caracteres especificado a partir de la ca-


dena de texto, comenzando por la posición que hayamos especificado y tomando
tantos caracteres como indiquemos. Aquí podemos ver su sintaxis:
EXTRAE(texto;posición_inicial;núm_de_caracteres)

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

pegue la función ENCONTRAR (Control-V) que acabamos de copiar en el


portapapeles. Pulse Intro. Al hacer esto, la celda C3 debería quedar de la siguien-
te forma:

=EXTRAE(Al;ENCONTRAR(" ";Al;Cl+1)+1;2 56)

Ahora necesitamos reemplazar la referencia a la celda Cl con la función que


hay dentro de dicha celda. Seleccione la celda Cl, sombree toda la fórmula excep-
to el signo de = en la barra de fórmulas, copíela en el portapapeles (Control-C) y
luego seleccione la celda C3. Sombree Cl en la barra de fórmulas y pegue el
contenido del portapapeles. Luego pulse Intro.
Ahora todo lo que hay que hacer es cortar la celda C3 y pegarla en la celda Bl,
luego eliminar las celdas Cl y C2. Al final deberíamos tener u n a fórmula como
esta:

= EXTRAE(Al;ENCONTRAR(" ";Al;ENCONTRAR(" ";Al)+1)+1;2 5 6)

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.

R ^ ^ S Trucar mega fórmulas que hagan referencia


a otros
§ B»9 libros
^MM^HI Las fórmulas de Excel se complican cuando una mega fórmula hace
referencia a otro libro. No sólo necesita incluir las referencias a celdas, sino
también los nombres de libros hojas de cálculo, e incluso, la ruta completa
al libro en caso de que esté cerrado. Existen numerosos métodos para
simplificar lo que podría ser un proceso muy complejo.

Escribir tales fórmulas desde cero puede convertirse en pesado rápidamente.


Con este truco, le mostraremos un método rápido y sencillo que le permite cons-
truir estas fórmulas sin la necesidad de utilizar nombres de libros y rutas de
archivos. El método es t a n simple que a veces lo pasamos por alto.
En primer lugar hemos de aseguraremos de que estamos utilizando los con-
venios correctos a la hora de referencia a celdas y hojas de cálculo. Cuando se
escribe u n a fórmula, siempre es u n a buena idea no introducir nunca referencias
a celdas, nombres de hojas o nombres de libros, porque ello podría incluir tipos y
sintaxis incorrectas. La mayoría de las personas que están en un nivel interme-
dio normalmente utilizan el cursor del ratón para introducir las referencias a
228 Excel. Los mejores trucos

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))

Se trata de u n a simple función SUMA anidada dentro de u n a función ENTE-


RO. Como hace referencia a celdas situadas en un libro cerrado, debe incluir la
ruta completa j u n t o con las referencias a celdas, el nombre de la hoja y el libro.
Sin embargo, si tuviese que anidar alguna otra función dentro de esta, ya se
convertiría en algo prácticamente imposible de escribir.
A continuación veamos un rápido método para escribir mega funciones que
hagan referencia a libros externos. El truco consiste simplemente en escribir la
función en el libro al que haremos referencia en u n a celda aparte. Si solamente
va a hacer una referencia a u n a hoja en este libro, es mejor utilizar u n a celda en
esta hoja.
En primer lugar, al igual que hicimos en el truco para mostrar el número de
veces que aparecía un día en un mes, desarrollaremos la fórmula en u n a celda
aparte en el libro en el que acabará la referencia. Una vez tengamos el resultado
deseado, cortaremos la fórmula de dicha celda, activaremos el libro en el que
debería aparecer el resultado, seleccionaremos la celda apropiada y te daremos la
fórmula.
Excel hace todo el trabajo duro al incluir los nombres de libro y cualquier
nombre de hoja. En caso de que necesite modificar o añadir algo la fórmula,
simplemente abra el libro que está siendo referenciado, corte la fórmula desde el
libro original y pegúela en el libro referenciado. Luego haga los cambios necesa-
rios, corte y pegue de nuevo la fórmula en el lugar de donde procedía.

Trucar una de las funciones de base de datos


de Excel para que haga el trabajo de muchas
funciones
Las funciones de base de datos de Excel (BDSUMA, BDCONTAR, etc)
pueden hacer el trabajo de cientos de funciones, reduciendo tanto el
tiempo de cálculo como el espacio ocupado en el libro.

Cuando utilice funciones de base de datos de Excel, puede especificar hasta


256 criterios diferentes. Por ejemplo, puede que desee sumar cantidades que hay
en la columna A, pero sólo aquellas en cuya celda correspondiente en la columna
6. Trucos sobre fórmulas y funciones 229

B haya un número m a y o r que 100 y en la de la celda C haya un número menor


que 40. Si, por el contrario, desea sumar las cantidades cuyos valores correspon-
dientes en la columna B son menores que 50, necesita utilizar otra función y un
rango diferente como criterio. Sería mucho más sencillo si tuviésemos u n a única
función y pudiésemos cambiar fácil y rápidamente el criterio. Si nunca ha utili-
zado las funciones de base de datos de Excel con anterioridad, le recomendamos
encarecidamente que se familiarice con ellas, ya que son m u y buenas para ex-
traer información estadística a partir de u n a base de datos o u n a tabla de Excel.
Para ver cómo funciona, rellene algunos datos tal y como se muestra en la
figura 6.18. Mantenga los encabezados de columnas de la misma forma, pero
puede introducir los datos que desee debajo de ellos. Mientras que ahora le pone
a esta tabla el nombre de "TodosLosDatos", incluyendo todos los encabezados, a
la hoja le dará el nombre de "Datos".

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 ;

Figura 6.18. Datos propuestos.

Inserte otra hoja y llámela "Resultados". En la celda A2, introduzca la siguien-


te fórmula:
=Datos!Al

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.

Los datos correspondientes deberían extraerse de la tabla cuyo nombre ha


introducido en la celda A3. Éste es sólo un ejemplo simple de cómo puede utilizar
la función BDEXTRAER para extraer información relevante.

Si obtiene el error #NUM!, significa que tiene dos o más nombres


idénticos en la columna Nombre.
/
Llegados a este punto, la mayoría de las personas seguirían el mismo concep-
to para todos los nombres para los que quisieran extraer información de la tabla.
Sin embargo, este esfuerzo no es necesario.
Dado que siempre estamos haciendo referencia a la celda A3 para el nombre,
tendría mucho más sentido en la mayoría de los casos si simplemente pudiéra-
mos utilizar u n a lista desplegable en la celda A3 que contuviese todos los n o m -
bres que hay en la tabla. Podemos utilizar la función estándar de validación de
Excel para crear dicha lista. Sin embargo, como la lista original de nombres está
ubicada en otra hoja, no podemos hacer referencia para lista de la misma forma
que lo haríamos a u n a lista que estuviese en la misma hoja (es decir, u n a referen-
cia a un rango estándar). Podemos resolver este problema fácilmente dándole
nombre a la columna Nombre de la tabla original, y luego utilizando ese nombre
como origen de la lista para la validación.

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.

Haga clic de nuevo en la hoja Datos, y teniendo seleccionada cualquier celda,


vaya a lnsertar>Nombre>Definir. En el cuadro de texto Nombres en el libro intro-
duzca "Nombres" y en el cuadro de texto Se refiere a introduzca la siguiente
fórmula, y luego haga clic en Agregar:
=DESREF($A$2;0;0;CONTARA($A$2:$A$1000);1)

Haga clic en la hoja Resultados, seleccione la celda A3 y luego v a y a a


Datos>Validación.
6. Trucos sobre fórmulas y funciones 231

Seleccione la opción Lista del cuadro de lista desplegable y en el cuadro de


texto Origen introduzca lo siguiente:
=Nombre

Asegúrese de que la casilla de verificación Celda con lista desplegable esté


activada y luego haga clic en Aceptar. Ahora ya puede seleccionar cualquier
nombre de la lista de la celda A3 y los datos que hay a la derecha mostrarán la
información correspondiente de forma automática. Podemos llevar esto a un ni-
vel superior y utilizar la función BDCONTAR para extraer la cantidad de perso-
nas cuyo coste total es m a y o r que un cierto número que especifiquemos y un
porcentaje pagado menor que otro número que también especificaremos.
Para ello, primeramente necesitará crear un rango dinámico con nombre para
la columna Coste total y para la columna Pagado. En el cuadro de texto Nombres
en el libro introduzca "Coste_totalM y en el cuadro de texto Se refiere a introduzca
la siguiente fórmula, tras lo cual debe pulsar Agregar:
=DESREF($C$2;0;0;CONTARA($C$2:$C$1000);1)

Esta vez, en el cuadro de texto Nombres en el libro introduzca "PorcentajePagado"


y en el cuadro de texto Se refiere a introduzca la siguiente fórmula, tras lo cual
debe pulsar Agregar.
=DESREF($E$2;0;0;CONTARA($E$2:$E$1000);1)

Active la hoja Resultados, seleccione la celda Al 1 y luego seleccione


Datos>Validación. Seleccione la opción Lista y luego introduzca en el cuadro de
texto Origen el texto M = Coste_total". Haga clic en Aceptar. Seleccione la celda
B l l y luego vaya a Datos>Validación. Seleccione la opción Lista y luego intro-
duzca en el cuadro de texto Origen el texto " = Porcentaje_pagado M . Haga clic en
Aceptar.
En la celda A l 2 introduzca lo siguiente:
=Datos!Cl

Seleccione la celda B12 e introduzca lo siguiente:


=Datos!El

Seleccione la celda Al 3 e introduzca lo siguiente:


=">" & All

Seleccione la celda B13 e introduzca lo siguiente:


= "<" Se TEXTO ( B l l ; " 0 % " )
232 Excel. Los mejores trucos

En la celda Al 5 introduzca lo siguiente:


=DCONTAR(TodosLosDatOS;$A$12;$A$12:$B$13)

Seleccione cualquier cantidad de coste total desde la celda Al 1 y cualquier


porcentaje pagado desde la celda B l l y la función BDCONTAR le devolverá el
n ú m e r o de personas que coinciden con ese criterio. Por ejemplo, si ha selecciona-
do 65 y 100%, estará extrayendo la cantidad de personas que tienen un coste
total mayor que 65 y un porcentaje pagado menor que el 100%.
Como puede ver, puede utilizar esta función BDCONTAR para extraer cual-
quier combinación de criterios para las columnas Coste total y Porcentaje paga-
do. Con un poco más de trabajo, puede llevar esto todavía a un nivel superior y
hacer que los operadores de comparación utilizados en criterio sean intercambia-
bles.
Lo primero que tiene que hacer es crear u n a lista de operadores de compara-
ción que puedan ser utilizados en la lista de validación. Vaya a u n a columna que
no esté siendo utilizada en la hoja Resultados y en cualquiera de las filas de dicha
columna, introduzca el encabezado "Operadores". Debajo de éste, en cada u n a de
las celdas siguientes, introduzca = , > = , > , < y < = , tal y como se muestra en la
figura 6.19.

Opeiütloies

Figura 6.19. Operadores de comparación.

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

escriba "Fechas" y en el cuadro de texto Se refiere a escriba la siguiente fórmula y


luego haga clic en Agregar:
= DESREF($B$2;0;0;CONTARA($B$2:$B$10 00) ;1)

Seleccione la celda G7, cópiela y pegúela en la celda G9. Cambie la palabra


"Criterio" por "Fecha". Seleccione las celdas G10:H10, vaya a Datos>Validación y
luego seleccione la opción Lista en el cuadro de lista desplegable. En el cuadro de
texto Origen, introduzca " = Dates".
Asegúrese de que la opción Celda con lista desplegable esté activada y haga
clic en Aceptar. Seleccione la celda G i l e introduzca lo siguiente:
=Datos!$B$1

Propagúela hasta la celda Hl 1. Seleccione la celda G12, introduzca la siguien-


te fórmula (debería utilizar el formato de fecha) y cópiela hasta la celda H12:
=G8 & T E X T O ( G 1 0 ; " d d / m m / a a " )

En la celda F13, introduzca la palabra "Resultado" y céntrelo en la selección,


teniendo seleccionadas las celdas F 1 3 y G 1 3 . En la celda H13 introduzca la si-
guiente fórmula:

=BDSUMAR(TodosLosDatos;Datos!$C$1;$G$11:$H$12)

El resultado final debería parecerse al que se muestra en la figura 6.20, que,


como demostración, muestra todas las fórmulas.

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)

Figura 6.20. Hoja mostrando las fórmulas correctas y los encabezados.

Oculte las filas 11 y 12, ya que no necesitamos verlas. Terminará teniendo


una tabla lista para ser utilizada como la que se muestra en la figura 6.21, a la
que se ha aplicado un formato en particular para facilitar su lectura.
234 Excel. Los mejores trucos

Seleccione un criterio
>= <=
Seleccione una fecha
19/02/01 20/02/01
Resultado 90 €|

Figura 6.21. Hoja con la ínter faz final.

Utilizando este principio, puede tener fácilmente u n a o varias funciones de


base de datos haciendo el trabajo que de otra manera harían cientos de funcio-
nes.
CAPÍTULO 7

Trucos sobre macros


Trucos 81 a 94

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.

ü Acelerar el código y eliminar los parpadeos


de la pantalla
Cuando graba macros dentro de Excel, el código que es generado a veces
produce parpadeo se la pantalla, que no solamente ralentizar la macro, sino
que hacen que la actividad de la misma parezca muy desorganizada. Por
suerte, podemos eliminar esos parpadeos de la pantalla a la vez que
celebramos el código.

Uno de los inconvenientes de las macros grabadas en Excel es que el código


producido es a menudo m u y ineficiente. Esto puede significar que las macros
que deberían tardar solamente unos segundos para completarse a veces requie-
ren de mucho más tiempo y parecen m u y ineficaces. Además, cuando crea macros
utilizando la grabadora de macros, todas las pulsaciones de teclas se graban,
independientemente de que tengan o no sentido. Esto quiere decir que sigue co-
metiendo un error y que a continuación lo corrige, las pulsaciones requeridas
para completar esas acciones también son grabadas en el código de la macro.
Si ya ha jugado algo con macros y código en VBA, probablemente habrá oído
hablar de 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 . Si establece esta p r o -
piedad a F a l s e al inicio de u n a macro, no solamente estará deteniendo los par-
238 Excel. Los mejores trucos

padeos de la pantalla asociados a la macro grabada, sino que también estará


incrementando la velocidad de ejecución de la misma. La razón por la que este
método acelerar el código es porque Excel ya no necesita volver a dibujar la pan-
talla cada vez que encuentra un comando como pueda ser S e l e c t , A c t í v a t e ,
L a r g e S c r o l l , S m a l l S c r o l l y m u c h o s otros. Para incluir 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 al inicio de u n a macro existente,
vaya a Herramientas>Macro>Macros, seleccione la macro en cuestión, haga clic
en Modificar e introduzca el siguiente código:

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.

^ Q Q 3 Ejecutar una macro a una determinada hora


En m u c a s
(I ^Fv^l ^ ocasiones sería una gran idea poder ejecutar una macro a una
H H I ^ I hora predeterminada o a intervalos de tiempo específicos. Por suerte, Excel
proporciona un método VBA que hace que esto sea posible.

El método A p p l i c a t i o n . O n T i m e puede hacer que las macros se ejecutan


automáticamente u n a vez realizadas ciertas configuraciones. Supongamos que
tiene u n a macro que desea ejecutar cada día a las 15:00. En primer lugar debere-
mos determinar cómo lanzar el método OnTime. Podemos hacerlo utilizando el
evento Workbook_Open en el módulo privado del objeto Workbook.
7. Trucos sobre macros 239

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( )

Application.OnTime TimeValue("15:00:00"), "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

Private Sub Workbook_Open( )


Application.OnTime Now + TimeValue("00:15:00"), "MiMacro"
End Sub

En cualquier módulo estándar (accediendo a través de la opción lnsertar>


Módulo), introduzca el siguiente código:
Sub MiMacro( )
dTime = Now + TimeValue("0 0:15:0 0")
Application.OnTime dTime, "MiMacro"

'SU CÓDIGO
End Sub

Observe cómo pasamos el valor 15 minutos a la variable pública dTime. Esto


es de forma que pueda cancelar el método OnTime cuando ocurra el evento
240 Excel. Los mejores trucos

WorkbookBef o r e C l o s e , estableciendo el argumento opcional S c h e d u l e a Falso.


De forma predeterminada, el argumento S c h e d u l e está establecido como True,
de forma que al establecerlo en False, estamos indicando a Excel que cancele el méto-
do OnTime que estaba establecido para que se ejecutase a una hora en particular.
Si no pasó la hora a una variable, Excel no sabrá qué método OnTime desea
cancelar, ya que la expresión Now + Time V a l u é ( " 0 0 : 1 5 : 0 0 " ) no es estática,
pero sí lo es cuando se pasa a u n a variable. Si no establece el argumento opcional
Schedule a False, el libro se abriría automáticamente cada 15 minutos después de
que lo cerrarse y ejecutase MiMacro.

Q ^ Q Utilizar CodeName para hacer referencias


| B 9 9 a hojas en los libros de Excel
^ ^ ^ ^ ^ B A veces, necesitará crear una macro que funcione incluso si los nombres de
hojas a los que hace referencia cambien.

Si ha grabado u n a macro en Excel que hace referencia a una hoja en particu-


lar dentro de libro, debe saber que el código seguirá funcionando sólo si los n o m -
bres de las hojas se mantienen iguales. Por ejemplo, si la hoja se llama Presupuesto,
el código de la macro tiene la sentencia S h e e t s ( " P r e s u p u e s t o " ) . S e l e c t y
ahora cambia el nombre de dicha hoja, la macro dejará de funcionar. Esto es
debido a que la grabadora de macros genera el código basándose en el nombre de
la pestaña de la hoja en cuestión, o en el nombre que se ve cuando se trabaja en
Excel. Para superar esta limitación, tenemos dos opciones, siendo la primera de
ellas la que utiliza números de índice en vez de nombres. El índice de u n a hoja se
determina por su posición dentro de libro. La hoja que está más la izquierda
siempre tendrá el índice 1, la siguiente tendrá el índice 2, y así sucesivamente.
VBA permite especificar cualquier hoja utilizando su índice en vez de su nombre,
aunque por desgracia el generador de código de Excel nunca utiliza estos índices.
De todas formas, aunque utilizar un índice, como por ejemplo, Sheets(3).Select,
es u n a opción mejor que utilizar el nombre de la hoja, resulta que la posición de
la hoja podría cambiar en el libro, en caso de que añada, elimine o mueva hojas.
En vez de utilizar índices, los programadores expertos utilizan CodeName. Cada
hoja de un libro tiene un único CodeName que no cambia aunque la hoja se m u e -
va o cambie de nombre, incluso aunque se añadan otras hojas. Puede ver el
CodeName de las hojas simplemente yendo al Editor de Visual Basic (seleccione
Herramientas>Macro>Editor de Visual Basic o pulse Alt/Opción-Fll) y luego
mostrando la ventana de proyectos en caso de que sea necesario (seleccione
Ver>Ventana Proyectos).
En la figura 7.1, el CodeName para la hoja cuyo nombre de pestaña es Presu-
puesto es Hoja3. El CodeName siempre es el nombre que aparece fuera de los
7. Trucos sobre macros 241

paréntesis cuando mira en la ventana de proyectos. Puede hacer referencia a esta


hoja con código VBA en el libro utilizando la sentencia H o j a 3 . S e l e c t e n vez de
utilizar S h e e t s ( " P r e s u p u e s t o ) . S e l e c t o S h e e t s (3 ) . S e l e c t .

Archivo Edición Ver Insertar Formato Depuración Ejecutar Herramientas Complementos Ventana Ayuda

4$[ EuroTool (EUROTOOL.XLA)


<5§ VBAProject (Librol)
\ Microsoft Excel Objetos
É§Í Hojal (Datos antiguos)
H} Hoja2 (Datos nuevos)
13IZZZZI
Q ThisWorkbook

¡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.

Si el libro ya está lleno de código VBE, ya sea escrito a m a n o o grabado, y que


no utilice CodeNames para hacer referencia a las hojas, puede cambiarlo al nivel
del proyecto (es decir, todo el código que esté en todos los módulos de libro),
simplemente yendo a Edición>Reemplazar mientras que esté en la ventana del
editor.

El único caso de que no puede utilizar el CodeName de una hoja es


cuando hace referencia a una hoja que se encuentra en un libro
diferente del que contiene el código.

Conectar de forma fácil botones a macros


En lugar de asignar una macro a cada botón, a veces resultará más
conveniente crear una única macro que gestione todos los botones.

Normalmente los usuarios prefieren ejecutar las macros a través de u n a tecla


de acceso rápido o a través de un botón que pueda pulsarse fácilmente, en vez de
242 Excel. Los mejores trucos

tener que encontrarlas a través de menús y cuadros de diálogo. La forma más


habitual de acceder a un botón es a través del cuadro de herramientas Formula-
rios que está disponible si selecciona la opción Ver>Barras herramientas>Formu-
larios. Estos botones, en nuestra opinión, son la mejor elección para ejecutar las
macros, especialmente aquellas que h a y a n sido grabadas, ya que éstas normal-
mente requieren que el usuario se encuentre en u n a hoja en particular cuando se
ejecuten. Esto es debido a que las macros grabadas siempre utilizan la hoja activa
si grabó la macro sin cambiar de hoja. Esto significa que si el usuario no se en-
cuentra en la hoja adecuada (es decir en u n a hoja que no es en la que se grabó la
macro), ésta puede que falle o haga cambios en u n a hoja incorrecta. Por el con-
trario, si utiliza botones en las hojas, puede forzar al usuario a que vaya a la
hoja adecuada y pulse el botón para ejecutar la macro, de forma que se ejecute en
las condiciones adecuadas.

¿Por qué utilizar un botón del cuadro de herramientas Formularios en


S^ vez de un botón del cuadro de herramientas Cuadro de controles?
w^. Porque los botones normalmente se utilizan para detectar un clic del
ratón y ejecutar una macro específica. Sólo debería utilizar un botón
de comando del cuadro de herramientas Cuadro de controles cuando
necesite atrapar eventos tales como doble clic, clic con el botón derecho,
etc. Los controles del cuadro de herramientas Cuadro de controles se
conocen como objetos ActiveX, y utilizarlos simplemente para ejecutar
una macro resulta una sobrecarga innecesaria para Excel, sobre todo
si utiliza números botones.

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

.jsl'!'::'"'.-.;.'.' •' Jnlx.ll


¿£) Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? - - S x

•-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

Libro2! ThisWorkbook. AnadirFila


3 Libro2! ThisWorkbook. Borrar
J Cancelar
•y!?!!°^'IhJs.WQ,r.|^QQ!S!.EMlD.^M
4 Horas Nombres Nuevo j
Libro2! ThisWorkbook. Ir ASemana 1 y 2
15 0 Juan García Libro2! ThisWorkbook. Ir ASemanaSy 4
Grabar..,
Libro2! ThisWorkbook, Llamada
6 48 María Serrano Libro2! ThisWorkbook, PegarValores
Libro2! ThisWorkbook, Solicitar
7 72 Marta Salvador Libro2! ThisWorkbook. Solicitar
8 45 Santos Palacios

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.

Crear una ventana de presentación para un libro


Las ventanas de presentación proporcionan un toque de distinción a una
aplicación, sin mencionar el hecho de que le entretienen mientras que la
aplicación se carga. ¿Por qué no hacer que las hojas de cálculo hagan lo
mismo?

Es posible utilizar las características proporcionadas por VBA para crear u n a


pantalla de presentación para cualquier libro. Encontrará que el proceso es m u -
cho más sencillo de lo que se habría imaginado. Para crear u n a pantalla de pre-
sentación que se muestre entre cinco y diez segundos en el momento en el que se
abra un libro, y que luego se cierre automáticamente, comenzaremos abriendo el
244 Excel. Los mejores trucos

editor de Visual Basic, seleccionando Herramientas>Macro>Editor de Visual Basic.


Luego seleccione I n se rtar> UserForm. Si no aparece el cuadro de controles, sim-
plemente seleccione Ver>Cuadro de herramientas.
En el cuadro de herramientas, haga clic en el icono Etiqueta (para encontrar-
lo, simplemente pase por encima de cada icono y verá un pequeño cuadro de
ayuda que le mostrará el nombre de cada uno). Haga clic en cualquier parte del
formulario para insertar la etiqueta. Luego utilice los cuadros que aparecen a su
alrededor para cambiar el t a m a ñ o , de forma que pueda escribir texto dentro del
etiqueta. Teniendo seleccionada la etiqueta, vuelva a hacer clic en ella. Con ello
entrará en el modo de edición de texto y podrá marcar el texto predefinido que
aparece dentro de ella.
Dentro de la etiqueta, escriba el texto "Mi pantalla de presentación". Para cam-
biar otras propiedades de la etiqueta (el t a m a ñ o de la fuente, el color, etc.), ase-
gúrese de tener la seleccionada y luego pulse F4, o bien seleccione la opción
Ver>Ventana Propiedades. Ahí puede cambiar todas aquellas propiedades que desee.
Ahora haga doble clic en el formulario (no en la etiqueta) y seleccione el evento
I n i t i a l i z e que aparece en el cuadro de lista desplegable de la parte superior
derecha de la ventana, como se muestra en la figura 7.3.

^\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 |

ffl§&9!flflflHH UserForm 1 -*. 1 I


¡BackColor • &H8000000F&, i J
BorderColor • &H80000012&. _J
jBorderStyle 0 - fmBorderStyler
Caption UserForm 1
Cycle 0 - fmCycleAllFonr
DrawBuffer 32000 i
Enabled True j
Font Tahoma |
IForeColor F:iliLJ
• &H800000128tZJ |
JJ^I
Figura 7.3. Cuadro de lista desplegable con los diferentes eventos para el objeto UserForm.

Dentro de ese procedimiento, introduzca el siguiente código:


Application.OnTime Now + TimeValue("00:00:05"), "CerrarFormulario"
7. Trucos sobre macros 245

Con lo que el código debería quedar de la siguiente forma:


Prívate Sub UserForm_Initialize( )
Application.OnTime Now + TimeValue("00:00:05"), "CerrarFormulario"
End Sub

A continuación, vaya a Insertar>Módulo e introduzca el siguiente código exac-


tamente como se muestra:
Sub CerrarFormulario( )
Unload UserForml
End Sub

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.

Figura 7.4. Pantalla de presentación de ejemplo en acción.


246 Excel. Los mejores trucos

Simplemente recuerde que la pantalla de presentación debería mostrarse tan


sólo por un período corto de tiempo, y sólo debería contener texto resumido y
relevante. Si muestra esta pantalla durante más de diez segundos, puede resultar
molesto para el usuario.

Mostrar un mensaje de "Por favor, espere"


¿Ha tenido alguna vez una de esas macros que parece tardar una eternidad
para completarse? Si esto resulta un problema, puede hacer que Excel
muestre un mensaje de "Por favor, espere" al usuario.

Muchos usuarios esperan que el código se ejecute y se complete prácticamen-


te de forma instantánea. Sin embargo, esto no siempre ocurre así. Las macros
grabadas, en particular, normalmente necesitan de mucho más tiempo para com-
pletarse que aquellos códigos bien escritos en VBA. Para complicar más la cosa, el
lenguaje VBA de Excel es normalmente más lento que la mayoría de los lengua-
jes de programación.
Por suerte, podemos usar un poco de código extra para crear un mensaje "Por
favor, espere" de forma que los usuarios sepan que el código se está ejecutando y
que Excel no se ha bloqueado. Por desgracia, uno de los métodos más conocidos
para hacer que los usuarios sean conscientes de que el código se está ejecutando
es utilizando u n a barra de progreso de Excel.
Existen dos problemas con este método. Uno la barra de progreso puede hacer
que el código sea todavía más lento, complicando el problema. Y dos, el código
lento probablemente esté causado por un bucle, y no puede utilizar la grabadora
de macros para crear bucles.
Nosotros preferimos utilizar código VBA, como el del siguiente ejemplo, que
utiliza un rectángulo de la barra de herramientas Dibujo.
Sub Hazlo( )
Application.ScreenUpdating = True
With Hojal.Shapes("Rectangulol")
.Visible = msoTrue = (Not Hojal.Shapes("Rectangulol").Visible)
End With

'Cambiando las hojas, forzamos a que Rectangulol se muestre mientras


se ejecuta el código
Hoja2.Select
Hojal.Select
End Sub

Para utilizar este código, añada un rectángulo desde la barra de herramientas


Dibujo en cualquier hoja del libro. Teniendo seleccionado el rectángulo, haga clic
en el Cuadro de nombres y llame a esta figura "Rectangulol".
7. Trucos sobre macros 247

Introduzca el texto que desea mostrar mientras se está ejecutando el código,


cambie el formato, la posición y el t a m a ñ o del rectángulo si así lo desea. Escriba
la macro anterior en un módulo estándar del libro. Si es necesario, cambie el
texto Hojal por el CodeName de la hoja correspondiente en la que haya dibujado
el rectángulo (vimos cómo usar CodeName en un truco anterior). Luego vaya a
Herramientas>Macro>Macros y ejecute la macro que acabamos de crear. Esto hará
que el rectángulo se oculte.
Al comienzo de este código, que es un código lento, coloque lo siguiente:
Run "Hazlo"
Application.ScreenUpdating = False

El uso de 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 hace que


la pantalla no parpadee y que el código sea más rápido. Para terminar, al final del
código, incluya la sentencia Run " H a z l o " . Luego ejecute la macro lenta de for-
ma habitual.

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

inferior de la ventana) y luego seleccione la opción Ver código. Escriba el primer


código (si desea que las celdas se activen con un solo clic) o el segundo código (si
desea que se activen con un doble clic):
'CÓDIGO 1 - Marcar casillas con un único clic

Private Sub Worksheet_SelectionChange(ByVal Target As Range)


If Target.Cells.Count>l Then Exit Sub
If Not Intersect(Target, Range("Al:A100")) Is Nothing Then
Target.Font.Ñame = "Marlett"
If Target = vbNullString Then
Target = "a"
Else
Target = vbNullString
End If
End If
End Sub

'CÓDIGO 2 - Marcar casillas con un doble clic

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As


Boolean)
If Not Intersect(Target, Range("Al:A100")) Is Nothing Then
Cancel = True 'Evita que se entre en modo de edición
Target.Font.Ñame = "Marlett"
If Target = vbNullString Then
Target = "a"
Else
Target = vbNullString
End If
End If
End Sub

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.

Contar o sumar celdas que tengan un color


de relleno específico
Tarde o temprano, necesitará utilizar SUMA o CONTAR para sumar o
contar celdas que tengan un cierto color de relleno y que un usuario haya
cambiado manualmente, ya que normalmente los usuarios ven más sencillo
utilizar colores que utilizar nombres de rangos.

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

de Visual Basic (Alt/Opción-Fll) y luego seleccione lnsertar>Módulo para inser-


tar un módulo estándar. Dentro de este módulo, escriba el siguiente código:
Function FuncionColor(rColor As Range, rRange As Range, Optional SUM As
Boolean)
Dim rCell As Range
Dim ICol As Long
Dim vResult

ICol = rColor.Interior.Colorlndex

If SUM = True Then


For Each rCell In rRange
If rCell.Interior.Colorlndex = ICol Then
vResult = WorksheetFunction.SUM(rCell) + vResult
End If
Next rCell
Else
For Each rCell In rRange
If rCell.Interior.Colorlndex = ICol Then
vResult = 1 + vResult
End If
Next rCell
End If

FuncionColor = vResult
End Function

Ahora ya puede utilizar la función personalizada FuncionColor en las fórmu-


las, de la siguiente forma:
=FuncionColor($C$1;$A$1:$A$12;TRUE)

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)

Si omitimos el último argumento, la función utiliza automáticamente el va-


lor predeterminado de FALSE (falso). Ahora ya puede sumar o contar celdas que
tengan un color de relleno específico fácilmente, tal y como se muestra en la
figura 7.5.
250 Excel. Los mejores trucos

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 :

Figura 7.5. Utilizar la función personalizada FuncionColor para contar dependiendo


del color de relleno.

Q Q Q Añadir el control Calendario de Microsoft Excel


§ B 3 f M a cualquier libro
^ ^ ^ ^ ^ ™ Si desea asegurarse de que los usuarios introducen fechas correctamente, el
control Calendario de Excel puede facilitar las cosas tanto para usted como
para los usuarios de la hoja de cálculo. Con este truco, podrá añadir un
control Calendario a cualquier libro de Excel.
A menos que u n a fecha sea introducida correctamente, Excel no la reconocerá
como válida. Esto significa que a veces no puede realizar ciertos cálculos con
aquellos datos que parezcan fechas pero que en realidad no lo son. También sig-
nifica que cualquier gráfico o tabla dinámica que se base en dichas fechas no será
válida. Aunque puede ayudarnos la función de validación de Excel (descrita en el
capítulo 2), está lejos de ser la más correcta.
Con este truco, podremos añadir un control Calendario a cualquier libro de
Excel. Para comenzar, abra el libro en el que desee utilizar el calendario. Resulta
u n a buena idea utilizar el archivo Personal.xls para esto, en cuyo caso primera-
mente debería mostrarlo seleccionando la opción Ventana>Mostrar. Si esta opción
esta desactivada, significa que no tiene a ú n un archivo Personal.xls. Puede crear
uno fácilmente grabando una macro m u y sencilla. Seleccione Herramientas>Macro>
Grabar nueva macro y luego elija a la opción Libro de macros personal en el cuadro
de lista desplegable Guardar macro en. Haga clic en Aceptar, seleccione cualquier
celda y luego detenga la grabación. Con ello, Excel creará el archivo Personal.xls
automáticamente.
A continuación seleccione Herramientas>IVIacro>Editor de Visual Basic (Alt/
O p c i ó n - F l l ) y entonces seleccione lnsertar>UserForm. Esto debería mostrar el
7. Trucos sobre macros 251

cuadro de herramientas de controles (si no es así, seleccione Ver>Cuadro de he-


rramientas). Haga clic con el botón derecho del ratón en el cuadro de controles y
seleccione la opción Controles adicionales. Desplácese por la lista hasta que en-
cuentre el elemento Control Calendario 10.0 (el número de versión puede depen-
der de el producto Excel que tenga instalado). Active la casilla de verificación
para dicho control y haga clic en Aceptar. Aparecerá entonces el icono del con-
trol calendario. Haga clic en él y luego haga clic en el formulario que acabamos
de crear.
Utilice los pequeños recuadros del control y del formulario para cambiar sus
tamaños, de forma que queden como en la figura 7.6.

^§ Archivo Edición iiaiai^a^^gw?


Ver Insertar Formato Depuración Ejecutar Herramientas Complementos Ventana Ayuda .fl x
J
§¡ JI - d u -J -" ' JJ J < -i* _J \ [ 7 ] « ^

, n
F¥ may 2004 [2004*^] f:

fcA abl m i@ F? lun mar mié jue vie sáb dom I


<í ¡d n ^ - i JJ 1 2

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

Figura 7.6. Insertar un control calendario.

Asegúrese de que el formulario esté seleccionado (como aparece en la figura


7.6) y luego vaya a la opción Ver>Ventana Propiedades. En ella, seleccione la
propiedad Caption y cambie el texto que aparece por la palabra "Calendario". Ahora
vaya a Ver>Código y en el módulo privado, añada el siguiente código:

Prívate Sub Calendarl_Click( )


ActiveCell = Calendarl.Valué
252 Excel. Los mejores trucos

End Sub

Prívate Sub UserForm_Activate( )


Me. Calendan. Valué = Date
End Sub

Seleccione ahora la opción lnsertar>Módulo y en el módulo privado, escriba el


siguiente código:

Sub Mostrar( )
UserForml.Show
End Sub

Cierre esta ventana para volver a Excel. Vaya a Herramientas>Macro>Macros


y seleccione la macro Mostrar. Haga clic en el botón Opciones, asigne u n a tecla de
acceso rápido y todo estará listo. Simplemente pulse esa tecla y aparecerá el ca-
lendario con la fecha de hoy. Puede hacer clic en cualquier fecha y verá cómo se
inserta en la celda activa.

Proteger por contraseña y desproteger todas


las hojas de cálculo rápidamente
Por desgracia, no existe la posibilidad en Excel de proteger y desproteger
todas las hojas de cálculo de golpe. Sin embargo, con un simple código
podemos hacerlo.

Excel proporciona un mecanismo de protección que puede añadirse a las hojas


de cálculo mediante la opción Herramientas>Protección>Proteger hoja. Es posible
también indicar u n a contraseña de forma que otros usuarios no puedan acceder
a la hoja a menos que conozcan dicha contraseña. A veces, sin embargo, deseará
proteger con contraseña y desproteger todas las hojas de un libro de forma rápi-
da, ya que protegerlas y desprotegerlas u n a a una resulta m u y tedioso. A conti-
nuación veamos cómo podemos simplificar esta tarea.
Abra el libro en el que desea aplicar el código. También puede seleccionar la
opción Ventana>Mostrar para mostrar el archivo Personal.xls de forma que dicho
código esté disponible para todos los libros. En caso de que esta opción esta
desactivada, significa que todavía no tiene un archivo Personal.xls. Puede crear
u n o fácilmente g r a b a n d o u n a m a c r o m u y sencilla. Para ello, seleccione
Herramientas>Macro>Grabar nueva macro y elegir el libro de macros personales
como destino. Luego haga clic en Aceptar, haga clic en cualquier celda y detenga
la grabación. A Excel creará el archivo Personal.xls automáticamente.
A continuación seleccione Herramientas>Macro>Editor de Visual Basic (Alt/
O p c i ó n - F l l ) y luego seleccione lnsertar>L)serForm. Esto debería mostrar un for-
7. Trucos sobre macros 253

mulario y el cuadro de herramientas. Si no fuese así, puede abrirlo a través del


menú Ver.
En el Cuadro de herramientas seleccione el cuadro de texto (cuyo icono es ab |).
Luego haga clic en el formulario para añadir ese control en él. Colóquelo en la
esquina superior izquierda del formulario y cambie el t a m a ñ o según sus prefe-
rencias.
Teniendo seleccionado el cuadro de texto, seleccione Ver>Ventana Propiedades
(F4). En la ventana de propiedades, desplácese hacia abajo hasta encontrar la
propiedad PasswordChar y en el cuadro de texto situado su derecha, introduzca
un asterisco (*). Vuelva al cuadro de herramientas, seleccione el icono Botón de
comando y haga clic en el formulario, colocándolo en la esquina superior dere-
cha del mismo.
Teniendo seleccionado el botón de comando, vaya a la ventana de propiedades
y en ella, desplácese hacia abajo hasta encontrar la propiedad Caption. En el cua-
dro de texto situado su derecha, introduzca el texto "Aceptar". En caso de estar
utilizando Excel 97, también debe encontrar la propiedad TakeFocusOnClick y
establecer su valor en F a l s e . Ahora seleccione el formulario nuevamente y en la
ventana de propiedades, encuentre la propiedad Caption. Cambie su valor por el
texto "Proteger/desproteger todas las hojas". Al final del formulario debería pare-
cerse al que se muestra en la figura 7.7.

t*nüm*mmwMmmmmmmm njid
Archivo Edición Ver Insertar Formato Depuración Ejecutar Herramientas Complementos Ventana Ayuda

*l [•;:::;;::::;:[::;:;;;;:::;•;;:!;; 'üü-ní • iHÍ:i:í:]:;:':!:í:M i;:!::!!:?:!:;:!:;:»

-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 • • • • •

\ Microsoft E > cel Obietos j


f
H j H o i a l (Hoial) j ' \^W-
!• ; : ; : ;::Í;:; : ;Í!:;;; ::;:;:::D!:ii::!:!;:;i:!:;:!:!:!:
zMsmnna
a]Hoia.:(Hoia:) J
B]Hoia3(Hoia3)
Q ThisWotlbool ,. ¡

nsmanaraia!
U s e r F o r m l UserForm

Alfabética I por categorías


j(Name) UserForml
ÍBackColor • &H8000000F&
IBorderColor • &JH80000012&
BorderStyle 0 - fmBorderStyler
RU^MiHjBH SUffi Pr oteger /despr oti
ÍCycle 0 - fmCvcleAllForrr
iDrawBuffer 32000
lEnabled True
iFont Tahoma
iForeColor • &H80000012&.

Figura 7.7. Formulario insertado en VBE.


254 Excel. Los mejores trucos

Seleccione la opción Ver>Código (F7) e introduzca el siguiente código exacta-


mente igual que como aparece:
Prívate Sub CommandButtonl_Click( )
Dim wSheet As Worksheet
For Each wSheet In Worksheets
If wSheet.ProtectContents = True Then
wSheet.Unprotect Password:=TextBoxl.Text
Else
wSheet.Protect Password:=TextBoxl.Text
End If
Next wSheet
Unload me
End Sub

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.

Como esta macro no le pide que confirme la contraseña, deberá estar


muy seguro de lo que escriba. De lo contrario, puede encontrarse con
que una contraseña mal escrita le bloquee todas las hojas de cálculo.

Si solamente está protegiendo los contenidos de usted mismo, la siguiente


macro realiza las mismas tareas pero utilizando u n a contraseña en blanco:
Option Explicit

Sub Proteger_desproteger( )
Dim wSheet As Worksheet

For Each wSheet In Worksheets


With wSheet
If .ProtectContents = True Then
7. Trucos sobre macros 255

.Unprotect Password:=""
Else
.Protect Password:=""
End If
End With
Next wSheet

End Sub

Aunque esto no sea demasiado seguro, realmente puede resultar m u y conve-


niente.

ü Recuperar el nombre y la ruta de un libro de Excel


Tarde o temprano deseará devolver en una celda el nombre de un libro o
incluso el nombre del archivo y la ruta del mismo. Con este truco, le
resultará sencillo recuperar dicho nombre y ruta.

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 MiNombreCompleto( ) As String


MiNombreCompleto = ThisWorkbook.FulIName
End Function

Function NombreHoja(rAnyCell)
Application.Volatile
NombreHoja = rAnyCell.Parent.Ñame
End Function
256 Excel. Los mejores trucos

Guarde estas funciones y cierre la ventana. Ahora la función aparecerá en la


categoría de funciones definidas por el usuario en el asistente para funciones.
Puede utilizar estas funciones tal y como se muestra en la figura 7.8. No
necesitan argumentos. Las fórmulas que hay en la columna A se muestran como
demostración, y no tienen ningún efecto en el resultado.

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

Figura 7.8. Las funciones y sus resultados.

En la celda A4 de la figura 7.8, también hemos colocado la función


H. estándar CELDA que devuelve el nombre de un libro, la ruta del archivo
wV y el nombre de la hoja activa. En otras palabras, esta función estándar
devuelve información acerca del sistema operativo actual, información
sobre formatos, ubicación y contenidos de un libro.

Ir más allá del límite de tres criterios del formato


condicional
Podemos utilizar VBA para trucar el formato condicional de forma que
utilice más de tres criterios sobre los datos. De hecho, podemos utilizar el
código para aplicar, virtualmente, un número ilimitado de criterios.

Excel dispone de una característica m u y interesante llamada Formato condi-


cional (que ya vimos en el capítulo 2). Puede encontrarla a través de la opción de
menú Formato>Formato condicional. El formato condicional le permite dar for-
mato a las celdas en base a su contenido. Por ejemplo, puede poner en color rojo
el fondo de aquellas celdas cuyos valores serán superiores a 5 pero menores que
10. Aunque esto es m u y útil, el problema está en que sólo podemos utilizar has-
ta tres condiciones, lo cual, a veces puede no ser suficiente. Si desea utilizar más
de tres condiciones, podemos utilizar código VBA de Excel que sea ejecutado
automáticamente cada vez que un usuario cambie un rango específico. Para ver
cómo funciona esto, digamos que tiene seis condiciones separadas en el rango de
celdas Al :A10 en u n a hoja en particular. Rellene algunos datos de la misma for-
ma que aparecen en la figura 7.9. Guarde el libro, luego active la hoja de cálculo,
haga clic con el botón derecho del ratón sobre su nombre (en la pestaña de la
parte inferior), seleccione Ver código y luego introduzca el siguiente código:
7. Trucos sobre macros 257

Prívate Sub Worksheet_Change(ByVal Target As Range)

Dim icolor As Integer


If Not Intersect(Target, Range("Al:A10")) is Nothing Then
Select Case Target
Case 1 To 5
icolor = 6
Case 6 To 10
icolor = 12
Case 11 To 15
icolor = 7
Case 16 To 20
icolor = 53
Case 21 To 25
icolor = 15
Case 26 To 30
icolor = 42
Case Else
'Cualquier cosa
End Select
Target.Interior.Colorlndex = icolor
End If

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.

El color de fondo de cada celda debería haber cambiado basándose en el n ú m e -


ro pasado a la variable i c o l o r , que de hecho pasa este número a T a r g e t .
I n t e r i o r . C o l o r l n d e x . El número pasado está determinado por la línea de có-
digo Case x To x. Por ejemplo, si introduce el número 22 en cualquier celda
258 Excel. Los mejores trucos

dentro del rango A1:A10, el n ú m e r o 15 es asignado a la variable i c o l o r , que a


su vez pasa ese valor a T a r g e t . I n t e r i o r . C o l o r l n d e x , haciendo que la celda
quede en gris. T a r g e t siempre hace referencia a la celda que ha cambiado y, por
lo tanto, lanzó la ejecución del código.

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.

Q Q S | Ejecutar procedimientos en hojas protegidas


Las m a c r o s
^KÍK^I de Excel son una gran forma de ahorrar tiempo y eliminar
K f i f l errores. Sin embargo, tarde temprano querrá probar a ejecutar sus macros
favoritas en hojas que han sido protegidas, ya sea con o sin contraseña, lo
que provocará un error de ejecución. Podemos evitar este problema con el
siguiente truco.

Si alguna vez ha intentado ejecutar u n a macro de Excel en u n a hoja de cálcu-


lo que ha sido protegida, sabe que t a n pronto como se encuentra la hoja en cues-
tión, la macro probablemente no funciona y mostrará un error de ejecución.
Una forma de evitar que esto suceda es utilizar cierto código, como el que se
muestra a continuación, para desproteger y luego volver a proteger la hoja:

Sub MiMacro( )

Hojal.Unprotect Password:="Secreta"

•SU CÓDIGO

Hojal.Protect Password:="Secreta"

End Sub
7. Trucos sobre macros 259

Como puede ver, el código desprotege la Hojal con la contraseña "Secreta",


ejecuta el código y luego vuelve a protegerla con la misma contraseña. Esto fun-
cionará, aunque tiene algunas desventajas. Una de ellas es que el código podría
tener algún fallo y detenerse antes de llegar al final, donde se encuentra la sen-
tencia S h e e t l . P r o t e c t P a s s w o r d : = " S e c r e t a " . Esto haría que, por supues-
to, la hoja quedase desprotegida. Otro problema es que necesitará un código similar
para todas las macros y todas las hojas de cálculo.
Otro camino para evitar este problema es utilizar U s e r l n t e r f a c e O n l y , que
es un argumento opcional del método P r o t e c t , y que puede establecer en T r u e
(de forma predeterminada este argumento vale F a l s e ) . Al establecer este argu-
mento a T r u e , Excel permitirá que todas las macros VBA se ejecuten en aquellas
hojas que estén protegidas, ya sea con o sin contraseña. Sin embargo, si utiliza el
método P r o t e c t con argumento U s e r l n t e r f a c e O n l y establecido en T r u e en
u n a hoja de cálculo y luego graba el libro, toda la hoja (no solamente la interfaz)
quedará completamente protegida cuando vuelva a abrir el libro. Para volver a
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 después de que el libro sea
a b i e r t o , debe volver a u t i l i z a r el m é t o d o P r o t e c t con el a r g u m e n t o
U s e r l n t e r f a c e O n l y a True.
Para evitar esta molestia, puede utilizar el evento W o r k b o o k O p e n , el cual es
ejecutado tan pronto como se abra el libro. Dado que éste es un evento del objeto
ThisWorkbook, debe colocar el siguiente código en un módulo privado de
ThisWorkbook. Para ello, en las versiones de Windows de Excel, haga clic con el
botón derecho del ratón en el icono de Excel situado en la esquina superior iz-
quierda y luego seleccione la opción Ver código. En Macintosh, abra el objeto
Workbook desde la ventana de proyectos del Editor de Visual Basic. A continua-
ción introduzca el siguiente código:
Prívate Sub Workbook_Open( )
'Si tiene diferentes contraseñas
'para cada hoja,

Sheets(l).Protect Password:="Secreta", UserlnterFaceOnly:=True


Sheets(2).Protect Password:="Codorniz", UserlnterFaceOnly:=True

'Repetir tantas veces como sea necesario.

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

Prívate Sub Workbook_Open( )


Dim wSheet As Worksheet

For Each wSheet In Worksheets


wSheet.Protect Password:="Secreta", _
UserlnterFaceOnly:=True
Next wSheet
End Sub

Ahora, cada vez que abra el libro, el código se ejecutará y establecerá la p r o -


piedad U s e r l n t e r f a c e O n l y a T r u e , permitiendo a las macros operar sin que
por ello queden desprotegidas las hojas de cara a los usuarios.

^ ^ ^ 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.

Un complemento de Excel no es más que un libro que ha sido guardado como


un complemento yendo a la opción Archivo>Guardar como y luego seleccionando
la opción Complemento de Microsoft Excel (*.xla). Una vez que sea guardado y
vuelto a abrir, el libro quedará oculto y sólo podrá ser visto a través del explora-
dor de proyectos en el Editor de Visual Basic. No está oculto de la misma forma
que lo está el archivo Personal.xls, ya que éste sí se puede ver a través de la
opción Ventana>Mostrar. Una vez haya completado el libro que desea utilizar
como un complemento, debe guardar u n a copia de él. Puede guardarlo en cual-
quier ubicación que desee, pero asegúrese de apuntarse dónde lo colocó.
Abra cualquier libro y en el m e n ú Herramientas, seleccione la opción Comple-
mentos y luego haga clic en E x a m i n a r . Encuentre el complemento en el lugar en
el que lo haya grabado, selecciónelo y luego haga clic en el botón Aceptar.
Asegúrese de que el complemento aparece en la lista de complementos dispo-
nibles y de que la casilla de verificación esté activada. Luego haga clic en Aceptar
para instalar el complemento. Puede guardar la mayoría del código en un com-
plemento de Excel sin tener que hacer demasiados cambios. De todas formas,
existen algunas consideraciones que deberá tener en cuenta:
• El objeto ThisWorkbook siempre hará referencia al complemento, no al
libro del usuario. En vez de ello, debe utilizar el objeto A c t i v e W o r k b o o k .
• No puede hacer referencia a hojas en A c t i v e W o r b o o k utilizando
CodeNames.
• Siempre debe devolver las barras herramientas, etc. al lugar en el que el
usuario las tenía originalmente. No hay nada peor que un complemento
que cambie todas las configuraciones del usuario sin su consentimiento.
7. Trucos sobre macros 261

• 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( )

On Error Resume Next 'Sólo por si acaso


1
Elimina cualquier elemento de menú existente que pudiese quedar.
Application.CommandBars("Worksheet Menú Bar").Controls("Super
Código").Delete
' Añade un nuevo elemento de menú y establece una variable
CommandBarButton a él
Set cControl =Application.CommandBars("Worksheet Menú Bar") .Controls.Add
262 Excel. Los mejores trucos

' Trabajamos con la variable


With cControl
.Caption = "Super Código"
.Style = msoButtonCaption
.OnAction = "MiGranMacro" Macro almacenada en un módulo
estándar
End With
On Error GoTo 0

End Sub

Private Sub Workbook_AddinUninstall( )

On Error Resume Next ' En caso de que ya esté eliminada


Application.CommandBars("Worksheet Menú Bar").Controls("Super
Código").Delete
On Error GoTo 0

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

Figura 7 . 1 1 . Explorador de proyectos con el objeto T h i s W o r k b o o k seleccionado p a r a


un complemento llamado Administrador de números.xla

Éste es todo el código que necesita p a r a añadir un único elemento de m e n ú


(llamado Super Código) al final de la b a r r a de m e n ú s de la hoja actual, t a n p r o n -
to c o m o el u s u a r i o instale el c o m p o n e n t e a t r a v é s de la opción de m e n ú
Herramientas>Complementos. Cuando se h a g a clic en ese elemento de m e n ú , u n a
7. Trucos sobre macros

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

Dim cControl As CommandBarButton

Prívate Sub Workbook_AddinInstall( )

Dim iContlndex As Integer


On Error Resume Next 'Just in case
' Elimina cualquier elemento de menú que nos hayamos dejado.
Application.CommandBars("Worksheet Menú Bar").Controls("Super
Código").Delete
' Pasa el índice del menú "Formato" a una variable.
' Utilizamos el método FindControl para encontrar su número de
índice. ID number es utilizado en caso de hacer una personalización
iContlndex = Application.CommandBars.FindControl(ID:=30006).Index
'Añade el nuevo elemento de menú y establece la variable
CommandBarButton a él.
'Usamos el número pasado a nuestra variable entera para
posicionarlo.
Set cControl = Application.CommandBars("Worksheet Menú Bar")
.Controls.Add(Before:=iContIndex)
'Trabajamos con la variable
With cControl
.Caption = "Super Code"
.Style = msoButtonCaption
.OnAction = "MiGranMacro" 'Macro almacenada en un módulo estándar
End With
On Error GoTo 0
End Sub

En este caso, no debería tener que c a m b i a r el código de W o r k b o o k _


AddinUninstall() .
En estos ejemplos, todo el código para el elemento de m e n ú se encuentra en
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 I n s t a l l . Esto no resulta un
problema cuando el código sólo añade un elemento de menú. Sin embargo, si
quiere añadir más de un elemento y, quizá, elementos de submenú, debería colo-
car el código en un procedimiento (o dos) dentro de un módulo estándar. Luego
tendría que utilizar un código parecido al que le mostramos a continuación:
Prívate Sub Workbook_AddinInstall( )
Run "AnadirMenus"
End Sub

Prívate Sub Workbook AddinUninstall( )


264 Excel. Los mejores trucos

Run "EliminarMenu"
End Sub

En el módulo estándar, escriba un código parecido al siguiente:

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)

'(5)Damos un título al control


cbcCutomMenu.Caption = "&Nuevo menú"
1
(6)Con el nuevo control, añadimos un subcontrol y le damos un título
para indicar _
qué macro va a ejecutar (OnAction).
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "Menú 1"
.OnAction = "MiMacrol"
End With
1
(6a)Añadimos otro subcontrol, le damos un título y decimos qué macro
ejecutará
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "Menú 2"
.OnAction = "MiMacro2"
End With
'Repita el paso 6a para cada elemento de menú que desee añadir.
7. Trucos sobre macros 265

'Añadimos otro menú que formará uno nuevo


'Establecemos la variable CommandBarControl a él
Set cbcCutomMenu = cbcCutomMenu.Controls.Add(Type:=msoControlPopup)
'Damos un título al control
cbcCutomMenu.Caption = "&Siguiente menú"

'Añadimos un control al submenú que acabamos de crear


With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "&Gráficos"
.Faceld = 420
.OnAction = "MiMacro2"
End With

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

Cuando utilicemos la propiedad OnAction, es posible que encuentre proble-


mas si hay u n a macro en el libro del usuario que tenga el mismo nombre que la
macro que reside en el complemento. Para asegurarnos de que no ocurre esto,
siempre es u n a buena idea utilizar un método como el siguiente:
With cbcCutomMenu.Controls.Add(Type:=msoControlButton)
.Caption = "&Gráficos"
.Faceld = 420
.OnAction = ThisWorkbook.Ñame & "!MiMacro2"
End With

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.

ü Cargar un documento XML en Excel


Si una persona le envía un archivo XML que contiene datos que se pueden
ajustar a tablas, no es necesario que tenga que leer todo el texto y las
marcas que contiene. Puede cargar ese documento directamente en Excel y
especificar cómo desea presentarlos, así como trabajar con ellos utilizando
mapas.

Extensible Markup Language (XML) se ha convertido en un formato estándar


de interconexión durante los últimos años, y resulta algo habitual que las perso-
nas y las empresas se envíen entre sí archivos en este formato. Las estructuras
sencillas del núcleo de un documento XML hacen que compartir información,
independientemente del software que utilicen las diferentes partes, sea m u y sen-
268 Excel. Los mejores trucos

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.

Este truco utiliza características que solamente están disponibles en la


versión Excel 2003 de Windows. Las versiones anteriores no soportan
^% todo esto, así como las versiones existentes para Macintosh.

Comenzaremos con un documento XML de ejemplo, como el que se muestra


continuación, en el que nos encontraremos un catálogo de libros en inglés.

Ejemplo 8.1. Un sencillo documento XML para hacer un análisis en Excel.

<?xml v e r s i o n = " 1 . 0 " encoding="UTF-8"?>


<ventas>

<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:

*"" Como libro de sólo lectura


r Utilizar el panel de tareas Origen XML
Aceptar J Cancelar Ayuda

Figura 8.1. Abrir un archivo XML en Excel 2003.

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.

P No volver a mostrar este mensaje.

Aceptar Jj Ayuda

Figura 8.2. Aviso de Excel 2003 acerca de la carencia de referencias a un esquema.

| ^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í ~

- f l % ooo € -og .°8 ¡s ¡s _ - .* <- j f -


Al • £ date
A | B C D E F G H I—j
1 date 3
-rJISBN ^(Title -| riceUS _^Jqi antity -rjcustomer jrJlD •
2 5/10/2003 596005385 Office 2003 XML Essentials 34,95 200 Zork's Books 1025
3 5/10/2003 596002920 XML m a Nutshell, 2nd Edition 39 Q5 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 m a Nutshell, 2nd Edition 39,95 25 Books ofGlory 1029

I 78 7/10/2003 596002378 SAX2


18/10/2003 596002378 SAX2
29,95
29,95
5 Books ofGlory
15 TitleWave
1029
2561
9 21/10/2003 596002920 XML in a Nutshell, 2nd Edition 39,95 15 Books f o r Y o u 9021
10 *
11
12
13
14
15
16
17
18
19
20
21
9?
¡H 4 • •! \ H o j a l , ( Hoja2 / Hoja3 / M 1 •m
Listo NUM

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.

También puede actualizar los datos, recuperando la información a partir de


un documento XML que tenga la misma estructura. Si dispone de otro docu-
mento que tenga esa misma estructura, puede hacer clic con el botón derecho
sobre la lista, seleccionar la opción XML>lmportar del menú desplegable y elegir
un documento diferente. Teniendo más datos, debería quedar todo como en la
figura 8.5.
Además, también puede exportar datos de nuevo a un archivo XML después
de modificarlos, haciendo clic con el botón derecho del ratón sobre la lista y selec-
cionando la opción XML>Exportar en el menú contextual. Esto hace de Excel u n a
272 Excel. Los mejores trucos

herramienta de edición m u y útil para documentos simples en XML y que tengan


estructuras tabulares.

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

Figura 8.5. La misma lista XML con los datos actualizados.

Para datos sencillos, puede confiar normalmente en los consejos de Excel en


relación a los contenidos del archivo, y utilizar la vista predeterminada que se
recomienda. A medida que los datos se compliquen, especialmente si contienen
fechas o textos que aparezca números (observe que los anteriores ejemplos fal-
tan los ceros iniciales del campo ISBN), puede que tenga que utilizar esquemas
XML para especificar cómo deberá leer Excel los datos y cómo se ajustarán a un
mapa dado. Para este documento, un esquema XML podría ser como el que se
muestra en el siguiente ejemplo.

Ejemplo 8.2. Un esquema para los datos de ventas de libros.

<?xml version="l.0" encoding="UTF-8"?>


<xs:schema xmlns:xs="http://www.w3.org/2001/XMLSchema"
elementFormDefault="qualified">
<xs:element name="ventas">
<xs:complexType>
<xs:sequence>
8. Conectando Excel con el mundo 273

<xs:element maxOccurs="unbounded" ref="venta"/>


</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="venta">
<xs:complexType>
<xs:sequence>
<xs:element ref="fecha"/>
<xs:element ref="ISBN"/>
<xs:element ref="Título"/>
<xs:element ref="Precio"/>
<xs:element ref="cantidad"/>
<xs:element ref="cliente"/>
</xs:sequence>
</xs:complexType>
</xs:element>
<xs:element name="fecha" type="xs:fecha"/>
<xs:element name="ISBN" type="xs:string"/>
<xs:element name="Titulo" type="xs:string"/>
<xs:element name="Precio" type="xs:decimal"/>
<xs:element name="cantidad" type="xs:integer"/>
<xs:element name="cliente">
<xs:complexType mixed="true">
<xs:attribute name="ID" use="required" type="xs:integer"/>
</xs:complexType>
</xs:element>
</xs:schema>

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

Figura 8.6. Panel de tareas Origen XML.

2Sl
Asignaciones XML de este (ibro:
Nombre .IR* | Espacio de nombre

J 1 _M
_J Agregar... i Aceptar i| Cancelar

Figura 8.7. El cuadro de diálogo Asignaciones XML.

Después de hacer clic en Aceptar, Excel le avisa de posibles dificultades que


pueda tener a la hora de interpretar los esquemas, como se muestran el cuadro
de diálogo de la figura 8.10. Un esquema XML es u n a especificación enorme que
admite numerosas estructuras que no encajan bien con la perspectiva de Excel
sobre la información, por lo que nos encontramos con que tendremos algunas
limitaciones.
Conectando Excel con el mundo 275

u-mJMm.ui.iJS H S f ^ ^ ^ ^ ^ ^ mammmim^^ .^, •.,,. j±*J|


Buscar en; . 08
ZJ '£>' !• 4 X -J - J * Herramientas »
^ c h ü S O l.xml
.-V iiHB
Mis documentos
recientes •4M dinosaurios. xml

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

Figura 8.8. Selección de un esquema XML.

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

Figura 8.9. Selección del elemento raíz para el esquema.

S&ST&VY _xj

Los siguientes elementos de esquema y estructuras no se pueden asignar a una hoja


de cálculo. No se podrán ver desde el panel de tareas Origen XML,

- any
• - anyAttribute
1 i - Substitution groups
"NJ> - Abstract elements
- Recursive structures
- Mixed content

¿Desea continuar agregando este esquema al libro?

1 No I Ayuda

Figura 8.10. Aviso sobre el procesamiento del esquema.

Excel mostrará que el esquema ha sido añadido a la hoja de cálculo en el cua-


dro de diálogo Asignaciones XML, que mostramos en la figura 8.11.
276 Excel. Los mejores trucos

BB
Asignaciones XML de este libro:
*]

| Espacio de nombre
sales_Map sales <No hay espacio de nombre >

Larnbiar nombre... i Agregar., Eliminar Aceptar Cancelar

Figura 8.11. Un esquema cargado como una asignación XML.

Si hace clic en Aceptar, volverá a la pantalla principal de Excel y el panel de


tareas Origen XML mostrará un diagrama de la estructura del esquema descrito,
tal y como se puede ver a la derecha de la figura 8.12. Ahora que ya tiene la
estructura, puede distribuir la lista, y la manera más sencilla de hacerlo (espe-
cialmente con documentos pequeños como éste) es arrastrar el icono ventas a
la celda A l , lo que producirá los mismos resultados que vemos en la siguiente
figura.

•Microsoft:Ei^:S;i^^l
Archivo Edición Ver Insertar Formato Her r amientas Datos Ventana r _ & X

J _• A '•\ \\ U -i/ 100% ' *.' ~


Arial

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.

20 Para importar los datos., utilice el botón


Importar datos XML de la barra de
herramientas Lista,
77
H 4 • •I \ H o j a l / Hoia2 / Hoja3 / l< •ir:
Listo

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

También puede arrastrar los elementos individualmente, si desea


v
-\ cambiar el orden o desea colocar las diferentes piezas en diferentes
^-\ lugares de la hoja de cálculo.

Ahora que ya tiene un lugar para los datos, es momento de representarlos.


Puede hacer clic en el botón Importar datos XML de la barra Lista o bien hacer
clic con el botón derecho del ratón en la lista y luego seleccionar la opción
XML>lmportar. Si elige el archivo que utilizamos anteriormente (ej. 8.1), obten-
drá los resultados que se muestran en la figura 8.13. Observe que se han añadido
los ceros de la parte izquierda del ISBN, que ahora ya son texto, como debería ser.

| . j¡'fwwWi|Jwiiiipi^^ .=inj_xj|
¿] Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? T _ ji x

J -• Á J _J j J. t" ,;, u -J / m* ;i ;l u *', 100% - *<• -


Aria! ^ 10 - |~Ñ~| jT S W W m r} % T
000 € "uo .'"'o =F =F _ ' ' «i ' ;
Al ^ f* date
A | B | C | "F^T™^"T T F — Orinen XML • X
1 date JJJISBN .zJTitle j r j P r i c e U S j r j quaiitíty _^J1D ^
¡l~2~ 5/1Ü/2G03 ÍJ596005385 Office 2003 XML Essentials 34.95 200 1025
I 3 I 5/10/2003 "0596002920 XML in a Nutshell, 2nd Edition 39,95 90 1025 Asignaciones XML de este libro:
4 5/10/2003 r 0596002378 SAX2 29,95 300 1025 sales Map • |
I
5 5/10/2003 ti596005385 Office 2003 XML Es sentí ais 34,95 10 1029
I 6 5/10/2003T1596002920 XML in a Nutshell, 2nd Edition 39,95 25 1029

I 78 7/10/2003 "0596002378 SAX2 29,95 5 1029 y »


15 2561
I9 18/10/2003T)596002378 SAX2 29,95
1
21/10/200313596002920 XML in a Nutshell, 2nd Edition 39,95 15 9021 • *

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.

IH 4 • M \ H o j a l / Hoja2 / Hoja3 / \<\ i >¡r


Listo Suma=39158J95 NUM

Figura 8.13. La lista XML, representada con datos.

La compatibilidad de Excel con asignaciones XML y listas, significa que puede


crear hojas de cálculo que trabajen con datos que provienen de diferentes archi-
vos, todo ello con m a y o r flexibilidad que con formatos anteriores como CSV o
archivos delimitados por tabulaciones. En lugar de tener que estar conectado a
u n a base de datos para modificar los datos de forma interactiva, un usuario pue-
de modificar los archivos XML mientras que esté volando en un avión y luego
proporcionar dicho archivo a su cliente cuando aterrice. Quizá el aspecto más
interesante de las nuevas funciones de XML de Excel es la flexibilidad: mientras
278 Excel. Los mejores trucos

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.

m Q | Guardar en SpreadsheetML y extraer datos


C 0 ^ E T f ^ l D e s í * e E x c e ' X P ' s e h a incluido una opción d e exportación XML.
K ^ b ^ l SpreadsheetML proporciona una representación en XML de sus hojas de
cálculo, incluyendo formatos e información de fórmulas.

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.

Ejemplo 8.3. Un documento SpreadsheetML.

<?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

IBM crosoft E Kcel - dinosaur ios.Kml üml|f HBHHWHBI^^S^^^^''^-;- -":" • '


T
^J Archivo Edición Ver Insertar Formato Herramientas Datos Ventana Z
-s x
z j
J J A -.3 i !
~J - 1 V -*al h --J / 93 & - / i i ¡sá y 100% T
« * • $

Arial ' 10 - N K S E S 9 ^J - | % ooo € *o8 ^§ tw if. _ - /S* '


A-fe"
Total f* =SUMA(E4:E11 ) —
A B ~ D É~1 ~ ^ H ' T~
1 V e n t a s de: ene 04
2
3 Número de id. Bicho Precio Cantidad Total
4 4627 Diplodocus 22,50€ 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 Monoclonius 16,50 € 133 2.194,50 €
10 9728 Megalosaurus 23,00 € 128 2.944,00 €
11 8649 Barosaurus 17,00 € 91 1.547,00 €

Ü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

Figura 8.14. Una hoja de cálculo de prueba para SpreadsheetML.

<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\ &quot ;€&quot;"/>
</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

<CellxData ss : Type="Number" >133</DataxNamedCell


ss :Name="Cantidad"/x/Cell>
<Cell ss:StyleID="s24" ss : Formula="=RC [-2] *RC [-1] " x D a t a
ss :Type="Number">2194 . 5</Datax/Cell>
</Row>
<Row>
<CellxData ss : Type="Number" >9728</DataxNamedCell ss :Name="ID"/x/
Cell>
<CellxData ss : Type="String" >Megalosaurus</DataxNamedCell
ss :Name= "Bichos"/x/Cell>
<Cell ss :StyleID="s24"xData ss : Type="Number" >23</DataxNamedCell
ss:Name="Precio"/></Cell>
<CellxData ss : Type="Number" >128</DataxNamedCell
ss :Name="Cantidad"/x/Cell>
<Cell ss:StyleID="s24" ss : Formula="=RC [-2] *RC [-1] "xData
ss :Type="Number">2 944</Datax/Cell>
</Row>
<Row>
<CellxData ss : Type="Number" >8649</DataxNamedCell ss :Name=" ID"/></
Cell>
<CellxData ss : Type= "String" >Barosaurus</DataxNamedCell
ss:Name="Bichos"/></Cell>
<Cell ss :StyleID="s24"xData ss : Type="Number" >17</DataxNamedCell
ss :Name="Precio"/x/Cell>
<CellxData ss :Type="Number" >91</DataxNamedCell ss :Name="Cantidad" /
></Cell>
<Cell ss:StyleID="s24" ss:Formula="=RC[-2] *RC[-1] "xData
ss:Type="Number">154 7</Datax/Cell>
</Row>
<Row>
<Cell ss:Index="4" ss:StyleID="s23"xData ss:Type="String">Total:</
Datax/Cell>
<Cell ss:StyleID="s24" ss : Formula="=SUM(R [-8] C:R [-1] C) "xData
ss:Type=,,Number,,>15147.5</DataxNamedCell
ss:Name="Total"/x/Cell>
</Row>
</Table>
<WorksheetOptions xmlns="urn:schemas-microsoft-com:office:excel">
<PageSetup>
<PageMargins x:Bottom="0.984251969" x:Left="0.78740157499999996"
X:Right="0.78 74 015 74 99999996" X:Top="0.984 251969"/>
</PageSetup>
<Print>
<ValidPrinterInfo/>
<HorizontalResolution>6 0 0</HorizontalResolution>
<VerticalResolution>6 00</VerticalResolution>
</Print>
<Selected/>
<Panes>
<Pane>
<Number>3</Number>
<ActiveRow>ll</ActiveRow>
8. Conectando Excel con el mundo 283

<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>

La primera línea i m p o r t a n t e de este documento, < ? m s o - a p p l i c a t i o n


p r o g i d = " E x c e l . S h e e t " ?>, es u n a destrucción de procesamiento XML que in-
forma a Windows (en realidad un componente ha añadido de Office 2003 para
Windows) de que este documento XML se trata, de hecho, de u n a hoja de cálculo
de Excel. Cuando Windows muestre el archivo, observará que tiene el logotipo de
Excel, y haciendo doble clic sobre él se abrirá Excel.
El elemento raíz del documento, "Workbook", aparece inmediatamente des-
pués de la instrucción de procesamiento. Sus atributos definen los nombres de
espacio utilizados para las diferentes partes de SpreadsheetML. Las siguientes
líneas componen, sobre todo, metadatos, presentación en ventana e información
284 Excel. Los mejores trucos

de formatos, y realmente no h a y nada interesante que examinar hasta que lle-


gue a los elementos "Ñames" y "Worksheet". El elemento "Ñames" identifica los
rangos y celdas con nombre que h a y en el documento. Los dos elementos
"NamedRange" definen el rango con nombre "Cantidad" (que se extiende desde la
fila 4, columna 4 hasta la fila 11, columna 4) y el rango llamado "Total", que es
justamente la celda que se encuentra en la fila 12 y columna 5:

<NamedRange ss:Name="Cantidad" ss:RefersTo="=Hojal!R4C4:RllC4"/>


<NamedRange ss:Name="Total" ss : Ref ersTo= "=Hoj al! R12C5 *'/>

El meollo de la hoja de cálculo está en el elemento "Worksheet". Comienza


definiendo cómo de larga es la tabla de datos actual:
<Worksheet ss:Name="Hojal">
<Table ss:ExpandedColumnCount="5" ss:ExpandedRowCount="12"
x:FullColumns="1"
x:FullRows="l">

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>

En la figura 8.15, esta celda tiene el nombre "Total", un valor de 15.147,50 €


y la fórmula =SUM (E4 : E l i ) . Todas las partes están aquí. Pero deberá ensam-
blarlas todas a partir del estilo s22 (definido anteriormente en el documento con
un formato de tipo moneda), el valor 15147,5 y u n a fórmula que utilizar refe-
rencias relativas que digan "la suma de los valores en la misma columna que
esta, comenzando ocho filas por encima y terminando u n a fila por encima".
Esto parece no ser m u y divertido a la hora de procesarlo, pero actualmente no
es tan complicado si tiene u n a herramienta XML. Puede utilizar C#, Java, Perl,
Python, VB o su lenguaje de programación XML favorito para extraer la infor-
mación, aunque nosotros utilizaremos XSLT para la demostración.

Existen numerosos procesadores XSLT en el mercado, que van desde


simples herramientas de línea de comandos a aplicaciones de ventanas
para Windows. Quizá desee probar Architags XRay disponible en http:/
/architag.com/xray/, o SAXON, de Michael Kay, en http://saxon.
sourceforge.net/. Microsoft ofrece numerosas herramientas XSLT,
incluyendo una herramienta de línea de comandos, que puede obtener
en http://msdn.microsoft.com/library/ default.asp?url=/downloads/
list/xmlgeneral. asp.

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:output method="xml" omit-xml-declaration="yes" indent="yes"


encoding="US-ASCII"/>

<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( ) &gt; 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.

Ejemplo 8.5. Información extraída de SpreadsheetML a un vocabulario XML personalizado.

<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>

Son los mismos datos, pero de u n a forma totalmente diferente. La informa-


ción de fórmulas ha sido descartada en este caso, pero dado que Excel proporcio-
na los valores al igual que las fórmulas, esta aplicación, en particular, no necesita
entender dichas fórmulas.

| ^ Q ¡ 2 Crear hojas de cálculo utilizando SpreadsheetML


\\ ^ K V ^ H Aunque exportar hojas de cálculo como XML es útil, Excel también permite
K á f l importar información de la misma forma, permitiéndole crear hojas de
cálculo utilizando SpreadsheetML.
Excel soporta SpreadsheetML tanto para la exportación como para la impor-
tación, proporcionando un camino en ambos sentidos completo para la informa-
ción. Puede abrir un documento SpreadsheetML, hacer unos cuantos cambios y
volver a abrirlo en Excel si así lo desea (de hecho, ésta es la única forma de modi-
ficar los esquemas para las asignaciones XML). De todas formas, quizá lo más
importante es que puede generar documentos SpreadsheetML a partir de cuales-
quiera datos que tenga, lo que proporciona un camino relativamente fácil y a u -
tomatizado para transformar información secuencial en hojas de cálculo de Excel.
Como demostración, el código del ejemplo 8.6 transformará el documento
XML del ejemplo 8.5 del truco anterior de nuevo en u n a hoja de cálculo de Excel,
utilizando XSLT. La hoja de estilo del ejemplo 8.6 utiliza la hoja de cálculo origi-
nal como plantilla, produciendo un d o c u m e n t o XML m u y similar al del
SpreadsheetML que guardamos originalmente desde Excel.
El ejemplo omite algunos formatos por lo que encontrará algunas diferencias
visibles.

Este truco utiliza algunas características que sólo están disponibles en


Excel XP y Excel 2003 para Windows. Las versiones anteriores no son
compatibles con esto, ni siquiera las versiones conocidas para
Macintosh.

Ejemplo 8.6. XSLT para convertir el vocabulario personalizado XML de nuevo a


SpreadsheetML.

<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:output method="xml" omit-xml-declaration="no" indent="yes"


encoding="US-ASCII"/>

<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="&quot;$&quot;#,##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>

<xsl:apply-templates select="d:venta" />

<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:témplate match="d:fecha" />


<xsl:témplate match="d:total" />

</xsl:stylesheet>

Merece la pena prestar atención a algunas partes de este ejemplo. En primer


lugar, observe que el SpreadsheetML está incrustado en el XSLT, es decir, forma
parte de la hoja de estilo. No hay ninguna parte de SpreadsheetML que no pueda
volver a crear utilizando este método: la instrucción de procesamiento que ya
mencionamos anteriormente, y que indica a Windows de que se trata de u n a
hoja de cálculo de Excel. Para ello, debe utilizar lo siguiente:

<xsl:processing-instruction name="mso-
application">progid="Excel.Sheet"</xsl:processing-instruction>

Dado que XLST no permitirá utilizar el espacio de nombres predeterminado


(sin prefijo) para hacer referencia al contenido que tiene un espacio de nombres,
todas las referencias al contenido en el documento de edición tienen ahora el
prefijo d:, como en d:venta, d:fecha, etc.
Además, dado que los rangos con nombre pueden variar dependiendo del n ú -
mero de elementos a la venta en el original, esta hoja de estilo no generará el
elemento "Ñames" y sus contenidos. Excel volverá a crear los rangos con nombre
a partir de los elementos NamedCell en cualquier caso. De nuevo, el corazón de
292 Excel. Los mejores trucos

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>

El elemento xshtemplate extraerá cada elemento de venta en el original y p r o -


ducirá un elemento "Row" que contenga los elementos "Cell" que concuerden con
sus contenidos. Si abre en Excel el SpreadsheetML que produce esta hoja de estilo
(muy parecido al del ejemplo 8.3 aunque quitando los rangos con nombre y
algunos formatos), obtendrá el resultado que se muestra en la figura 8.15.

I S M crosoft E ^^S^^^BS w ¡¡¡§ BW^-T^--.. ••- '


u Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? - - fi" X

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

• H \ H o j a l / Hoja2 / Hoja3 / l<l i •ir


Listo NUM

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.

SpreadsheetML puede que no sea m u y bonito, pero existen numerosas razo-


nes por las que deseará utilizarlo. Para empezar, grabar como SpreadsheetML le
proporciona un mejor acceso a la información de asignaciones XML que ya des-
cribimos en el truco anterior. Y a largo plazo, lo m á s i m p o r t a n t e es que
SpreadsheetML es portable, por lo que puede procesarlo y generarlo en cualquier
ordenador que disponga de herramientas para XML.
8. Conectando Excel con el mundo 293

ü Importar datos directamente en Excel


Utilizando los servicios Web de Amazon como origen de los datos,
podemos integrar fácilmente información en vivo acerca de, por ejemplo,
libros de texto en hojas de cálculo de Excel. Este ejemplo importará datos
referentes a la clasificación de ventas para un libro en particular y calculará
la media de ésta.

Este truco se basará en la característica de Excel para hacer consultas Web,


por lo que necesitará Excel 97 o u n a versión superior. La herramienta de consul-
tas para Web de Excel transforma tablas sencillas en HTML en hojas de cálculo.

Para que esto funcione, necesitará darse de alta en Amazon y obtener


una identificación de asociado. Para ello, vaya a la página http://
www.amazon.com/associates/. Luego tendrá que ir a la página http:/
/amazon.com/webservices/ y hacer clic en el vínculo Apply for a free
developer's token. Ambos pasos son necesarios para poder utilizar los
servicios Web de Amazon.

El siguiente código utiliza numerosas características tanto de los servicios Web


de Amazon como de Excel. Una vez que vea cómo funcionan juntos, podrá crear
rápidamente sus propias consultas.
Este truco comenzará utilizando u n a consulta estándar de tipo XML/HTTP
Lo que queremos es analizar la clasificación de ventas de la serie de libros de
trucos de O'Reilly, por lo que construimos u n a consulta estándar para recuperar
dichos resultados.

http://xml.amazon.com/onca/xml3?t=insert associate tag &dev-t=insert


developer token&PowerSearch=publisher:O'Reilly%20and%20keywords:
Hack&type=heavy&mode=books&f=xml

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.

<?xml version="1.0" ?>


<xsl:stylesheet version="l.O" xmlns:xsl="http://www.w3.org/1999/XSL/
Transform">
294 Excel. Los mejores trucos

< 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 .

http://xml.amazon.com/onca/xml3?t = insert associate tag&dev-t = insert


developer token&PowerSearch=publisher:0'Reilly%20and%20keywords:
Hack&type=heavy&mode=books&f=http://example.com/excel_SalesRank.xsl

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

contiene u n a función de Excel. Puede resultar algo extraño en este momento,


pero tiene un propósito m u y importante u n a vez que esté dentro de Excel.

Archivo Edición Ver "avoritos Herramientas Ayuda

_ } Atrás ' Búsqueda Favoritos | J f * Multimedia ^ - - ,* # M »


Dirección | http://xml-na. amznxsft. om/onca/xml3?t=insert%20associate%20tag%208(dev-t =insert%20developer%20token!j^J ^Jj Ir Vínculos

J
Sales data

1 ;A ^M^Jtígfc
| 0596004478 Google Hacks
'^áSife
14
mmmm1?
0596004605 MacOSXHacks 278

0596004613 Linux Server Hacks 763

Average Sales Raiik= =ROUND(AVERAGE(C3:C5),0)

J
SsJ ü s t o £ Mi PC

Figura 8.16. Tabla en HTML con los datos de ventas.

Para adjuntar ambas aplicaciones, utilice un archivo de consultas de Excel


(IQY). Este archivo contendrá toda la información referente a la consulta, inclu-
y e n d o la URL que a p u n t a a los d a t o s . Cree un n u e v o archivo l l a m a d o
amzn_avg_sales.iqy y añada el siguiente código:
WEB
1
http://xml.amazon.com/onca/xml3?t=insert associate tag&dev-t=insert
developer token&PowerSearch=publisher:O'Reilly%20and%20keywords:
Hack&type=heavy&mode=books&f=http://example.com/excel_SalesRank.xsl

La primera línea le indica a Excel que se trata de u n a consulta Web. El 1 de la


segunda línea indica a el número de versión de la consulta Web (siempre debe
estar en 1). Luego aparece la URL de la consulta AWS que incluye el archivo XSL.
Guarde el archivo y acuérdese de su ubicación.

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.

Ahora ya tiene algunos datos útiles: la clasificación media de ventas de los


libros en u n a aplicación ideal para manipular y analizar los datos. Puede actua-
lizar los datos en cualquier m o m e n t o haciendo clic con el botón derecho del ra-
tón en cualquier celda de la hoja de cálculo y eligiendo la opción Actualizar datos.

El truco del truco

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.

Hacer que la consulta sea dinámica


En vez de limitar los datos a información estática construida dentro de u n a
consulta de un archivo IQY, podemos añadir un poco de interactividad. Supon-
gamos que tenemos u n a lista de códigos de libros y deseamos conocer la media
de la clasificación de ventas, pero no disponemos de la lista en el momento en que
construimos el archivo IQY. Excel ofrece la posibilidad de preguntar al usuario
por cierta información antes de realizar la consulta Web.
El único cambio que necesita hacer es colocar la información preguntada den-
tro de la URL de la consulta Web, en el lugar en el que desee que aparezca la
8. Conectando Excel con el mundo 297

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

Ahora, se le pedirá que introduzca u n a lista de ISBN al abrir el archivo, como


puede verse en la figura 8.18.

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.

Si no se acuerda de ninguno, puede probar con los siguientes:


1565927141|0596003595|0596002246 | 0596002505

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!

Utilizar datos diferentes


Como el ejemplo anterior, cambiar los datos con los que está trabajando es
simplemente otra manera de cambiar la URL para la consulta AWS. Pero si desea
298 Excel. Los mejores trucos

trabajar con un conjunto diferente de datos (como el coste de cada elemento en


vez de la clasificación de ventas), necesita modificar un poco la hoja de estilo XSL.
Para ver hasta qué p u n t o la hoja de estilo puede marcar la diferencia, cree un
nuevo archivo llamado excel_PriceDiff.xls y añada el siguiente código:

<?xml version="1.0" ?>


<xsl:stylesheet version="1.0" xmlns:xsl="http://www.w3.org/1999/XSL/
Transforma
<xsl:output method="html"/>
<xsl:témplate match="/">
<html xmlns:o="urn:schemas-microsoft-com:office:office"
xmlns:x="urn:schemas-microsoft-com:office:excel"
xmlns="http://www.w3.org/TR/REC-html40">
<body>
<table id="basic">
<tr>
<th bgcolor="#cccccc" colspan="4">Datos de ventas</th>
</tr>
<tr>
<th bgcolor="#9 9999 9">ISBN</th>
<th bgcolor=M#9 99 9 99">Titulo</th>
<th bgcolor="#999999">Precio original</th>
<th bgcolor="#999999">Precio de Amazon</th>
</tr>
<xsl:for-each select="Productlnfo/Details">
<tr>
<td>
<xsl:value-of select="Asin" />
</td>
<td>
<xsl:value-of select="ProductName" />
</td>
<td>
<xsl:value-of select="ListPrice" />
</td>
<td>
<xsl:value-of select="OurPrice" />
</td>
</tr>
</xsl:for-each>
< t r x t d colspan= M 3 " > < / t d x / t r >
<tr>
<td bgcolor="#ffccOO" colspan="3" a l i g n = " r i g h t " >
<b>Media del precio original</b>
</td>
<td bgcolor="#ffccOO">=ROUND(AVERAGE(C3:C<xsl:value-of
select="count(Productlnfo/Details) + 2" />),2)
</td>
</tr>
<tr>
8. Conectando Excel con el mundo 299

<td bgcolor="#ffccOO" colspan=,,3" align="right">


<b>Media del precio de Amazon</b>
</td>
<td bgcolor=,,#ffccOO">=ROUND(AVERAGE(D3:D<xsl:value-of
select="count(Productlnfo/Details) + 2" />),2)
</td>
</tr>
</table>
</body>
</html>
</xsl:template>
</xsl:stylesheet>

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.

•«• crosoft Exce! - - | J % ^ i 4 i | | | | | g ;


llilSIIISIl
-ái
Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ?

j _*' ei _¿ _J' -i JL v 4¿, S* •- -1 ~Jh T


/ 53 ^ s - il i i .U ÍJ> 100% T
*'• ?
T
Arial » 10 - U K S m m = *¿i - ? | % 000 € "oo ~°o ip W ^T ¿i" -
H35 - f*
A B ~ c ~~~^ —
¡ 1 Datos de ventas
2 ISBN Título Precio original P r e d a de Amazon
3 596002246 Web Services Essentials (O'Reilly XML) $29,95 $20,97
4 596003595 Writing Excel Marcos with VBA, 2nd Edit on $34,95 $24,47
5 596002505 Proqramminq .NETWeb Services $39,95 $27,97
6 1565927141 Excel 2000 ¡n a Nutshell: A Power User's Quick Reference $29,95 $20,97
7
8 Media del precio original $33,70
9 Media del precio de Amazon $23,60
10
11
12
13
14
15
16
17
18
19 _
20
21 •

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

Resultados con gráficos


Una vez que los datos están en Excel, es m u y fácil crear gráficos para hacerse
u n a idea de qué significan los datos de un vistazo. Veamos cómo añadir un grá-
fico la hoja de cálculo:

1. Basándonos en el ejemplo último, ejecute el archivo amzn_price_diff.iqy.


Debería ver los datos que incluyen u n a lista de libros j u n t o con la lista de
precios originales y de precios de Amazon.
2. A continuación, seleccione las celdas del título, precio original y precio de
Amazon.
3. Vaya a lnsertar>Gráfico, con lo que aparecerá el asistente para gráficos.
4. Haga clic en Finalizar.

Ahora debería haber conseguido u n a representación gráfica m u y útil de los


gráficos (figura 8.20).

•Microsoft ÉKCel - Í M Í É Í É I '


Archivo Edición Ver Insertar Formato Herramientas Gráfico Ventana

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

Figura 8.20. Un gráfico con los precios.


8. Conectando Excel con el mundo 301

Acceder a servicios Web SOAP desde Excel


Si sus hojas de cálculo necesitan acceder constantemente a datos
actualizados, necesitan acceder a servicios que están alojados en otros
ordenadores, el soporte para servicios Web de Excel le permitirá estar
conectado.

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:

Dirección URL del servicio Web Descripción:

Ayuda

Figura 8.21. La herramienta Microsoft Office Web Services en acción.

Comenzaremos diciéndole a Excel cuál servicio deseamos utilizar en este caso,


http://Tvww.cosme.nu/services/dns.php7wsdl. Introduzca ese valor en el cua-
dro de texto URL situado en la esquina inferior izquierda, y luego haga clic en el
botón Buscar. Aparecerán el resultado "dns" en la parte superior derecha, tal y
como se muestra en la figura 8.22. Active la casilla de verificación situada justo
a su izquierda. Si hace clic en el botón Agregar, hará que Excel genere código
VBA para el servicio, tal y como puede verse en la figura 8.23.
A continuación cierre VBE y rellene un hoja de cálculo m u y simple como la
que se muestra en la figura 8.24.
Para añadir un botón que llame al servicio, abra el cuadro de controles ha-
ciendo clic con el botón derecho del ratón sobre u n a barra de herramientas y
eligiendo la opción Cuadro de controles. Haga clic en el icono Botón de comando
y luego haga clic dentro de la hoja de cálculo, en el lugar en el que desee colocar
el botón. Haga clic con el botón derecho sobre el botón y elija la opción Propieda-
d e s en el m e n ú c o n t e x t u a l que aparece. En la p r o p i e d a d Ñame escriba
"ObtenerDatos"; en Caption escriba "Obtener dirección IP". Cierre este cuadro de
diálogo y la hoja de cálculo debería verse como en la figura 8.25.
Conectando Excel con el mundo 303

11^ K'Ü ?r IUB Baf |-fj|, i wi af ^ f ü^iffi^n^^


r
" Buscar servicios Web Haga clic en los servicios o métodos Web para ver las descripciones.
Seleccione uno para agregarlo al proyecto.

Resultados de la búsqueda: 1

_
- 0EB
r ~ • dns

1
|

•'•' Dirección URL del servicio Web Descripción:


Facilite una dirección URL para el archivo WSDL
o ASMX para ver el servicio Web, Descripción no disponible. I

Dirección URL:

| http: //www.cosme, nu/ser vices/dns.php?wsdl

Buscar

Agregar Cancelar Ayuda I

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

mssmmsmsM •*- (Declaraciones)

ü
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

Figura 8.24. Una hoja de cálculo para añadir servicios Web.

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 ' §£ --

ComtnandBut • f* = IN C R U STAR ("Fot m s i o m m a n d B utt o n 1","")


B H T

Nombre.
IP:

o Obtener dirección IP
c r _ _ _ _ (y

•I \ H o j a l / Hoja2 / Hoja3 / I<1 ir

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:

Prívate Sub ObtenerDatos_Click( )


Dim info As New clsws_dns
Dim ñame As String
Dim IP As String

ñame = Range("B2").Text

IP = info.wsm_dns(ñame)

Set IPRange = Range("B3")

IPRange.Value = IP

End Sub

Este código es m u y sencillo. Hace referencia al objeto que ha creado la herra-


mienta para el servicio Web y luego crea variables para el nombre y la dirección
IP Obtiene el nombre de la celda B2, llama a servicio Web con el nombre como
argumento y luego coloca el valor devuelto en la celda B3. Una vez que haya
introducido este código y haya cerrado VBA, puede dejar el modo de diseño ase-
gurándose de que el icono con aspecto de cartabón y un lápiz (situado en la
esquina superior izquierda del cuadro de controles) esté desactivado. Ahora la
hoja de cálculo le permitirá introducir un nombre de dominio en la celda B2.
Haciendo clic en el botón Obtener dirección IP, se colocará la dirección IP co-
rrespondiente al nombre de dominio en la celda B3. Las figuras 8.26 y 8.27 mues-
tran esta hoja de cálculo en acción utilizando diferentes nombres de dominio.
La resolución de direcciones IP es uno de los servicios más simples que existen,
pero muchas veces servicios así de simples pueden resultar m u y útiles en u n a
hoja de cálculo (por ejemplo, converso desde moneda, recuperación de precios,
procesamiento de códigos postales, etc.). Ni siquiera necesita aprender SOAP o
WSDL para utilizar estos servicios, ya que Web Services Toolkit se encarga de
todo esto por usted.
Sin embargo, es importante reseñar algunas desventajas. En primer lugar, el
ordenador debe estar conectado a Internet para que un servicio Web funcione.
Probablemente no deseará a crear hojas de cálculo que dependan fuertemente de
servicios Web si sus usuarios van a estar trabajando m u y lejos de aquí y normal-
mente van a estar desconectados (normalmente es aceptable u n a hoja de cálculo
como esta, que utiliza un servicio Web para rellenar campos, pero que no necesi-
ta estar conectada constantemente). El otro tema importante con los servicios
Web es que, en general, este campo está en un estado de cambio significativo.
306 Excel. Los mejores trucos

i » Microsoft Excel - Libro! ••w:;&fSMMf!^lf^

¿§] 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

Figura 8.26. Dirección IP obtenida para oreilly.com

H Microsoft EKCCI - Libroí ¡8IW< -inlxi


-^jj Archivo Edición Ver Insertar Formato Herramientas Datos Ventana ? - ñ x
J -,' A J _j J J, '^ ¿ ¿ -J ^» - / •* - 51 x, £ - )A M 100%
T A ^ *S
Arial - 10 - N K S ^ S ^ ^j -f % 000 € *oo 5j W _ -* "
B3 - £ 12.96.162.223
B

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

Figura 8.27. Dirección IP obtenida para ozgrid.com


8. Conectando Excel con el mundo 307

Cuando se escribió este libro, SOAP estaba pasando de la versión 1.1 a la


versión 1.2, y también estaba en desarrollo u n a nueva versión de WSDL. Y lo que
es más, mucha gente cree que UDDI puede ser reemplazado con otras tecnolo-
gías. Por ahora, asegúrese de comprobar los servicios que utilice y esté atento a
posibles versiones nuevas del Office Web Services Toolkit.

TRUCO Crear hojas de cálculo Excel utilizando otros


entornos
100
Aunque Excel y otros programas de hojas de cálculo proporcionan la
¡nterfaz tradicional para crear y leer hojas de cálculo, a veces necesitará
poder crear archivos .xls directamente a partir de otros programas.

Independientemente de que esté creando archivos Excel a partir de bases de


datos en un servidor Apache o si simplemente desea presentarla información
almacenada en un programa Java a los usuarios de Excel, existen numerosos
paquetes en el mercado que le permiten crear y acceder a archivos .xls sin tener
que utilizar Excel. Aunque esos paquetes son normalmente más difíciles de utili-
zar que SpreadsheetML, normalmente producen archivos que pueden ser leídos
por cualquier Excel a partir de la versión 97 (incluyendo las versiones para
Macintosh), y a menudo, son compatibles con más funciones de Excel. Algunos
de los paquetes más populares (y gratuitos) para trabajar con datos de Excel son:

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

También puede automatizar Excel de muchas formas, a menudo utilizando el


.NET Framework de Microsoft. Para ver un ejemplo de cómo hacer esto usando el
lenguaje C # , v a y a a la p á g i n a h t t p : / / w w w . e g g h e a d c a f e . c o m / a r t i c l e s /
20021012. asp.
Como ejemplo de cómo funciona este proceso, el código Java del ejemplo 8.7
generará u n a hoja de cálculo utilizando la API POI (incluso aunque no sea un
programador Java, podrá hacerse u n a idea). Puede pasar por alto la lectura de la
licencia, pero será necesario incluirla en el código.

Ejemplo 8.7. Código Java para generar una hoja de cálculo Excel usando POL

// This code is d e r i v e d from t h e o r g . a p a c h e . p o i . h s s f . d e v . H S S F c l a s s ,


/ / henee the long l i c e n s e .
/* = = = = = = = = = = = = = = = = = = = = = = = =z = = = = = = m = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = = =
* The Apache Software License, Versión 1.1
*
* Copyright (c) 2003 The Apache Software Foundation. All rights
* reserved.

* Redistribution and use in source and binary forms, with or without


* modification, are permitted provided that the following conditions
* are met:
*
* 1. Redistributions of source code must retain the above copyright
* notice, this list of conditions and the following disclaimer.

* 2. Redistributions in binary form must reproduce the above copyright


* notice, this list of conditions and the following disclaimer in
* the documentation and/or other materials provided with the
* distribution.
*
* 3. The end-user documentation included with the redistribution,
* if any, must include the following acknowledgment:
* "This product includes software developed by the
* Apache Software Foundation (http://www.apache.org/)."
* Alternately, this acknowledgment may appear in the software itself,
* if and wherever such third-party acknowledgments normally appear.
*
* 4. The ñames "Apache" and "Apache Software Foundation" and
* "Apache POI" must not be used to endorse or promote produets
* derived from this software without prior written permission. For
* written permission, please contact [email protected].
*
* 5. Products derived from this software may not be called "Apache",
* "Apache POI", ñor may "Apache" appear in their ñame, without
* prior written permission of the Apache Software Foundation.
*
* THIS SOFTWARE IS PROVIDED "^AS IS'' AND ANY EXPRESSED OR IMPLIED
* WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES
8. Conectando Excel con el mundo 309

* OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE


* DISCLAIMED. IN NO EVENT SHALL THE APACHE SOFTWARE FOUNDATION OR
* ITS CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL,
* SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT
* LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF
* USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
* ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY,
* OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT
* OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF
* SUCH DAMAGE.

* This software consists of voluntary contributions made by many


* individuáis on behalf of the Apache Software Foundation. For more
* information on the Apache Software Foundation, please see
* <http://www.apache.org/>.
*/
import java.io.*;

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.*;

public class PoiDemo {

public static void main (String[] args) throws Exception {


short rownum;

// crea un archivo de destino


FileOutputStream out = new FileOutputStream("zingot.xls");

// crea un nuevo objeto workbook. Observe que el libro


// y el archivo son dos cosas diferentes, casi hasta el final,
// cuando el libro es escrito en el archivo.
HSSFWorkbook wb = new HSSFWorkbook( );

// crea una nueva hoja


HSSFSheet ws = wb.createSheet( );

// crea una referencia a un objeto fila para su uso posterior


HSSFRow r = nuil;

// crea una referencia al objeto celda


HSSFCell c = nuil;
// crea dos estilos - formatos de celda
// necesita ser definido antes de poder usarse
HSSFCellStyle csl = wb.createCellStyle( );
310 Excel. Los mejores trucos

HSSFCellStyle cs2 = wb.createCellStyle( )/


HSSFDataFormat df = wb.createDataFormat( );
// crea dos objetos fuente para el formato
HSSFFont fl = wb.createFont( );
HSSFFont f2 = wb.createFont( );

// establece la fuente 1 a tamaño 10 y negrita


f1.setFontHeightlnPoints((short) 10);
f1.setBoldweight(HSSFFont.BOLDWEIGHT_BOLD);

//establece la fuente 2 a tamaño 10 y en color rojo


f2.setFontHeightlnPoints((short) 10);
f2.setColor( (short)HSSFFont.COLOR_RED );

//para el estilo 1 de celda, usar fuente 1 y establecer el formato de


datos
csl.setFont(f1);
csl.setDataFormat(df.getFormat("#,##0.0") ) ;

//para el estilo 2 de celda, usar fuente 2, establecer borde fino y


formato de texto
cs2.setBorderBottom(cs2.BORDER_THIN);
cs2.setDataFormat(HSSFDataFormat.getBuiltinFormat("text"));
cs2.setFont(f2);

// establece el nombre de la hoja en Unicode


wb.setSheetName(0, "Hoja de prueba",
HSSFWorkbook.ENCODING_UTF_16 );

// crea una hoja con 10 filas (0-9)


for (rownum = (short) 0; rownum < 10; rownum++)
{
// crea una fila
r = ws.createRow(rownum);

//r.setRowNum(( short ) rownum);


// crea seis celdas(0-5) (el + = 2 se entenderá luego)
for (short cellnum = (short) 0; cellnum < 6; cellnum += 2)
{
// crea una celda numérica
c = r.createCell(cellnum);
// rellena con números basándose en la posición
c.setCellValue(rownum * 10 + cellnum
+ (((double) rownum / 10)
+ ((double) cellnum / 100)));

// crea una celda de texto


c = r.createCell((short) (cellnum + 1));

// cada dos filas (por eso lo de +=2)


if ((rownum % 2) = = 0 )
8. Conectando Excel con el mundo 311

// ajusta esta celda con el primer estilo que definimos


c.setCellStyle(csl);
// establece el valor de la celda a "Prueba"
c.setEncoding( HSSFCell.ENC0DING_UTF_16 );
c.setCellValue( "Prueba" )/
}
else
{
C.setCellStyle(cs2);
// establece el valor de la celda a "1... 2... 3..."
c.setEncoding( HSSFCell.ENC0DING_UTF_16 );
c.setCellValue( "1... 2... 3..." );
}
}
}
// usar algunas fórmulas
// avanza una fila
rownum++;
r = ws.createRow(rownum);

//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.

Barra de herramientas Formularios


Barra de herramientas utilizada para almacenar los controles que están in-
cluidos dentro de Excel (no los controles ActiveX).
316 Excel. Los mejores trucos

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.

Editor de Visual Basic (VBE)


También conocido como entorno de Visual Basic. Es un interfaz dentro de Excel
que permite a los usuarios acceden a todos los elementos pertenecientes a VBA.

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).

Función definida por el usuario


Función (véase Función) escrita en código VBA específicamente para devolver
un valor basándose en diferentes métodos de cálculo.

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.

Visual Basic for Applications (VBA)


El lenguaje estándar de macros utilizado en la mayoría de los productos de
Office. La palabra "Applications" representa a cualquiera de las aplicaciones de
Office en las que es utilizado el código, como por ejemplo, Excel. Este lenguaje es
un derivado de Visual Basic, que a su vez es un derivado del lenguaje Basic. La
diferencia fundamental entre estos dos lenguajes es que VBA sólo puede ser utili-
zado dentro de la aplicación que lo contiene, normalmente u n a perteneciente a la
familia Office.

También podría gustarte