Ya se Excel, pero necesito más

Transcripción

Ya se Excel, pero necesito más
Ya sé Excel, pero necesito más
Manual avanzado de Excel, versión 2007
con indicaciones de comandos para los
menús de las versiones 2003, 2002 y 2000
www.necesitomas.com
Paco Megía
1ª edición: noviembre de 2006
ISBN: 978-84-9821-571-7
2ª edición: diciembre de 2007
ISBN: 978-84-9821-988-3
3ª edición: mayo de 2010
ISBN: 978-84-9886-987-3
Este libro no se ha escrito solo, detrás hay muchas horas de
dedicación y trabajo.
Si bien es cierto que para mí esto es una afición, también es
cierto que una compensación económica por el esfuerzo
realizado me anima a continuar, por lo que te agradezco
haberlo comprado y que lo recomiendes a tus conocidos.
Si por el contrario conseguiste el libro en el lado oscuro de
internet, aún puedes redimir tu culpa, si lo has encontrado
interesante, invitándome a algo
www.necesitomas.com/invitar
Gracias
Francisco Megía Morales
[email protected]
Diseño de portada: María José Galián Paramio
www.mariajosegalianparamio.com
Edita: Vision Libros
C/ San Benito 21 Local. 28029 Madrid
www.visionlibros.com
Vision Libros es marca registrada de Vision Net
A Tere
Ya sé Excel, pero necesito más
Índice
Introducción.............................................................................................................12
He visto con mis propios ojos .............................................................................14
Yo siempre he trabajado así ................................................................................16
Convenciones ......................................................................................................17
Suposiciones........................................................................................................19
Sobre la versión 2007 ..........................................................................................21
Un recordatorio rápido ............................................................................................23
Archivos ..............................................................................................................23
Extensiones de archivos ..................................................................................23
Plantillas por defecto para hoja y libro ...........................................................24
Vínculos ..........................................................................................................24
Fórmulas..............................................................................................................26
Referencias absolutas y relativas ....................................................................26
Extender fórmulas ...........................................................................................27
Rellenar y Series .............................................................................................28
Nombres ..........................................................................................................31
Complementos.....................................................................................................35
Moverse con el teclado........................................................................................37
Edición ................................................................................................................39
Pegado Especial ..............................................................................................39
Seleccionar celdas especiales..........................................................................42
Justificar texto .................................................................................................43
Comentarios ........................................................................................................45
Visualización .......................................................................................................47
Modos de ver las referencias ..........................................................................47
Ver información en la barra de estado ............................................................49
Vista previa de salto de página .......................................................................50
www.necesitomas.com
5
Ya sé Excel, pero necesito más
Inmovilizar / Movilizar Paneles ......................................................................51
Dividir ventana ...............................................................................................52
Varias ventanas de una misma hoja de cálculo...............................................53
Vistas Personalizadas......................................................................................55
Área de Trabajo ..............................................................................................56
Ver los nombres de los rangos ........................................................................57
Ver las fórmulas ..............................................................................................57
Ver las macros disponibles .............................................................................57
Ver el editor de Visual Basic ..........................................................................58
Ver todos los comandos de los menús ............................................................58
Tomar fotos de celdas .....................................................................................59
Con estilo ............................................................................................................60
Estilos de celda ...............................................................................................60
Temas..............................................................................................................62
Imprimir ..............................................................................................................64
Encajar en una página .....................................................................................64
Centrado Horizontal / Vertical ........................................................................65
Repetir filas / columnas ..................................................................................65
Imágenes en encabezados y pies de página ....................................................66
Ayuda ..................................................................................................................67
Grupos de funciones para no olvidar .......................................................................68
Búsquedas y referencias ......................................................................................69
Funciones de base de datos .................................................................................72
Convertir unidades ..............................................................................................75
Funciones de información ...................................................................................75
Funciones para errores ........................................................................................76
Funciones de texto...............................................................................................77
Funciones de fecha ..............................................................................................78
Números complejos .............................................................................................79
Redondeo.............................................................................................................79
www.necesitomas.com
6
Ya sé Excel, pero necesito más
Fórmulas matriciales ...........................................................................................81
Formato ...................................................................................................................85
Formato de número personalizado ......................................................................85
Números ..........................................................................................................88
Fechas .............................................................................................................92
Condicionales .................................................................................................94
Alineación de celda .............................................................................................95
Formato condicional............................................................................................98
Gráficos .................................................................................................................101
Eje de abscisas proporcional a los valores ........................................................101
Eje secundario ...................................................................................................103
Representación de valores nulos .......................................................................104
Línea de tendencia.............................................................................................107
Detectar y Corregir errores ....................................................................................110
Auditoría de fórmulas .......................................................................................110
Prevención de errores ........................................................................................112
Acerca de los datos ................................................................................................114
Filtrado ..............................................................................................................117
Ordenar..............................................................................................................122
Validación .........................................................................................................123
Esquema ............................................................................................................127
Subtotales ..........................................................................................................130
Consolidar Datos ...............................................................................................132
A mano..........................................................................................................133
A máquina .....................................................................................................134
Tablas ................................................................................................................137
Obtener datos externos ..........................................................................................143
www.necesitomas.com
7
Ya sé Excel, pero necesito más
Ventajas .............................................................................................................144
El proceso de obtener datos externos ................................................................145
Desde archivo de texto ......................................................................................147
Desde una página web .......................................................................................152
Desde Access ....................................................................................................155
Desde un servidor SQL .....................................................................................156
A través de Query..............................................................................................159
Propiedades de un rango de datos externos .......................................................166
Desde texto y web .........................................................................................166
Desde bases de datos.....................................................................................169
Propiedades de la conexión ...............................................................................170
Consultas con parámetros..................................................................................173
Lenguaje SQL ...................................................................................................175
Modificar una consulta existente.......................................................................176
Eliminar la conexión con un origen de datos ....................................................177
Tablas dinámicas ...................................................................................................179
Creación ............................................................................................................180
Configurar los campos ......................................................................................184
Agrupar .............................................................................................................187
Mostrar y ocultar detalles ..................................................................................189
Campos calculados ............................................................................................191
Elementos calculados ........................................................................................192
Filtro de informe ...............................................................................................194
Configuración de la tabla ..................................................................................195
Varias tablas dinámicas con los mismos datos ..................................................198
Gráfico dinámico ...............................................................................................199
Análisis “y si…” ....................................................................................................200
Tablas de 1 y 2 variables ...................................................................................201
Escenarios .........................................................................................................204
www.necesitomas.com
8
Ya sé Excel, pero necesito más
Resolver problemas ...............................................................................................210
Cálculos iterativos .............................................................................................210
Buscar Objetivo .................................................................................................212
Solver ................................................................................................................215
Facilitando el trabajo a los demás..........................................................................221
Controles de formulario en tus hojas.................................................................221
Proteger el libro .................................................................................................224
Macros y Funciones ...............................................................................................228
Ten confianza en ti ............................................................................................229
Lee esto antes de grabar una macro ..................................................................230
VBA en dos palabras .........................................................................................233
El entorno de programación ..............................................................................234
Depuración ........................................................................................................239
Lo básico de Visual Basic .................................................................................241
Tipos de procedimientos ...............................................................................241
Variables .......................................................................................................245
Constantes .....................................................................................................249
Bucles ...........................................................................................................252
Varias instrucciones con un mismo objeto ...................................................256
Condicionales ...............................................................................................256
Interactuar .....................................................................................................260
Tratamiento de errores ..................................................................................267
Funciones disponibles en VBA.....................................................................270
Las ideas claras .................................................................................................272
Organización .................................................................................................272
Opciones del módulo ....................................................................................273
Alcance .........................................................................................................274
Desplazarse por las hojas ..............................................................................275
Nomenclatura útil .........................................................................................277
www.necesitomas.com
9
Ya sé Excel, pero necesito más
Configuración regional .................................................................................278
Bien está lo que bien acaba ...........................................................................278
Guarda tus procedimientos ...........................................................................279
Añadir una descripción y categoría al procedimiento...................................279
Proteger el código .............................................................................................282
Algunos bucles y ejemplos útiles ......................................................................282
Recorrer todos los libros abiertos .................................................................283
Recorrer todos los escenarios .......................................................................283
Recorrer todas las vistas personalizadas .......................................................284
Recorrer todas las celdas del rango seleccionado .........................................284
Recorrer todas las hojas del libro ..................................................................285
Recorrer las hojas seleccionadas...................................................................286
Recorrer una lista de datos ............................................................................287
Recorrer todas las hojas de gráfico ...............................................................288
Recorrer las hojas de gráfico seleccionadas..................................................289
Recorrer todos los gráficos de una hoja ........................................................290
Abrir y cerrar libros ......................................................................................291
Generar escenarios ........................................................................................292
Ganando tiempo al tiempo ............................................................................297
Epílogo ..................................................................................................................298
Índice Alfabético
www.necesitomas.com
10
Ya sé Excel, pero necesito más
www.necesitomas.com
11
Ya sé Excel, pero necesito más
Introducción
En la mayor parte de los libros de Excel que he consultado y en los cursos a los que
asistí como alumno, con los que he ido aprendiendo a lo largo de los años, he
notado que ciertos aspectos del programa, tal vez por más infrecuentes, no se
comentan siquiera, o no están tan explicados como otros más comunes.
Puede que no todo el mundo tenga que manejar demasiados datos y por ello
determinadas funcionalidades del programa no se consideran de interés general
para los usuarios del programa, o parece que no se les da tanta importancia pues no
está clara la ventaja de su utilización cuando se maneja un escaso volumen de
información. No comparto esta opinión, puesto que desconocer hasta dónde puede
dar de sí éste y cualquier otro programa que se utilice supone que, llegado el caso
de enfrentarse a un caso no convencional, se plantee su solución de manera
artesanal, con una pérdida de tiempo considerable en tareas que podría hacer en
este caso Excel automáticamente y con una alta posibilidad de equivocarse en estos
procesos manuales.
En este libro he tratado de recopilar esas capacidades del programa de uso no tan
habitual, que en el ejercicio de mi trabajo como Ingeniero de Caminos, para el que
Excel no es sino una herramienta más, han supuesto una mejora más notable de la
productividad, esto es, realizar más trabajo que antes en el mismo tiempo, o
realizar el mismo trabajo en menos tiempo. Excel tiene muchas capacidades, por
supuesto, pero sólo he querido incluir las que me han sido de utilidad en alguna
ocasión. Con esto quiero decir que sólo he considerado, en los capítulos que
componen este libro, funcionalidades que he probado por mí mismo, por lo que
puedo decir que he sacado provecho de las mismas y también que he conocido y a
veces sufrido sus limitaciones.
Para aquellos que estén empezando o que no lleven demasiado tiempo trabajando
con el programa, y para los que llevan tanto tiempo como para haber olvidado
algunas cosas básicas, he incluido un recordatorio rápido de los aspectos generales
más interesantes, desde mi punto de vista, tanto porque se emplearán más adelante
en este libro, como porque tienen un gran potencial en sí mismos, la mayoría de las
veces desaprovechado.
www.necesitomas.com
12
Ya sé Excel, pero necesito más
No debes olvidar, querido lector, que salvo que seas el gurú de la informática
en tu trabajo, Excel es una herramienta más, por tanto no es el objetivo en sí
mismo, sino un medio para conseguir hacer tu trabajo de una manera más
eficiente.
Cuanto menos tiempo se dedique a la fase operativa, a las tareas repetitivas y
mecánicas, más tiempo nos queda para la fase creativa, para la innovación, para la
mejora, para la fase humana en definitiva. Es por esto que se hace fundamental
conocer lo mejor posible las herramientas que se pueden utilizar, conocer sus
posibilidades y el alcance de las mismas para, llegado el momento de implementar
una solución para un problema que se nos plantee, poder resolverlo de forma
rápida, eligiendo la herramienta adecuada para sacarle el máximo partido, sin tener
que volver atrás a hacer grandes rectificaciones posteriormente.
Con los trucos, consejos, explicaciones contenidas en este libro trato de ayudar a
los usuarios de esta poderosa arma que es Excel a conocerla mejor, a conocer unas
posibilidades más avanzadas para manejar datos, operar con ellos, resumirlos,
manipularlos, presentarlos; trato en definitiva de ayudar a que el ordenador trabaje
para ti y no al contrario.
Espero que la lectura de este libro, bien a modo de guía o manual de
formación, bien como referencia ocasional para un tema específico te sea de
utilidad y logres recuperar con creces el tiempo que inviertas con él entre tus
manos.
www.necesitomas.com
13
Ya sé Excel, pero necesito más
He visto con mis propios ojos
Hay ocasiones en que el engranaje que une nuestra manera de pensar con el
funcionamiento del ordenador no encaja a la perfección. A lo largo del tiempo he
visto cosas que me han llamado especialmente la atención y tengo que comentar
algunas ideas al respecto:
No hay que volver a teclear algo que ya se ha introducido anteriormente en el
ordenador. Evitamos errores en la transcripción, lo más importante, pero también
es una pérdida de tiempo en algo que ya estaba hecho. Lo mismo puede decirse con
las salidas de un programa cuando queremos analizarlas con otro programa,
siempre que se pueda hay que evitar volver a teclear. He visto con mis propios ojos
cómo se imprimían hojas y hojas de papel para volver a introducir los datos
impresos.
Hay que guardar los datos una vez introducidos. Si estás introduciendo la
información en el ordenador, no está de más que la almacenes allí, porque antes o
después volverás a necesitarla. He visto con mis propios ojos cómo se escribían los
datos en una hoja Excel, se imprimía una ficha, se sobrescribían los datos, se
imprimía la siguiente ficha, así hasta el infinito, sin guardar ninguna. ¿Y si
quisiésemos un listado? Otra vez a teclear.
Hay que evitar anotar la misma información en diferentes lugares. El objetivo es
anotar el dato una sola vez, con lo que evitamos errores tipográficos, errores por
emplear una versión de los datos que no esté actualizada y, por supuesto, evitamos
pérdidas de tiempo; luego, de esos datos generaremos todos los resúmenes que
sean necesarios. He visto con mis propios ojos cómo se introducían los datos en
una hoja resumen conjunta, en otras hojas según la fecha de los datos, en otras
hojas según la procedencia de los datos, así hasta cinco o seis veces según otros
tantos criterios de ordenación. ¿Y si quisiésemos agruparlos por otro criterio? Me
ofrezco voluntario para No teclear esos datos otra vez.
No basta con tener los datos en un mismo archivo, si tienes que manejar muchos
datos con Excel (más de dos datos empiezan a ser ya muchos) júntalos todos,
organizándolos por filas: cada fila un registro diferente, cada columna un campo
diferente. He visto con mis propios ojos cómo se perdía un tiempo precioso
agrupando y reorganizando los datos para que Excel pudiera operar adecuadamente
con ellos. No haber concebido bien la hoja desde el principio, lo que requiere
pensar tan solo unos segundos, ocasiona más adelante trastornos y limitaciones a la
www.necesitomas.com
14
Ya sé Excel, pero necesito más
hora de interpretar y representar los datos y por supuesto, acaba generando el
trabajo adicional de poner las cosas en orden.
No hay que realizar operaciones matemáticas, por sencillas que sean siempre
vamos a ser más lentos que la máquina y puede que nos equivoquemos. He visto
con mis propios ojos cómo se utilizaba Excel con una calculadora de bolsillo
encima de la mesa, en la que se realizaban las operaciones para comprobar porque
“no se fiaban” del resultado que proporcionaba el ordenador. Los errores en las
operaciones suelen deberse a equivocaciones en la introducción de las fórmulas o
de los datos, errores humanos; es muy raro encontrar un error de la máquina. El
ordenador no piensa, sólo hace lo que le mandan y muy deprisa. No digo que no
haya que asegurarse de que la hoja funciona correctamente, pero lo que hay que
comprobar no son las operaciones, sino las fórmulas que hemos introducido, para
ver si calculan lo que queríamos calcular u otra cosa diferente.
No hay que resumir los datos a mano, ni contar, ni sumar, ni hallar el máximo o el
mínimo, ni agrupar por fechas, ni por categorías, ni nada por el estilo; de eso ya se
ocupa Excel. Sólo hay que tener la precaución de tener los datos de tal modo que el
programa los pueda entender (Excel y cualquiera). He visto con mis propios ojos
cómo se sumaban y volvían a sumar a mano las cuentas de gastos de varios
trabajos similares, almacenadas en archivos diferentes, por no tener una estructura
homogénea, no sólo entre diferentes archivos, sino entre el principio y el final de
un mismo archivo, que permitiese al ordenador entender los datos para poder
sumarlos.
Hay que ser organizado y claro para facilitar la comprensión de nuestro trabajo a
los demás. Puede que una hoja para el seguimiento de los gastos de la casa sólo la
utilices tú, con lo que no tendrás problemas, pero si utilizas Excel en el trabajo,
antes o después los libros pasarán por otras manos. He visto con mis propios ojos
cómo alguien era incapaz de explicar qué era lo que presentaba en papel, qué eran
los datos y qué estaba calculado, tan sólo unos pocos días después de haber
realizado el trabajo; no quiero ni pensar qué sería capaz de recordar un año más
tarde.
Hay que documentarse, estudiar y practicar. No basta con tener un buen ordenador
con muchos programas instalados, hay que saber manejarlos y eso sólo se consigue
invirtiendo tiempo en estudiar y poner en práctica lo aprendido para resolver
problemas, y si son problemas reales mejor que ejemplos ficticios. He visto con
mis propios ojos a personas quejándose de que su equipo de música no funcionaba,
www.necesitomas.com
15
Ya sé Excel, pero necesito más
cuando la solución al problema estaba en la segunda página del manual de
instrucciones que “aún” no habían abierto.
Yo siempre he trabajado así
El ordenador no es sólo una máquina de escribir sofisticada, con muchas fuentes y
posibilidad de incorporar colorines y dibujitos, que por cierto lo hace muy bien y
no digo que no sea para lo que más se utilice; un ordenador puede ir mucho más
allá a la hora de ayudarnos con nuestro trabajo, de hecho puede hacer la mayor
parte de muchos trabajos de oficina o gabinete. Sin embargo a veces resulta difícil
ver hasta dónde te puede ayudar la máquina, sobre todo si has estado realizando el
trabajo manualmente durante bastante tiempo. Como casi todo, pienso que es
cuestión de práctica, de prestar atención a lo que hacen los demás a tu alrededor y
de no tener miedo a dar pasos, aunque sean pequeños, hacia delante.
Muchas veces estamos acostumbrados a trabajar de una determinada manera y
somos muy reticentes a introducir cambios, aunque nos aseguren que van a
resultarnos de utilidad. Antes de contestar “No, es que yo siempre he trabajado así”
dale una oportunidad a las nuevas ideas y analiza las ventajas e inconvenientes que
conllevan (en ahorro de tiempo, en reducción de errores, en esfuerzo, en
complicación) comparándolas con tu forma actual de trabajar. Si no te aportan
nada, sigue como hasta ahora, pero no dudes en incorporarlas a tu trabajo, en
hacerlas tuyas, si suponen una mejora.
No te quedes estancado. Avanza.
www.necesitomas.com
16
Ya sé Excel, pero necesito más
Convenciones
Puesto que en el mundo hay personas diestras y zurdas, empleo la denominación de
botón principal del ratón para referirme al que se emplea para seleccionar, y botón
secundario del ratón al utilizado para mostrar menús contextuales.
En la maquetación del libro se han empleado estos estilos para resaltar cierta
información
Consejos, trucos, textos destacados
 Ruta de menús en versiones anteriores
Ruta de menús en versión 2007
Código de programación Visual Basic para Aplicaciones
Las combinaciones de teclas se mostrarán entre corchetes [Ctrl][Fin]
SUBTOTALES, nombres de las funciones en mayúsculas.
Para los ejemplos de este libro se ha empleado la versión Excel 2007 Beta 2
Technical Refresh (12.0.4407.1004) en español de España. Las funciones, figuras y
referencias al programa están en este idioma, que en la codificación que emplea
Microsoft es el 3082.
C:\Archivos de programa\Microsoft Office\Office??\3082
Se emplean las denominaciones libro y hoja del mismo modo que Excel: un libro
es un archivo, que puede contener varias hojas de cálculo. Se suele generalizar y
llamar hojas de cálculo a los archivos que utiliza Excel, supongo que debido a que
hasta la versión 4 del programa sus archivos únicamente podían contener una hoja,
existiendo un tipo de archivo diferente, denominado libro, que podía agrupar en
cierto modo varios archivos de hoja de cálculo; todo esto, claro está ya no tiene
sentido, aunque permanezca la confusión de nombres.
En español las cosas tienen género y cuando tenga que referirme a Excel lo haré
con género masculino, pensando que es un programa informático, aunque soy
consciente de que hay también bastante gente se refiere a Excel en femenino,
supongo que pensando en una hoja de cálculo.
Por último, no hay que olvidar que Microsoft es una empresa estadounidense, y
que la versión original de Excel y la concepción inicial del programa están en
www.necesitomas.com
17
Ya sé Excel, pero necesito más
inglés, lo que saldrá a la luz antes o después, sobre todo en la programación de
macros y con los caracteres empleados para separación de decimales y millares. En
general no suele dar problemas, por eso cuando ocurre no lo esperas. En España
utilizamos la coma como separador decimal, sin embargo no hay que olvidar que la
mayor parte del Mundo emplea el punto para este fin. Excel emplea la
configuración definida en el equipo para interpretar y mostrar los números. No
obstante, en ciertas operaciones (por ejemplo mostrar escenarios), cuando una hoja
pasó por un ordenador con configuración de coma y luego por otro ordenador con
configuración de punto, es posible que Excel interprete como texto lo que
aparentemente es un número. Personalmente hace tiempo que opté por configurar
mi ordenador con punto para los decimales y espacios para separar los miles,
evitando así conflictos con programas pensados exclusivamente para funcionar con
puntos, que no es el caso de Excel.
www.necesitomas.com
18
Ya sé Excel, pero necesito más
Suposiciones
Supongo que ya has trabajado algo con Excel, lo suficiente como para estar
familiarizado con él y como para haber tenido que enfrentarte a él en la resolución
de algún problemilla.
Es éste un manual avanzado, por lo que no va a contener explicaciones sobre
aspectos básicos comunes a la mayoría de los programas informáticos, como abrir
un archivo o guardarlo, ni tampoco sobre los conceptos básicos de Excel, como
introducir funciones o ajustar el ancho de las celdas, por poner unos ejemplos.
Supongo que todo esto ya lo conoces de sobra.
Supongo también que sabes que puedes programar macros y funciones
personalizadas en Excel mediante Visual Basic para Aplicaciones. No supongo que
sepas programar, sólo supongo que sabes que existe. Pese a que en este libro no se
trata la programación de macros en Excel de una manera exhaustiva, para
conseguir un ahorro importantísimo de tiempo en las tareas repetitivas sí resulta
útil recurrir a las macros y le dedico un amplio capítulo a ello, incluyendo algunos
ejemplos interesantes.
Dado que Excel no ha experimentado cambios sustanciales en los últimos años,
prácticamente todo lo explicado en este libro es válido, en algunos casos con
ligeras variaciones, al menos para las versiones 2000, 2002 (XP), 2003 y 2007. La
esencia del programa permanece inalterada desde hace bastante tiempo y los
cambios de una versión con la anterior se limitan a cuestiones de forma más que de
fondo. Las figuras incluidas y las indicaciones de cómo emplear los comandos se
refieren a la última versión del programa, si bien en los casos necesarios se hace
también referencia a las anteriores.
Supongo también que sabes que la apariencia de las ventanas de los programas en
Windows puede modificarse a gusto del usuario en lo que se refiere a los colores,
botones, esquinas redondeadas, animaciones, etc. No soy muy partidario de esta
personalización llevada al extremo, aunque entiendo que tiene su público.
Simplemente te comento que opté por el estilo clásico que ofrece Windows XP,
con la menor cantidad posible de abusos estéticos, y es lo que aparecerá en las
capturas de pantalla que ilustran este libro.
www.necesitomas.com
19
Ya sé Excel, pero necesito más
Para la apariencia de Excel opté por la combinación de colores por defecto. Espero
que las diferencias que encuentres con lo que veas en tu equipo no te distraigan. No
te quedes en el continente y adéntrate en el contenido.
www.necesitomas.com
20
Ya sé Excel, pero necesito más
Sobre la versión 2007
Como viene siendo habitual, cada pocos años nos sorprenden con una nueva
versión que se anuncia con gran entusiasmo como la solución a nuestros
problemas, la versión que mejorará sustancialmente la productividad y facilitará el
manejo de la información en la empresa. Desde mi modesto punto de vista, lo
fundamental del programa sigue siendo igual, habiéndose centrado bastantes
esfuerzos en el tema de publicar la información en servidores Share Point, facilitar
el acceso compartido a archivos, en definitiva se han añadido y mejorado
capacidades para el trabajo en red.
El cambio de imagen en la versión 2007 ha sido bastante drástico, ya que lo que
anteriormente eran menús y barras de herramientas con iconos se han fundido en
un nuevo sistema de pestañas de los que dependen una serie de grupos de
comandos, representados por iconos junto con menús desplegables.
No es sólo el cambio de aspecto, que supondría sólo desplazar el ratón en
horizontal en vez de en vertical como se hacía con los menús, sino que ha habido
una redistribución de los comandos, que llevaban en el mismo sitio desde los
inicios del programa, o casi.
Será la moda o será la búsqueda de un entorno más “amigable”, el caso es que ya
tenemos a un competidor a rebufo (spreadsheet.google.com), con aspecto de
pestañas similar a esta versión 2007, más limitado en las capacidades pero que no
www.necesitomas.com
21
Ya sé Excel, pero necesito más
requiere instalación, pues funciona vía web ¿Será este el nuevo cambio de
Microsoft para la próxima versión de Office?
Desaparecen las barras de herramientas personalizadas, que son sustituidas por una
única barra de iconos de acceso rápido.
Sin embargo, el antiguo menú Archivo no se ha convertido en una pestaña más,
sino que ahora aparece al pulsar sobre el “botón Office”, que se sitúa en la esquina
superior izquierda de la ventana del programa (este cambio no ha debido de tener
mucho éxito, porque en la versión 2010 este botón se ha vuelto a cambiar por un
menú archivo renovado).
No todo es estética puesto que, aparte de que ahora se dispone de más colores, se
han añadido una serie de mejoras y se han rebasado algunos límites que existían
desde hace bastantes versiones. Enumero a continuación los que, por su utilidad,
me han parecido más importantes:
Se aumenta el número de filas y columnas, pasando de las 65536 filas (216) a
1048576 (220), y de 256 columnas (28) a 16384 (214).
Se elimina la limitación del número de criterios a emplear para ordenar un rango de
datos, que hasta ahora podían ser únicamente tres simultáneamente.
Se elimina la limitación del número de criterios para el formato condicional de
celdas, que anteriormente podían ser únicamente tres, más las condiciones
incorporadas en el propio formato numérico de la celda. Además se incorporan
nuevas posibilidades del formato condicional que son mucho más visuales.
Se han incorporado de manera generalizada los estilos de tabla, para lo que en la
versión 2003 se denominaron listas, que anteriormente sólo existían tímidamente
en las tablas dinámicas y autoformatos de tablas.
Se incorpora la posibilidad de guardar los archivos en formato pdf (se puede decir
que es el estándar actual para intercambio de información pre-impresa, respetando
el aspecto original) sin necesidad de otro software adicional.
Desaparece el ayudante de Office. ¡Qué descanso!
www.necesitomas.com
22
Ya sé Excel, pero necesito más
Un recordatorio rápido
Son muchas las capacidades del programa y muchas opciones de configuración, así
que tal vez no venga mal antes de empezar un recordatorio rápido de estas cosillas
que facilitan el trabajo cotidiano. Algunas de ellas pueden parecer muy simples,
pero todas las he tenido que explicar en alguna ocasión a personas que llevaban
tiempo, a veces no poco, trabajando con el programa y desconocían su existencia.
Si todo esto ya lo sabes, léelo por encima al menos una vez y pasa por alto lo que
ya conozcas, simplemente recuerda que lo tienes aquí por si te hace falta en algún
momento.
Archivos
Extensiones de archivos
Hasta la versión 2003, los archivos de Excel tenían extensiones de tres letras, las
dos primeras siempre xl, abreviatura de Excel, y la tercera dependía del tipo de
archivo, así:
s de spreadsheet, hoja de cálculo, luego llamadas libros,
t de template, plantilla,
a de Add in, complemento,
l de library, biblioteca,
k de bacKup, copia de seguridad,
w de workspace, área de trabajo,
lo que suponía tener extensiones xls, xlt, xla, xll, xlk, xlw.
Pon nombres a tus archivos que luego te faciliten la localización de la
información. No es nada recomendable llamar a tus archivos con nombres del
tipo: el último, versión final, la definitiva, este sí que sí. Porque un archivo es
“el último” sólo hasta que creas otro posterior, con lo que únicamente
conseguirás confundirte.
En la versión 2007 a algunos de estos tipos de archivo se les añade una cuarta letra,
así tenemos:
www.necesitomas.com
23
Ya sé Excel, pero necesito más
x para el nuevo formato de archivos, basado en XML,
b para los archivos almacenados en formato binario, especialmente indicado para
reducir el tamaño de archivos grandes,
m de macro para indicar que el libro contiene macros,
lo que se traduce en extensiones xlsx, xlsb, xlsm, xltx, xltm, xlam.
Plantillas por defecto para hoja y libro
Cada vez que abrimos Excel aparece un libro en blanco, listo para que empecemos
a trabajar, sin embargo, puede que la configuración de este libro no sea la que más
nos convenga. Si, por ejemplo, siempre utilizamos determinados encabezados y
pies de página, márgenes de impresión, estilos de celdas, etc., puede interesarnos
establecer una plantilla que se emplee por defecto para ese libro que aparece al
abrir Excel.
Esta plantilla debe llamarse Libro.xltx (Libro.xlt en las versiones anteriores) y tiene
que guardarse en la siguiente ubicación:
C:\Documents and Settings\NombreUsuario\Datos de
programa\Microsoft\Excel\XLSTART
También podemos establecer las opciones por defecto para las nuevas hojas que
insertemos en un libro existente. Para conseguirlo debe crearse una plantilla, con
una sola hoja, que se guardará con el nombre Hoja.xltx (Hoja.xlt en versiones
anteriores) en la misma ubicación anterior.
Cada vez que se arranca el programa, Excel carga todos los archivos que se
encuentren en la carpeta XLSTART (puede que en tu equipo encuentres esta
carpeta con el nombre traducido INICIAR). Aquí es donde se almacena por defecto
nuestro libro de macros personal, para que las macros del mismo estén disponibles
siempre que abramos el programa.
Vínculos
 Edición>Vínculos
Datos>Conexiones>Editar vínculos
Cuando en nuestro libro hacemos referencia a información que se encuentra en
otros libros, establecemos un vínculo con dichos libros. Nuestro libro almacena la
www.necesitomas.com
24
Ya sé Excel, pero necesito más
ubicación de los archivos vinculados para poder acceder a ellos cuando queramos
actualizar la información.
En caso de que los archivos vinculados hayan cambiado de lugar, al abrir nuestro
libro, se nos preguntará si queremos indicar la nueva ubicación para que Excel
pueda localizarlos.
En las opciones del programa podemos elegir si deseamos que se actualice la
información de los vínculos al calcular el libro, que es la opción por defecto, o por
el contrario, deseamos que la actualización no se realice de manera automática.
Dentro del formulario para editar los vínculos a otros archivos, desde la versión
2002 disponemos de la posibilidad de romper un vínculo, lo cual resulta muy útil
para liberarse definitivamente de esos vínculos a libros que ya no existen, que se
arrastran cuando trabajamos con libros aprovechados de otros trabajos anteriores.
www.necesitomas.com
25
Ya sé Excel, pero necesito más
Al eliminar los vínculos, las celdas con fórmulas que hacían referencia a los
mismos, serán sustituidas por su valor actual.
Fórmulas
Referencias absolutas y relativas
Cuando en una fórmula se hace referencia a otra celda en modo absoluto, se sitúa la
celda con respecto a su posición en la hoja, por ejemplo, la celda de la fila 1
columna 1.
La referencia relativa sitúa una celda en relación a la celda donde se introduce la
fórmula, por ejemplo, la celda que se encuentra a la derecha de la actual, o la que
se encuentra tres filas más arriba y dos columnas a la derecha de la celda actual.
También podemos referirnos con situaciones mixtas, es decir, podemos referirnos
de manera absoluta a la fila pero de manera relativa a la columna (fila 3 de la hoja,
columna de la derecha) y al contrario (esta fila, columna 7).
En el modo de visualización de referencias en que las filas se muestran con un
número y las columnas con una letra, una referencia absoluta se representa
anteponiendo el símbolo $ a la letra de la columna, al número de la fila, o a ambos,
según corresponda:
$A$1(referencia absoluta), A$1(columna relativa, fila absoluta), $A1(columna
absoluta, fila relativa), A1(referencia relativa).
Para cambiar de una manera rápida una referencia de absoluta a relativa, en
modo de edición, o sobre la barra de fórmulas, se puede situar el cursor sobre
la referencia que se quiera cambiar y pulsar la tecla [F4]. Con cada pulsación
de esta tecla la referencia va cambiando entre las cuatro posibilidades.
En el siguiente ejemplo se han generado las tablas de multiplicar empleando
adecuadamente referencias absolutas y relativas.
www.necesitomas.com
26
Ya sé Excel, pero necesito más
Extender fórmulas
Un método habitual para confeccionar la hoja de cálculo consiste en escribir la
fórmula en la primera celda y luego extender esa fórmula a las celdas contiguas en
vertical o en horizontal. Excel se ocupará de actualizar las referencias a la posición
de las nuevas celdas, simplemente hay que tener la precaución de haber escrito
correctamente las referencias relativas o absolutas que se van a emplear.
Para extender la fórmula debe situarse el cursor del ratón sobre la esquina inferior
derecha de la celda que contiene la fórmula que se desea extender, el ratón adopta
la forma de cruz, manteniendo pulsado el botón principal del ratón mientras se
arrastra hasta ocupar la zona que va a rellenarse con las fórmulas.
www.necesitomas.com
27
Ya sé Excel, pero necesito más
Si hay datos en las celdas adyacentes, podemos hacer doble clic en botón
principal del ratón, sobre la esquina inferior derecha, para extender la
fórmula hacia abajo a todas las celdas que contienen datos a su izquierda.
Sólo puede extenderse una fórmula en horizontal o en vertical, si queremos
extender una fórmula desde una esquina de un área para ocuparla por completo,
tendrá que hacerse en dos pasos, primero en vertical y luego en horizontal (o
viceversa).
Rellenar y Series
 Edición>Rellenar
Inicio>Modificar>Rellenar
Mediante los comandos del grupo “Rellenar” podemos extender fórmulas a un
rango, podemos dar valores a las celdas de un rango tomando como valores de
partida los valores existentes en una celda, fila o columna del rango. Podemos
rellenar un mismo rango en varias hojas diferentes, a partir de los valores y/o
formatos existentes en el rango seleccionado de la hoja activa. Podemos finalmente
generar series aritméticas y geométricas.
Previamente a seleccionar el comando rellenar, hay que seleccionar el rango que se
desea rellenar, incluyendo la celda, fila o columna con el valor o la fórmula que se
empleará para rellenar el resto de celdas del rango.
www.necesitomas.com
28
Ya sé Excel, pero necesito más
Cuando se rellena hacia abajo, se parte de los valores de la fila superior del rango
seleccionado. Si rellenamos hacia la derecha, se parte de los valores situados en la
columna de la izquierda. Análogamente, si rellenamos hacia la izquierda se
emplean las celdas de la columna más a la derecha del rango seleccionado y si
rellenamos hacia arriba se partirá del contenido de las celdas de la fila inferior del
rango seleccionado.
Si tenemos seleccionadas varias hojas, se activará la opción de rellenar “Otras
hojas”, que permite rellenar el mismo rango que tengamos seleccionado en la hoja
activa en el resto de hojas seleccionadas, a partir de los valores, formatos o ambos,
según le indiquemos, de la hoja activa.
Otra opción para rellenar celdas es empleando el botón secundario del ratón para
extender su contenido. Selecciona las celdas de origen, apunta con el ratón a la
esquina inferior derecha del rango, el cursor adoptará la forma de una cruz negra,
entonces mantén pulsado el botón secundario del ratón para extender el contenido
de esas celdas. Al soltar el botón del ratón aparecerá un menú con diferentes
opciones para el relleno, entre las que se encuentra la posibilidad de mostrar el
cuadro de diálogo para rellenar con una serie.
www.necesitomas.com
29
Ya sé Excel, pero necesito más
En el cuadro de diálogo Series tenemos a la vista las opciones disponibles para
generar una serie aritmética (aquí denominada lineal), una serie geométrica, una
serie cuyos valores son fechas y por último el tipo autorrellenar, que produciría el
mismo efecto que si extendemos el contenido de las celdas con el botón principal
del ratón.
Indicaremos si queremos generar la serie en filas o en columnas, el tipo de serie y
en el caso de serie cronológica indicaremos la unidad de tiempo, que puede elegirse
entre fecha (la unidad es un día), días laborables (excluyendo sábados y domingos),
meses o años.
www.necesitomas.com
30
Ya sé Excel, pero necesito más
Con Incremento, definiremos la razón de la serie, el valor que se suma a un
elemento para obtener el siguiente en las series lineales y cronológicas, o el valor
por el que se multiplica un elemento para obtener el siguiente elemento de la serie
en las geométricas.
Como alternativa a seleccionar previamente el rango que queremos que ocupe la
serie, podemos tener seleccionada únicamente la celda con el primer valor, e
indicaremos como Límite hasta qué valor queremos calcular elementos de la serie.
Se rellenarán tantas celdas como sean necesarias para alcanzar el límite marcado.
Activando la casilla Tendencia, lo que conseguimos es sustituir una relación de
valores por los correspondientes a una serie aritmética o geométrica que mejor se
ajuste a dichos valores.
Los valores originales son reemplazados por los ajustados con la Tendencia,
así que si te interesa conservar los originales, haz una copia al lado.
Nombres
 Insertar>Nombre>
Fórmulas>Nombres definidos>
Podemos asignar nombres a celdas o rangos, lo cual facilitará la introducción de
fórmulas y la compresión de las mismas. Es especialmente recomendable trabajar
con nombres si estás empleando escenarios, rangos múltiples, valores constantes
para el modelo de cálculo o si utilizas varias veces un mismo rango como
argumento de las fórmulas de tu libro.
www.necesitomas.com
31
Ya sé Excel, pero necesito más
Al definir un nuevo nombre debemos indicar el ámbito donde va a estar disponible
ese nombre para operar con él. Hasta la versión 2003 los nombres tenían como
ámbito de aplicación el libro. Esto ocasionaba un problema cuando tratábamos de
insertar en ese libro otra hoja que tenía definido un rango con el mismo nombre. Al
poder elegir ahora el ámbito del nombre, además de nombres disponibles en todo el
libro (esta sigue siendo la opción por defecto), podemos tener varios rangos con el
mismo nombre pero en diferentes hojas.
El ámbito de un nombre no tiene por qué coincidir con la hoja a la que pertenece el
rango, es decir podemos tener un nombre con ámbito la Hoja1, pero que se refiera
a celdas de la Hoja2.
Siempre podremos, en cualquier caso, hacer referencia a un nombre que tenga
como ámbito otra hoja, sólo hay que anteponer al nombre del rango, el
nombre de la hoja con una exclamación para separarlos
NombreHoja!nombreRango.
Siempre es recomendable emplear nombres que sean descriptivos de lo que
representan, pero pensando en las personas que utilizarán la hoja en el futuro, no
viene mal incluir también un comentario explicativo, que aparecerá en el
administrador de nombres
Desde el administrador de nombres podemos editar las propiedades de un nombre,
crear nombres nuevos y eliminar los que no necesitemos (asegúrate de que no estás
utilizando el nombre en ninguna fórmula antes de eliminarlo, si no quieres obtener
www.necesitomas.com
32
Ya sé Excel, pero necesito más
un error #¿NOMBRE?). También podemos aplicar algunos filtros predefinidos a la
lista de nombres para facilitar la localización del que nos interesa.
En muchas ocasiones ya tenemos escritos unos nombres en las celdas de al lado de
nuestros datos. En este caso no es necesario crear los nombres uno a uno, sino que
disponemos de la opción de crear nombres desde la selección, para lo cual
debemos seleccionar previamente el rango con los datos y los nombres.
www.necesitomas.com
33
Ya sé Excel, pero necesito más
Entre las opciones disponibles relacionadas con los nombres, tenemos la opción de
pegar un nombre cuando se está introduciendo una fórmula.
También, dentro de las opciones de pegar un nombre, podemos pegar una lista con
todos los nombres definidos y el rango a que hacen referencia, por si necesitas
explicarlo a alguien.
Si hemos dado nombre a un rango después de tener escritas ya fórmulas que hacen
referencia a él, tenemos la posibilidad de aplicar ese nombre a las fórmulas ya
introducidas, Excel se ocupará mediante “aplicar nombres” de reemplazar las
referencias existentes al rango en cuestión por el nombre correspondiente.
Una manera rápida de crear un nombre para un rango consiste en, una vez
seleccionado el rango, escribir el nombre que queremos asignarle en el cuadro
combinado situado a la izquierda de la barra de fórmulas.
En la lista desplegable que se muestra en este cuadro de nombres aparecen los
nombres disponibles en la hoja activa, no aparecen los nombres que tienen como
ámbito otras hojas, ni los que se refieren a rangos 3D (ver página 133). Al
seleccionar uno de estos nombres se seleccionará el rango correspondiente.
Probablemente ya habrás comprobado que, mientras escribes una fórmula, aparece
una lista con las funciones que coinciden con lo que vas escribiendo, y entre las
funciones también aparecen los nombres definidos, con lo que el proceso de
introducir los nombres en una fórmula es bastante rápido y sencillo.
www.necesitomas.com
34
Ya sé Excel, pero necesito más
Si sigues sin utilizar nombres, no será porque no hay facilidades.
Complementos
 Herramientas>Complementos
Botón Office>Opciones de Excel>Complementos>Administrar>Complementos
de Excel>Ir…
Junto con Excel, se incluyen una serie de complementos que ofrecen
funcionalidades adicionales al programa, como un asistente para crear fórmulas de
suma condicional, para crear fórmulas de búsqueda en otros rangos, herramientas
para análisis estadísticos de datos, herramientas para la conversión de monedas a
euros y viceversa, un solucionador de ecuaciones denominado Solver, etc.
También puedes crear tus propios complementos con los procedimientos
programados que se adapten a tus necesidades o que utilices con más frecuencia.
Para cargarlos localízalos desde el cuadro de diálogo de complementos mediante el
botón examinar.
www.necesitomas.com
35
Ya sé Excel, pero necesito más
www.necesitomas.com
36
Ya sé Excel, pero necesito más
Los complementos que incorpora Excel, una vez cargados, aparecerán dentro de
nuevos grupos de comandos en la pestaña Fórmulas o en Datos, en el menú
Herramientas en las versiones anteriores, o bien en una nueva pestaña o menú
desde donde los podremos ejecutar. El complemento cargado también puede añadir
nuevas funciones que podremos utilizar en nuestras fórmulas.
Moverse con el teclado
En ocasiones, cuando tenemos las manos en el teclado, resulta más rápido utilizar
las teclas para desplazarse por la hoja que llevar la mano al ratón y volver a
colocarla de nuevo sobre el teclado para continuar escribiendo. Muchas de las
teclas o combinaciones de teclas son comunes al sistema operativo o son ya
práctica habitual en la mayoría de programas comerciales, por lo que no son
exclusivas de Excel.
Las combinaciones de teclas de Windows que probablemente más hayas utilizado
serán:
[Ctrl] [C]
copiar.
[Ctrl] [V]
pegar.
[Ctrl] [Z]
deshacer.
[Alt] [Tab]
cambiar a otra aplicación abierta.
[Alt] [F4]
cerrar la aplicación activa.
Si eres zurdo, tal vez te interese copiar y pegar con la mano derecha mientras
mantienes el ratón en la izquierda:
[Ctrl] [Insert]
copiar.
[Mays] [Insert]
pegar.
Si te interesa consultar la relación completa de métodos abreviados, en la ayuda de
Windows ve al tema: "Introducción a los métodos abreviados de teclado de
Windows".
Aunque a lo largo del libro no he incluido casi ninguna, existen combinaciones de
teclas para la gran mayoría de comandos de Excel, presta atención a la información
que aparece al pasar el puntero del ratón sobre los diferentes comandos. Puedes
ahorrar bastante tiempo empleando combinaciones de teclado para las tareas que
realices con mayor frecuencia.
www.necesitomas.com
37
Ya sé Excel, pero necesito más
De entre las combinaciones de teclas que Excel ofrece, enumero a continuación las
relativas al desplazamiento por hojas y libros.
[Inicio]
activa la primera celda de la fila donde se encuentre la celda
activa
[Fin] [flechas de desplazamiento] nos desplazamos en la dirección de la flecha
hasta la última celda que contenga algún dato. En el caso de
que estuviéramos junto a una celda vacía, nos desplazaremos
hasta la primera celda con datos.
[Control] [Inicio]
activa la celda de la fila 1 columna 1, celda A1, de la hoja
activa.
[Control] [Fin]
activa la última celda que contiene datos en la hoja, la más
alejada de la celda A1. Si hemos tenido datos que luego
hemos eliminado, seguiremos yendo a la celda más alejada
que contuvo información.
[Control] [flechas de desplazamiento] desplaza la celda activa, en la dirección
que indica la flecha, hasta la última celda del rango en que nos
encontramos que contiene datos, o en caso de ser una celda
vacía, hasta la primera celda que contenga datos. Igual que
con [Fin][flechas], pero las combinaciones con la tecla
[Control] requieren pulsar las teclas simultáneamente,
mientras que en las combinaciones que emplean [Fin] las
teclas se pulsan consecutivamente.
[Mayúsculas]
Al mantener pulsada la tecla mayúsculas simultáneamente con
otra operación de movimiento de la celda activa, las celdas
quedan seleccionadas. Se puede utilizar con las flechas de
desplazamiento solas, con lo que se avanzará celda a celda, o
conjuntamente con la tecla [Control] o la tecla [Fin] para
avanzar hasta el final del rango con datos. Empleada
simultáneamente con operaciones de movimiento de hoja
activa, se irán seleccionando las diferentes hojas que se vayan
activando.
[Bloqueo Desplazamiento]
al activar esta tecla, cuando utilizamos las teclas de
desplazamiento del teclado, no cambiamos la celda activa,
sino que movemos el encuadre de la zona que aparece en
www.necesitomas.com
38
Ya sé Excel, pero necesito más
pantalla, como si utilizásemos las flechas de las barras de
desplazamiento horizontal y vertical que aparecen en la parte
inferior y en la parte izquierda de la hoja de cálculo.
[Av. Pág.]
nos desplazamos una pantalla hacia abajo.
[Re. Pág.]
nos desplazamos una pantalla hacia arriba.
[Alt] [Av. Pág]
nos desplazamos una pantalla hacia la derecha.
[Alt] [Re. Pág.]
nos desplazamos una pantalla hacia la izquierda.
[Ctrl] [Av. Pág]
activa la siguiente hoja del libro activo.
[Ctrl] [Re. Pág.]
activa la hoja anterior del libro activo.
[Ctrl] [F6], o [Ctrl] [Tab]
activa el siguiente libro o la siguiente ventana.
[Ctrl] [Mays] [F6], o [Ctrl] [Mays] [Tab]
anterior.
activa el libro o la ventana
Si te interesa obtener más información al respecto, busca “teclas de método
abreviado” en la ayuda de Excel.
Edición
Pegado Especial
 Edición>Pegado Especial
Inicio>Portapapeles>Pegar>Pegado Especial
También aparece en todas las versiones en el menú contextual de las celdas cuando
hemos copiado algo previamente.
Normalmente copiamos y pegamos información dentro de un mismo programa o
incluso entre programas diferentes, obteniendo resultados satisfactorios, pero
existen diferentes opciones a la hora de pegar la información copiada que,
normalmente, pasan desapercibidas cuando simplemente “pegamos”.
Cuando trabajamos dentro de Excel, el cuadro de diálogo de pegado especial ofrece
muchas posibilidades a la hora de pegar la información que hemos copiado.
Si hemos copiado un rango de celdas, nos permite pegar sólo las fórmulas, o sólo
los valores, podemos transponer el rango, cambiando filas por columnas. Tenemos
www.necesitomas.com
39
Ya sé Excel, pero necesito más
la opción de pegar sólo el formato, o las reglas de validación. Podemos incluso
realizar una operación sencilla (sumar, restar, multiplicar o dividir) en todas las
celdas del rango por el valor que tengamos en el portapapeles si se trata de una
constante, o modificará las fórmulas de destino cuando la celda que hemos copiado
contiene una fórmula. Ojo con las referencias absolutas y relativas en este último
caso.
Especial interés presenta la opción de Transponer para cambiar filas por columnas
cuando nos damos cuenta de que nuestra tabla crece mejor hacia abajo que hacia la
derecha. Ojo, que copiamos y pegamos en un sitio distinto, así que las referencias
que tuviésemos en las fórmulas no se mantendrán.
También es de utilidad la posibilidad de saltar blancos, para pegar sólo aquellas
celdas que contienen información de entre todas las que tiene el rango copiado, con
lo que no se sobrescriben los valores para las celdas del destino, que en el origen se
encuentran vacías.
Podemos copiar unos datos para añadirlos a un gráfico existente como nuevos
datos de una serie existente o como una serie nueva. Para ello basta con copiar los
datos, seleccionar el gráfico y luego la opción de pegado especial, con la que nos
www.necesitomas.com
40
Ya sé Excel, pero necesito más
aparece en pantalla un formulario preguntando cómo queremos agregar los nuevos
datos al gráfico.
Si sólo queremos pegar formatos, podemos emplear también el botón “copiar
formato”, para copiar el formato y estilo de la celda activa y poder pegarlo en otra
celda. Para pegarlo repetidas veces en diferentes lugares, haz doble clic sobre el
botón copiar formato, el formato copiado se aplicará a todas las celdas que vayas
seleccionando. Para terminar pulsa [Escape].
No siempre la opción por defecto de pegar es la que más nos interesa, por ejemplo,
si copiamos un gráfico de Excel para pegarlo en otra hoja o en un documento de
Word ¿qué te interesa más, que sea una imagen para que nadie pueda alterar el
aspecto del gráfico posteriormente, que sea un objeto que se pueda modificar, que
incluya además del gráfico toda la información de la hoja de cálculo original (y
todo su tamaño de archivo)? Haz la prueba en el programa de destino, donde vas a
pegar lo que acabas de copiar en Excel, para averiguar cuál es la opción por
defecto.
Lo mismo puede decirse cuando copiamos en otro programa para luego pegarlo en
Excel, puede que la opción por defecto no sea lo que más nos convenga. Según el
contenido del portapapeles, las opciones disponibles variarán.
www.necesitomas.com
41
Ya sé Excel, pero necesito más
Seleccionar celdas especiales
 Edición>Ir a… >Especial
Inicio>Modificar>Buscar y seleccionar>Ir a especial
Cuando existen filas o columnas ocultas en la hoja, bien manualmente, bien
mediante las opciones de agrupar y esquema, al seleccionar un rango que incluya
celda visibles con celdas ocultas entre medias, también se seleccionan estas celdas
ocultas, pero puede que sólo nos interese actuar con las celdas visibles. En este
caso debes recurrir al cuadro de diálogo Ir a Especial.
Si lo utilizas mucho, tal vez te merezca la pena añadir un botón a la barra de
herramientas personalizada, o memorizar la combinación de teclas [Alt][;]
 Herramientas>Personalizar>Comandos>Edición>Seleccionar celdas visibles
Personalizar barra de herramientas de acceso rápido>Todos los
comandos>Seleccionar Celdas Visibles
El cuadro de diálogo Ir a Especial tiene muchas otras opciones, como ir a las
celdas que están comentadas, a celdas con valores constantes, a celdas con
fórmulas, a celdas vacías, …
www.necesitomas.com
42
Ya sé Excel, pero necesito más
Podemos ir a celdas con errores, a celdas que contienen fórmulas que no son
iguales que las introducidas en la misma fila o en la misma columna, así como a
celdas precedentes o dependientes de la celda activa, lo que puede ayudar en la
localización y corrección de errores.
Por último, tenemos la opción de seleccionar aquellas celdas que contienen formato
condicional, así como celdas que tienen reglas para validación de datos.
Justificar texto
 Edición>Rellenar>Justificar
Inicio>Modificar>Rellenar>Justificar
En ocasiones tenemos texto en varias celdas, con unas líneas más largas que otras,
dando un aspecto descuidado a nuestra hoja.
Excel ofrece la opción de justificar texto en una selección. Mediante esta
justificación, Excel se ocupa de cambiar parte de los textos de unas filas a otras,
para repartir todo el texto en el rango seleccionado.
www.necesitomas.com
43
Ya sé Excel, pero necesito más
El rango en el que queramos justificar el texto debe ser lo suficientemente grande
como para que quepa todo el texto, en caso contrario se ajustaría el ancho al del
rango seleccionado, pero se necesitarían más filas de las seleccionadas,
sobrescribiendo en las celdas que haya más abajo, sin preguntar.
El texto debe estar escrito en las celdas de la primera columna del rango
seleccionado. Si hay texto en celdas de otras columnas no funciona.
No se trata de una alineación justificada del texto. Se modifica el contenido de
las celdas, repartiendo todo el texto entre ellas.
www.necesitomas.com
44
Ya sé Excel, pero necesito más
Comentarios
 Insertar>Comentario
Revisar>Comentarios>Nuevo comentario
En el menú contextual que aparece al pulsar el botón secundario del ratón sobre
una celda o un rango, tenemos la opción de añadir un comentario, donde podemos
anotar la información que resulte de interés para aclarar el funcionamiento de la
hoja.
Por defecto las celdas comentadas muestran de color rojo la esquina superior
derecha, y el comentario se hace visible al pasar el ratón sobre la celda comentada.
Esta configuración puede cambiarse en las opciones del programa para que todos
los comentarios estén visibles, o para que no sean visibles ni los comentarios ni los
indicadores en la esquina de las celdas comentadas.
 Herramientas>Opciones>Ver
Botón Office>Opciones de Excel>Avanzadas>Mostrar
www.necesitomas.com
45
Ya sé Excel, pero necesito más
En el menú contextual sobre una celda comentada, aparecerá la opción de mostrar
u ocultar ese comentario en concreto, así como la posibilidad de modificar y
eliminar dicho comentario.
www.necesitomas.com
46
Ya sé Excel, pero necesito más
Visualización
Modos de ver las referencias
 Herramientas>Opciones>General>Configuración>Estilo de Referencia L1C1
Botón Office>Opciones de Excel>Fórmulas>Trabajando con fórmulas>Estilo
de Referencia F1C1
Existen dos posibilidades para mostrar las referencias a celdas en las fórmulas, la
opción por defecto emplea letras para las columnas y números para las filas, así
tendríamos por ejemplo la celda A1; en este modo las referencias absolutas se
muestran anteponiendo el signo dólar $ delante del carácter que corresponda, por
ejemplo $A1, o $A$1.
El otro modo de visualización, denominado L1C1 hasta la versión 2002 (¿L de
línea? supongo que por una traducción equivocada del inglés Row por línea, en vez
de por Fila) y F1C1 desde la versión 2003, muestra números tanto en Filas como en
Columnas, anteponiendo F para las filas (L en versiones anteriores) y C para las
columnas. En este caso la referencia absoluta se indica como F3C8 (fila 3 columna
8), mientras que las referencias relativas se muestran con un número entre
paréntesis, indicando la posición de la referencia respecto de la celda actual, así
F(3)C(-1) hace referencia a la celda que se encuentra tres filas más abajo que la
posición actual y una columna menos, esto es, a la izquierda. Cuando la referencia
relativa es a la misma fila o a la misma columna, aparece F o C sin ningún número,
por ejemplo FC(4) se refiere a la celda de la misma fila, cuatro columnas a la
derecha.
www.necesitomas.com
47
Ya sé Excel, pero necesito más
Cuando tenemos fórmulas con referencias relativas que se repiten a lo largo de una
columna, al visualizarlas en el modo F1C1 vemos que todas las fórmulas son
iguales, es decir, que se trata de la misma fórmula, aunque se aplique en diferentes
posiciones. Esto puede ser de utilidad para detectar algún error de una fórmula
distinta que se nos haya colado entre otras muchas iguales. Con el modo de
visualización de letras y números esto no siempre resulta evidente.
En la siguiente figura se muestra cómo en el ejemplo de la tabla de multiplicar (ver
página 27), con el modo de visualización F1C1, es obvio que la fórmula
introducida es la misma en todas las celdas.
www.necesitomas.com
48
Ya sé Excel, pero necesito más
Ver información en la barra de estado
De entre toda la información que podemos ver en la barra de estado, tal vez la de
mayor utilidad sea la posibilidad de que Excel realice ciertos cálculos con las
celdas seleccionadas, tales como mostrar la suma, la media, el máximo o el
mínimo.
En las versiones anteriores sólo se podía mostrar uno de estos resultados, que
debíamos seleccionar en el menú contextual de la barra de estado. En Excel 2007
se pueden mostrar todos estos resultados, o los que queramos, simultáneamente.
En este menú contextual de la barra de estado disponemos de multitud de opciones
para particularizar qué información deseamos que se muestre, desde el modo en
que se encuentra la celda activa, hasta un control deslizante para el porcentaje de
zoom de visualización en pantalla, pasando por un botón para grabar macros.
www.necesitomas.com
49
Ya sé Excel, pero necesito más
Vista previa de salto de página
 Ver>Vista previa de salto de Página / Vista Normal
Vista>Vistas de libro>Vista previa de salto de página / Vista Normal
En la vista previa de salto de página se muestra el área de impresión, con el número
de página superpuesto sobre la hoja.
En este modo de visualización de la hoja, pueden moverse los saltos de página con
el ratón hasta la posición que deseemos, así como los límites del área que va a
imprimirse.
En la versión 2007 tenemos la posibilidad de ubicar unos iconos en la barra de
estado, con los que poder seleccionar el modo de visualización de la hoja. Para ello
debemos activar la opción “ver accesos directos” en el menú contextual de la barra
de estado.
También en la versión 2007, se ha añadido un nuevo modo de visualización
llamado vista diseño de página, donde se ve el documento tal y como va a quedar
impreso, hasta aquí similar a la presentación preliminar, pero con la ventaja de que
podemos escribir y retocar la hoja en este modo de visualización.
www.necesitomas.com
50
Ya sé Excel, pero necesito más
Inmovilizar / Movilizar Paneles
 Ventana>Inmovilizar / Movilizar Paneles
Vista>Ventana>Inmovilizar Paneles
Opción fundamental para mantener los encabezados de filas y o columnas fijos en
pantalla mientras te desplazas por la hoja.
Lo que se inmoviliza es lo que se encuentre encima y a la izquierda de la celda
activa.
En este ejemplo se inmovilizó desde la celda F2, con lo que por encima (fila 1) y a
la izquierda (columnas de la A a la E) permanecen en pantalla mientras nos
www.necesitomas.com
51
Ya sé Excel, pero necesito más
desplazamos por la hoja. Las columnas A y B que estaban fuera del encuadre de la
pantalla al inmovilizar paneles permanecen sin ser visibles, pues quedan también
inmovilizadas.
La inmovilización de paneles afecta únicamente a la presentación en pantalla,
pero no afecta a la hora de la impresión de las hojas.
Dividir ventana
 Ventana>Dividir / Quitar División
Vista>Ventana>Dividir
Otra buena opción para mantener visibles en pantalla diferentes partes de la hoja
simultáneamente. La diferencia respecto de inmovilizar paneles es que con la
división de la ventana pueden desplazarse todas las zonas de la hoja; no quedan
inmovilizadas. Esto se traduce en que una misma celda puede aparecer en todas las
divisiones. También permite alterar el orden en que aparecen los datos respecto de
su posición en la hoja, podemos tener en la división superior celdas que están más
abajo que las mostradas en la división inferior. Lo mismo ocurre a izquierda y
derecha.
Aparte de mediante los menús, puede dividirse la pantalla empleando las barras
que aparecen en la parte superior y a la izquierda de las flechas de las barras de
desplazamiento. El cursor del ratón adopta la forma de dos flechas opuestas
separándose perpendicularmente a la dirección en que se va a dividir la ventana.
www.necesitomas.com
52
Ya sé Excel, pero necesito más
Las divisiones pueden modificarse también mediante el ratón después de haber
sido creadas, tanto por separado la división horizontal o la vertical, haciendo clic
sobre la división y arrastrando hasta el lugar deseado, como conjuntamente,
haciendo clic con el ratón en la intersección de ambas divisiones. Para eliminar una
división basta con hacer doble clic sobre ella.
La división de la ventana afecta únicamente a la presentación en pantalla,
pero no afecta a la hora de la impresión de las hojas.
Varias ventanas de una misma hoja de cálculo
 Ventana>Nueva Ventana
Vista>Ventana>Nueva Ventana
En ocasiones es de utilidad tener varias ventanas abiertas de un mismo archivo, por
ejemplo si en nuestro libro hay muchas hojas pero en este momento estamos
trabajando sólo con un par de ellas, podemos tener dos ventanas, cada una
mostrando una hoja de las dos con las que estamos trabajando. Tiene la ventaja de
www.necesitomas.com
53
Ya sé Excel, pero necesito más
poder tener en pantalla las dos ventanas a la vez, es decir que nos permite mirar a
dos partes del libro simultáneamente.
La visualización de una misma hoja en ventanas diferentes no tiene por qué ser la
misma. En una ventana podemos tener, por ejemplo, inmovilizados los
encabezados en vista normal, mientras que en otra ventana podemos ver la misma
hoja en vista previa de salto de página con la ventana dividida en horizontal y con
diferente zoom.
Como con casi todas las aplicaciones de Windows o Macintosh, podemos organizar
las ventanas en cascada, en mosaico, horizontal y verticalmente.
www.necesitomas.com
54
Ya sé Excel, pero necesito más
 Ventana>Ocultar / Mostrar
Vista>Ventana>Ocultar / Mostrar
Se puede ocultar una de las varias ventanas abiertas del documento, aunque la
ventana sigue existiendo y puede volver a mostrarse en cualquier momento. Para
eliminar una ventana habrá que cerrarla, sólo se cierra el archivo si tratamos de
cerrar la última ventana abierta del mismo.
Vistas Personalizadas
 Ver>Vistas personalizadas
Vista>Vistas de Libro>Vistas Personalizadas
Puedes guardar en el libro diferentes vistas del mismo, que luego podrás recuperar
para ver o imprimir cuando lo necesites. Es muy útil si tenemos varias zonas en el
libro (en la misma o en diferentes hojas) entre las que nos tenemos que mover con
frecuencia, por ejemplo una zona de datos de partida y otra de resultados.
La vista puede almacenar, además de la zona que se encuadra en la pantalla para
visualización, información de filas y columnas ocultas, de filtros aplicados y de
configuración de impresión, lo que incluye encabezados, pies de página,
orientación del papel, área de impresión, etc.
www.necesitomas.com
55
Ya sé Excel, pero necesito más
Dispón la vista de tu hoja como quieras recuperarla posteriormente, no
olvides la configuración de la impresión, y guárdala con un nombre
descriptivo.
Área de Trabajo
 Archivo>Guardar área de trabajo
Vista>Ventana>Guardar Área de Trabajo
Es posible, también, guardar el área de trabajo, que nos permitirá recuperar más
adelante todos los libros que tenemos abiertos en la situación actual. Muy útil
cuando se trabaja con varios documentos simultáneamente y tienes que interrumpir
la labor para continuar dentro del suficiente tiempo como para haber olvidado
dónde te habías quedado, o incluso después de apagar el programa o el ordenador.
El área de trabajo se guarda en un archivo independiente, con extensión xlw (w de
workspace).
www.necesitomas.com
56
Ya sé Excel, pero necesito más
Ver los nombres de los rangos
Cuando tenemos varios rangos con nombre en la hoja, reducir el porcentaje del
zoom de visualización hasta un valor inferior al 40% permite ver sobre la hoja los
nombres de los rangos que se han definido. El resultado es más o menos
satisfactorio dependiendo de si los rangos con nombre son de tamaños similares, si
no es así, tal vez no sea demasiado clarificador.
Ver las fórmulas
 Herramientas>Opciones>Ver>Opciones de Ventana>Fórmulas
Fórmulas>Auditoría de Fórmulas>Mostrar Fórmulas
[Alt][º]
En ocasiones puede resultar útil que se muestren las fórmulas contenidas en las
celdas, en vez del valor resultado de las mismas, sobre todo en la fase de creación
de la hoja, o cuando tratamos de detectar algún error, para poder comprobar las
fórmulas introducidas viéndolas todas a la vez sin tener que ir seleccionándolas una
a una para verlas en la barra de fórmulas.
Ver las macros disponibles
 Herramientas>Macro>Macros
Programador>Código>Macros
[Alt][F8]
Si queremos ejecutar una macro, desde este cuadro de diálogo podemos elegir entre
las macros disponibles en el propio libro, en el libro de macros personal, o en
cualquiera de los libros que tengamos abiertos en este momento.
www.necesitomas.com
57
Ya sé Excel, pero necesito más
Ver el editor de Visual Basic
 Herramientas>Macro>Editor de Visual Basic
Programador>Código>Visual Basic
[Alt][F11]
Porque cuando grabas tu primera macro no sabes cómo consultar el código que se
ha generado, para poder retocarlo o simplemente para curiosear.
El editor de Visual Basic es el lugar donde modificar, crear y depurar el código de
la programación de tu libro.
Ver todos los comandos de los menús
Uno de los fenómenos más desagradables de las versiones 2000 a 2003 era
desplegar un menú y no tener a la vista todas las opciones disponibles, sino sólo las
que el programa pensaba que, por haberlas utilizado más recientemente o más
veces, ibas a seguir utilizando eternamente. Afortunadamente, en la versión 2007
www.necesitomas.com
58
Ya sé Excel, pero necesito más
todos los comandos están visibles y siempre en el mismo sitio, para tranquilidad de
los usuarios.
 Herramientas>Personalizar>Opciones>Mostrar en los menús primero los comandos usados
recientemente
Desactivando esta opción no habrá que esperar a que se despliegue el menú
completo en un segundo paso, tras unos inquietantes instantes en los que da tiempo
a preguntarse si te equivocaste de menú, si el programa se ha estropeado, o si
alguien estuvo trasteando en tu ordenador mientras fuiste al baño un momento.
Tomar fotos de celdas
 Herramientas >Personalizar>Comandos>Herramientas>Cámara
Personalizar barra de herramientas de acceso rápido>Comandos disponibles
en>Todos los comandos>Cámara
Esta curiosidad puede sernos de utilidad en alguna situación. Es más rápido que
copiar las referencias a varias celdas si solamente queremos tener a la vista algunos
datos, por ejemplo los datos de origen al lado de los resultados de los cálculos.
Al seleccionar este comando, la cámara toma una imagen de las celdas
seleccionadas en el portapapeles, que podemos insertar a continuación como si de
una forma de dibujo se tratase pero, al contrario de lo que ocurre con una imagen
estática, esta imagen se actualiza si cambian las celdas originales. Guarda la
referencia a las celdas como una fórmula, así que si movemos todos los datos
originales a otro sitio con el ratón, o si insertamos celdas entre medias, se mantiene
la referencia, tanto si la imagen se encuentra en el mismo libro como si se pegó en
un libro diferente. Incluso si modificamos el tamaño de las celdas originales se
modifica el tamaño de la imagen para adaptarse a la nueva situación.
www.necesitomas.com
59
Ya sé Excel, pero necesito más
Al igual que una imagen convencional, se puede modificar su tamaño, se puede
mover por la hoja y desde la versión 2002 podemos girarla.
Fíjate en la barra de fórmulas cuando selecciones la imagen, aparece el rango
de origen (que podrás retocar si es necesario). Si haces doble clic sobre la
imagen se seleccionará dicho rango.
Con estilo
Estilos de celda
 Formato>Estilo
Inicio>Estilo>Estilos de celda
Los estilos no son territorio exclusivo de los procesadores de texto. Excel permite
la utilización de estilos de celda y desde la versión 2003 también incluye estilos de
tabla (ver página 138).
En las versiones anteriores, para facilitar la aplicación de estilos, es recomendable
habilitar en una barra de herramientas personalizada la lista desplegable donde
aparecen los estilos definidos en el libro.
 Herramientas>Personalizar>Comandos>Formato>Estilo
La mayor ventaja de haber aplicado estilos en tu libro aparece cuando hay que
cambiar el aspecto de toda la información allí recogida. En vez de tener que
cambiar las celdas una a una, basta con modificar el estilo y en todos los lugares en
www.necesitomas.com
60
Ya sé Excel, pero necesito más
los que se haya aplicado dicho estilo se actualizará el aspecto de acuerdo a la nueva
definición.
Disponemos de gran variedad de estilos predefinidos, pero por si no tenemos
bastante o ninguno se adapta a nuestros requerimientos, podemos definir nuestros
estilos personalizados.
Para crear un estilo personalizado aplica en una celda manualmente el formato que
quieras y luego, con esa celda activada, selecciona la opción de crear un estilo
nuevo. En el cuadro de diálogo que se mostrará a continuación pon un nombre
representativo a tu estilo y activa las opciones que quieres que se consideren.
Si ya habías definido unos estilos en otro libro, mediante la opción de
combinar estilos, puedes traer al libro actual los estilos personalizados
definidos en el otro libro que, para esta operación, tiene que estar abierto
también.
www.necesitomas.com
61
Ya sé Excel, pero necesito más
Temas
Diseño de página>Temas
En la versión 2007 se incorpora el concepto de tema, que es un conjunto de estilos
de número, estilos de tabla, fuentes, colores, estilos de gráfico, efectos para las
formas…
Con la utilización de temas, toda la apariencia del libro estará en sintonía. Si
cambiamos el tema asociado a nuestro libro, se modificará la apariencia de todo el
libro.
Los temas pueden guardarse como archivos independientes (con extensión thmx)
que pueden ser utilizados por diferentes programas del paquete Office para dar un
aspecto homogéneo, independientemente del programa que creó el archivo.
También facilita que varias personas generen documentos con apariencia similar,
simplemente aplicando un mismo tema a sus documentos.
Tengo mis dudas sobre si el departamento más creativo de Microsoft es el que elige
las combinaciones de colores, o es el que inventa los nombres.
www.necesitomas.com
62
Ya sé Excel, pero necesito más
Para crear un nuevo tema hay que definir los colores y las fuentes del mismo,
mediante las opciones en las listas desplegables de este grupo. Una vez hecho esto,
podemos guardar el tema personalizado a través de Guardar tema actual, en el
desplegable de los temas.
www.necesitomas.com
63
Ya sé Excel, pero necesito más
Imprimir

Archivo>Configurar Página>
Diseño de página>Configurar Página>Cuadro de diálogo configurar página>
A continuación describo algunas opciones dentro de la configuración de página
para impresión que pueden resultar de interés.
Encajar en una página
>Página>Ajuste de escala>Ajustar a: – páginas de alto por – páginas de
ancho
www.necesitomas.com
64
Ya sé Excel, pero necesito más
Activando esta opción, Excel ajustará el tamaño con que imprimirá la hoja para
encajarla en las páginas especificadas.
No es necesario indicar las dos dimensiones, si solamente indicamos una de ellas
dejando la otra en blanco, Excel ajustará el tamaño para imprimir en el número de
páginas de la dimensión señalada, mientras que el número de páginas en la otra
dimensión dependerá del tamaño del área de impresión de la hoja.
Por ejemplo, si tenemos muchos datos de los que queremos imprimir un listado,
podemos indicar en el ajuste de escala que lo encaje en una página de ancho,
dejando en blanco el número de páginas de alto, para que se impriman las hojas
necesarias.
Centrado Horizontal / Vertical
>Márgenes>Centrar en la Página>horizontalmente / verticalmente
No siempre lo que tiene mejor apariencia es imprimir nuestra hoja alineada arriba y
a la izquierda, en muchas ocasiones, sobre todo si no ocupamos la página por
completo, obtendremos un resultado más aparente si centramos la impresión
horizontal o verticalmente en la página.
En estos temas de aspecto, cada uno tiene sus gustos y preferencias.
Repetir filas / columnas
>Hoja>Imprimir títulos>Repetir filas en extremo superior
www.necesitomas.com
65
Ya sé Excel, pero necesito más
>Hoja>Imprimir títulos>Repetir columnas a la izquierda
Con estas dos opciones seleccionamos las filas o columnas con los títulos que
queremos que aparezcan en todas las hojas impresas. Fundamental cuando nuestra
hoja de cálculo necesita más de una página para leerse cómodamente en papel.
Las opciones para repetir títulos no están disponibles cuando se accede a la
configuración de página desde la vista preliminar.
En esta pestaña Hoja de la configuración de página, tenemos también las opciones
para imprimir la cuadrícula de las celdas, para imprimir las letras y números de
filas y columnas.
Podemos indicar cómo queremos que se impriman los comentarios y cómo
queremos que se impriman los errores presentes en la hoja.
Imágenes en encabezados y pies de página
>Encabezado y pies de página>personalizar encabezado
>Encabezado y pies de página>personalizar pie de página
Desde la versión 2002 es posible incorporar imágenes dentro del encabezado o pie
de página. También es posible desde esa versión incorporar la ruta del archivo;
antes debía conseguirse esto por otros métodos, ya que desde las opciones de
personalización del encabezado y el pie sólo se podía añadir el nombre del archivo,
pero no la ruta completa hasta él.
En la versión 2007 puede establecerse que las páginas pares e impares tengan
encabezados diferentes, por ejemplo para que resulten simétricos si va a imprimirse
a doble cara o tipo libro. Asimismo es posible establecer que la primera página
tenga un encabezado y pie diferente de las demás.
www.necesitomas.com
66
Ya sé Excel, pero necesito más
Ayuda
[F1]
El programa incorpora una completa ayuda en pantalla, con todas las funciones del
programa y ejemplos de utilización de gran parte de la información allí mostrada.
Como es lógico los ejemplos no se ajustarán siempre exactamente a tus
necesidades y puede no resultar muy cómoda de leer, pero siempre es un buen
recurso y el primer lugar donde consultar en caso de duda.
www.necesitomas.com
67
Ya sé Excel, pero necesito más
Grupos de funciones para no olvidar
 Insertar>Función
Fórmulas>Biblioteca de funciones
Aunque la mejor manera de aprender las funciones disponibles es practicando, y
recordándote que en la ayuda del programa se encuentra la explicación de todas las
funciones que Excel incorpora, me voy a permitir llamar la atención únicamente
sobre algunas de ellas, quizás no tan famosas como la función SUMA, pero
bastante útiles. No trato de explicar el funcionamiento de todas, simplemente
indicar para qué sirven o qué se puede conseguir con ellas.
Lo primero que no debes olvidar es que Excel ha agrupado las fórmulas por
categorías, para facilitarte la localización de la que se adapte a tus necesidades.
Cuando vayas a escribir o modificar una fórmula, puedes activar el asistente para
insertar funciones pulsando el botón fx, que se encuentra junto a la barra de
fórmulas.
www.necesitomas.com
68
Ya sé Excel, pero necesito más
Si utilizas una versión anterior a la 2007, puede que requieras cargar el
complemento Herramientas para Análisis para disponer de algunas de estas
funciones, pues no se encuentran entre las funciones por defecto de Excel.
Búsquedas y referencias
Excel dispone de unas cuantas funciones para buscar información en un rango,
devolviendo como resultado la posición en el rango de la celda que coincide con el
valor buscado, o bien una celda de la misma fila o de la misma columna que la
celda coincidente.
BUSCAR busca un valor en un vector y devuelve como resultado el valor que se
encuentra en la misma posición en un segundo vector, entendiendo como vector un
rango de una dimensión, es decir un rango tipo fila o tipo columna, puede ser una
matriz con una de sus dimensiones igual a uno, o puede ser una lista de valores
introducidos manualmente, separados por puntos y comas (o el separador de listas
configurado en tu sistema operativo)
BUSCARH busca un valor en la primera fila de un rango, y devuelve un valor de
ese rango que se encuentra en la misma columna que el dato encontrado, pero en la
fila que le indiquemos.
www.necesitomas.com
69
Ya sé Excel, pero necesito más
BUSCARV busca un valor en la primera columna de un rango, y devuelve un valor
de ese rango que se encuentra en la misma fila que el dato encontrado, pero en la
columna que le indiquemos.
COINCIDIR busca un valor en un rango de una dimensión (fila o columna) y
devuelve la posición de la celda coincidente, no devuelve el valor, sino la posición
donde se ha encontrado la coincidencia. Por ejemplo, si buscamos el valor 23 en la
lista {14;45;64;23;9;10}, el valor buscado se encuentra en la cuarta posición, por lo
tanto la función COINCIDIR devolverá como resultado 4.
Las funciones anteriores permiten elegir si la coincidencia con el valor que se
busca ha de ser exacta, o si se mostrará el valor más próximo.
ELEGIR devuelve el valor que se encuentra en una posición especificada dentro de
una lista de valores.
Asociada a estas funciones disponemos de la función INDICE, que permite
referirnos a celdas individuales, filas o columnas, dentro de un rango o incluso
dentro de varios rangos. Por ejemplo, para hacer referencia a la celda de la segunda
fila y la cuarta columna dentro de un rango habría que escribir
INDICE(Rango;2;4).
La función INDICE devuelve la referencia a una celda, por lo que puede emplearse
dentro de funciones o como parte de una referencia a un rango, por ejemplo, para
sumar un rango que comience en la celda A2 y acabe en la celda del ejemplo
anterior escribiríamos la siguiente fórmula: SUMA(A2:INDICE(Rango;2;4))
El rango que emplea la función INDICE puede estar formado por varias áreas, en
este caso habría que indicar de cuál de estas áreas queremos extraer el valor.
Por ejemplo, INDICE(RangoMúltiple;2;1;3) se refiere a la celda de la fila 2,
columna 1 del área 3, dentro del rango de nombre RangoMúltiple, que es la
representada en la figura.
www.necesitomas.com
70
Ya sé Excel, pero necesito más
Excel incorpora un complemento denominado Asistente para búsquedas que
permite generar, de una manera sencilla, fórmulas de búsqueda de valores en una
tabla a partir de los encabezados de fila y columna, mediante las funciones INDICE
y COINCIDIR.
Funciones FILA y COLUMNA devuelven como resultado la fila o la columna que
ocupa una celda dentro de la hoja. FILA(A2) es igual a 2
Las funciones FILAS y COLUMNAS devuelven como resultado el número de filas
o columnas que tiene un rango o matriz. Si el rango proporcionado está formado
por múltiples áreas, generará el error #¡REF!
DESREF permite hacer referencia a un rango que se encuentra desplazado (su
esquina superior izquierda) respecto de una celda, un número de filas y de
columnas especificado. Podemos especificar las dimensiones del rango mediante el
alto y el ancho del mismo. Si indicamos un número de filas positivo quiere decir a
la derecha, mientras que un número negativo significa hacia la izquierda. Con las
columnas, un número positivo indica sentido hacia abajo, mientras que un número
negativo indica sentido hacia arriba.
DESREF(Celda1;2;-1;4;3) hace referencia al rango cuya esquina superior izquierda
se sitúa dos filas debajo y una columna a la izquierda de Celda1, con cuatro filas de
alto y tres columnas de ancho.
www.necesitomas.com
71
Ya sé Excel, pero necesito más
INDIRECTO nos da la posibilidad de hacer referencia a una celda componiendo la
ruta hasta esa referencia (nombre del libro, nombre de la hoja, fila y columna) con
una cadena de texto, lo que permite generar la referencia concatenando los valores
que se encuentran en otras celdas (en una o en varias). Por ejemplo,
INDIRECTO(NombreHoja & "!A1") hace referencia a la celda A1 de la hoja cuyo
nombre se encuentra en una celda a la que se ha puesto el nombre “NombreHoja”,
si en esta celda escribimos “Hoja1”, la función INDIRECTO hará referencia a la
celda A1 de la hoja Hoja1, si posteriormente en la celda NombreHoja
escribimos”Hoja2”, la función INDIRECTO se referirá a la celda A1 de la hoja
Hoja2. Como es lógico, si la referencia no es correcta, se produce el error #¡REF!.
La función INDIRECTO puede utilizarse como argumento de cualquier otra
función que requiera una referencia.
Funciones de base de datos
Toda la serie de funciones cuyo nombre comienza por BD, permite realizar
operaciones con un subgrupo del total de datos disponibles en un listado o tabla,
que cumplan unos criterios que especifiquemos.
Para todas estas funciones, los criterios deben anotarse en celdas adicionales. En la
función BD se hace referencia a las celdas donde se encuentran esos criterios, pero
no pueden escribirse dichos criterios dentro de la propia fórmula.
En un ejemplo de un listado donde se anoten los gastos de una casa, las funciones
BD nos permiten calcular cuánto gastamos en comida entre dos fechas, o cuál es el
importe medio de las facturas de la luz, o cuántas facturas de más de 100 euros
hemos tenido en reparaciones en el último año, etc., etc.
www.necesitomas.com
72
Ya sé Excel, pero necesito más
La estructura de todas estas funciones es la siguiente:
BDfunción(rango con los datos; campo que se desea evaluar; criterios que deben
cumplir los registros)
El modo de anotar los criterios es con el nombre de los campos en la fila superior y
en las filas bajo ese encabezado, los criterios que queremos que cumpla cada
campo. No es válido un rango múltiple, con los encabezados en un área y los
criterios en otra área, aunque coincidan las dimensiones. Debe ser un rango único,
con los nombres de los campos en la primera fila y los criterios en las filas
siguientes, en caso contrario obtendrás el error #¡VALOR!
Todos los criterios que están en una misma fila deben satisfacerse
simultáneamente, equivale a un operador lógico Y. Si tenemos criterios en distintas
filas estamos indicando que debe satisfacerse cualquiera de las condiciones de las
filas, al menos una de ellas, como un operador O booleano.
No es necesario que en el rango de criterios aparezcan los nombres de todos los
campos de la base de datos, basta con que aparezcan aquellos que queremos utilizar
como criterios. Un mismo campo puede aparecer varias veces, si debe cumplir
simultáneamente más de una condición.
www.necesitomas.com
73
Ya sé Excel, pero necesito más
Para criterios con cadenas de texto, puedes emplear caracteres comodín, ? para un
único carácter y * para varios caracteres.
Si quieres buscar un texto que incluya un asterisco * o una interrogación ? o una
tilde ~, antepón una tilde ([Alt]+0126) a dicho carácter para que Excel no lo
interprete como un comodín. Así, por ejemplo, para aplicar un criterio que localice
los registros que contienen “¿cómo?” deberemos escribir en la celda del criterio
correspondiente el texto “¿cómo~?”. Para encontrar todos los datos que acaben en
?, tendríamos que emplear el criterio *~?
El criterio no tiene por qué ser un valor fijo para todos los registros, puede ser una
fórmula que dependa del dato y que dé como resultado verdadero o falso. Por
ejemplo, podemos indicar que la función BD actúe sobre los registros que se hayan
pagado más de treinta días después de la fecha de la factura, es decir, que la
diferencia entre ambas fechas sea superior a treinta.
Para conseguirlo, hay que escribir como criterio las fórmulas que deseemos,
referidas al primer registro, a la primera fila de datos. Excel se ocupará de ir
analizando la expresión con cada uno de los diferentes registros, para incluirlos en
el cálculo de la función BD si el criterio se evalúa como verdadero.
Como no se trata de ningún campo de la base de datos, puedes llamar a ese criterio
como mejor te parezca.
Estos son algunos ejemplos de criterios:
www.necesitomas.com
74
Ya sé Excel, pero necesito más
Convertir unidades
La función CONVERTIR permite realizar la conversión de unidades entre
diferentes sistemas. También admite la inclusión de prefijos multiplicadores en las
unidades, desde atto (10-18) hasta Exa (1018).
Excel no es MathCad, así que no podemos indicar las unidades en que se
introducen los valores para que luego el programa realice la conversión
automáticamente al operar y proporcione el resultado en las unidades que
deseemos.
Funciones de información
Excel incluye una serie de funciones que permiten obtener información sobre el
tipo de valor de las celdas, si es texto, si es un número, si está en blanco, si
contiene un error, etc.
Los nombres de estas funciones son bastante descriptivos, por lo que no merecen
mucha más explicación. Cada una de ellas devolverá como resultado el valor
VERDADERO, si el argumento coincide con lo indicado en el nombre de la
función.
ES.PAR, ES.IMPAR, ESBLANCO, ESERR, ESERROR, ESLOGICO, ESNOD,
ESNOTEXTO, ESNUMERO, ESREF, ESTEXTO.
Bueno, tal vez no todos los nombres sean suficientemente autoexplicativos:
ESERR, verdadero si el argumento es un error, excepto #N/A.
ESNOD, verdadero para el error NO Disponible (#N/A, Not Available).
ESREF, verdadero cuando el argumento es una referencia a un rango, bien escrita
directamente, bien mediante un nombre.
Adicionalmente a estas funciones ES, tenemos otras funciones para obtener
información de las celdas, del tipo de datos contenido en las mismas e incluso del
libro:
CELDA suministra información como el formato o el color de una celda.
INFO suministra información concerniente al archivo, tal como la ruta del
directorio de trabajo actual, el número de hojas en el libro, el sistema operativo
instalado y algunas cosas más.
www.necesitomas.com
75
Ya sé Excel, pero necesito más
Por último, la función TIPO devuelve un valor numérico según el tipo de dato
contenido en la celda que se le proporcione como argumento.
Número
1
Texto
2
Valor lógico
4
Error
16
Matriz
64
En algunos casos puede ser interesante aplicar una fórmula u otra según el
tipo de dato que el usuario haya introducido, lo que se realizaría empleando la
función TIPO dentro de una función condicional SI.
Funciones para errores
Disponemos de una serie de funciones para los errores en las celdas #N/A
#¡VALOR! #¡REF! #¡DIV/0! #¡NUM! #¿NOMBRE? #¡NULO!
Dentro del grupo de funciones de información, las ya comentadas
ESERR, verdadero para todos los errores excepto #N/A,
ESERROR, verdadero para todos los errores, incluido #N/A,
ESNOD, verdadero sólo si el argumento es #N/A.
No podemos aplicar la función condicional SI directamente, para comparar si una
celda contiene un error; tendremos que emplear alguna de las funciones anteriores,
o bien la función SI.ERROR (añadida en la versión 2002), condicional que evalúa
si el argumento es un error, cualquiera de ellos, y en caso afirmativo dará como
resultado el valor que le indiquemos en su segundo argumento.
Las funciones anteriores no distinguen qué error es el que se ha producido. Para
averiguarlo debes emplear la función TIPO.DE.ERROR, que devuelve un valor
numérico que depende del error
#¡NULO!
1
#¡DIV/0!
2
#¡VALOR!
3
#¡REF!
4
#¡NUM!
6
#¿NOMBRE? 5
#N/A
7
Para cualquier otro valor suministrado a esta función, ésta devuelve como resultado
el error #N/A.
www.necesitomas.com
76
Ya sé Excel, pero necesito más
Podemos emplear este valor numérico para calcular con un valor alternativo en
caso de que se presente un determinado error, o para mostrar algún formato
condicional o algún texto descriptivo que informe al usuario del libro de las
posibles causas del error.
Funciones de texto
Cuando se opera con textos, no viene mal tener a mano este grupo de funciones,
que nos van a permitir convertir textos a mayúsculas o a minúsculas, eliminar
espacios, eliminar caracteres no imprimibles, reemplazar un texto por otro, buscar
dentro de un texto, concatenar varios textos, o convertir números a texto con un
formato especificado.
MAYUSC convierte a mayúsculas, MINUSC convierte a minúsculas,
NOMPROPIO convierte la primera letra de cada palabra a mayúsculas y el resto a
minúsculas.
ESPACIOS elimina los espacios existente al principio y al final, LIMPIAR elimina
los caracteres no imprimibles, como saltos de línea u otros caracteres procedentes
de la importación de datos de archivos con otra codificación diferente a la
empleada por defecto en tu equipo; los famosos caracteres que aparecen como un
rectángulo  o como una barra vertical |.
REEMPLAZAR permite cambiar parte de una cadena de texto por otra indicando
la posición, dentro de la cadena original, y el número de caracteres que queremos
reemplazar. También disponemos de la función SUSTITUIR que busca un texto
dentro de la cadena de texto que se proporciona como argumento y lo sustituye por
otro.
IZQUIERDA y DERECHA permiten extraer un número de caracteres, empezando
a contar por el principio o por el final del texto respectivamente.
CONCATENAR une varias cadenas de texto. Excel también entiende en una
fórmula el operador & empleado para concatenar textos.
DECIMAL, MONEDA, TEXTO, convierten un número en un texto aplicándole
formato de número con decimales, de moneda, o un formato personalizado
respectivamente.
HALLAR y ENCONTRAR permiten buscar un texto dentro de otro, dando como
resultado la posición en que se ha encontrado, o un error #¡VALOR! si no lo
encuentra. La diferencia entre ambas funciones es que HALLAR no distingue entre
www.necesitomas.com
77
Ya sé Excel, pero necesito más
mayúsculas y minúsculas, mientras que ENCONTRAR busca el texto que esté
escrito exactamente igual.
EXTRAE permite recuperar un fragmento de texto, indicado por la posición dentro
del texto original.
Funciones de fecha
Dentro de esta categoría, Excel incorpora una serie de funciones que permiten
saber, por ejemplo, a qué día de la semana corresponde una fecha, o calcular los
días laborables existentes entre dos fechas, conocer cuál es el último día del mes,
sumar o restar meses a una fecha, etc.
AHORA y HOY proporcionan la fecha del sistema con y sin hora respectivamente.
AÑO, MES, DIA, HORA, MINUTO, SEGUNDO obtienen a partir de una fecha
únicamente el número correspondiente a lo que indica el nombre de la función.
DIASEM, FIN.MES, NUM.DE.SEMANA permiten conocer a qué día de la
semana corresponde una fecha, cuál es el último día del mes, y en qué semana del
año se encuentra una fecha.
DIA.LAB, DIAS.LAB permiten operar considerando únicamente días laborables,
lo que supone no considerar ni sábados ni domingos, y además permite que
añadamos una relación de días festivos o a no tener en cuenta.
FECHA.MES permite operar contando meses enteros, especialmente indicado para
estos sucesos que ocurren siempre el mismo día de todos los meses.
DIAS360 opera considerando un año de 360 días, repartidos en doce meses de
treinta días cada uno.
FRAC.AÑO calcula la fracción de año transcurrida entre dos fechas.
FECHA, NSHORA permiten recomponer un dato que Excel entienda como fecha y
hora, a partir de los datos separados de año, mes, día y horas, minutos y segundos.
FECHANUMERO, HORANUMERO permiten obtener un dato que Excel entiende
como fecha y hora a partir de un texto donde aparezca escrita la fecha o la hora.
Bueno, tampoco hay que esperar que vaya a entender cualquier texto aunque
parezca evidente, debe tener el aspecto similar al de los formatos de fecha
sencillos, por ejemplo, “8 de enero de 2007” no lo entiende, pero “8 enero 2007”
sí.
www.necesitomas.com
78
Ya sé Excel, pero necesito más
Estas cuatro últimas funciones son de especial utilidad cuando hemos
importado datos de otras fuentes y Excel no es capaz de interpretar
correctamente por sí mismo lo que nosotros sabemos que son fechas.
Números complejos
No es una de sus facetas más conocidas, pero Excel puede trabajar con números
complejos. Disponemos de las funciones IM, dentro de la categoría de funciones de
ingeniería, que interpretan textos del tipo “1+2i” o “1+2j” como números
complejos, permitiendo realizar operaciones con ellos.
La letra siempre en minúscula para que Excel la interprete como parte
imaginaria. Y para que no haya problemas al operar con ellos, deben estar
escritos todos de forma homogénea, o todos con i o todos con j, pero no
conviene mezclarlos.
IMAGINARIO, IM.REAL proporcionan la parte imaginaria y la parte real del
número.
COMPLEJO genera un número complejo a partir de sus partes real e imaginaria.
IM.SUM, IM.SUSTR para sumar o restar.
IM.PRODUCT, IM.DIV para multiplicar o dividir.
IM.ABS, IM.ANGULO módulo y ángulo en radianes del número.
IM.SENO, IM.COSENO seno y coseno del número.
IM.EXP, IM.LN, IM.LOG10, IM.LOG2 exponencial y logaritmos.
IM.POT, IM.RAIZ2 potencia y raíz cuadrada.
Redondeo
Disponemos de varias opciones a la hora de redondear valores a un número entero
o a un número con los decimales que establezcamos.
REDONDEAR es el redondeo tradicional, con los decimales especificados, al
número más próximo en valor absoluto.
REDONDEAR.MAS y REDONDEAR.MENOS permiten redondear al número
más próximo mayor o menor (en valor absoluto) respectivamente.
www.necesitomas.com
79
Ya sé Excel, pero necesito más
REDONDEA.PAR y REDONDEA.IMPAR redondean al número entero par o
impar más próximo (en valor absoluto) respectivamente. No permiten decimales.
REDOND.MULT redondea al múltiplo más próximo de un número especificado.
Ambos números, el que se quiere redondear y del que será múltiplo, deben tener el
mismo signo o de lo contrario la función generará un error #¡NUM!
TRUNCAR elimina la parte decimal, no redondea, simplemente elimina los
decimales.
No sólo se puede redondear a un entero o a un número con ciertas cifras decimales,
si en el número de cifras decimales establecemos un valor negativo estaremos
indicando que redondee a decenas, centenas, etc., por ejemplo para redondear el
número 123456.45 a millares, escribiríamos REDONDEAR(123456.45;-3), lo que
daría como resultado 123000.
Una alternativa más drástica es indicar si queremos que nuestra hoja opere con los
valores que se ven en pantalla. Esta alternativa es de utilidad cuando queremos que
las operaciones con los números que vemos en pantalla o impresos sean correctas,
evitando aparentes errores como 2+2=5, que se producen porque estamos
empleando un formato sin decimales y esos números 2 que vemos pueden ser en
realidad 2.4 y dado que Excel opera, salvo que le digamos lo contrario, con los
valores de las celdas, la suma de esos números (4.8) aparece como 5, si no
mostramos los decimales.
Al activar la opción de calcular con precisión en pantalla, los números de la
hoja serán sustituidos por los valores que aparezcan en pantalla, lo cual
dependerá del formato de las celdas. Este cambio no se puede deshacer.
 Herramientas>Opciones>Calcular>Opciones del libro>Precisión en pantalla
Botón Office>Opciones de Excel>Avanzadas>Al calcular este
libro>Establecer precisión en pantalla
www.necesitomas.com
80
Ya sé Excel, pero necesito más
Fórmulas matriciales
Excel permite realizar operaciones matemáticas con matrices. Las funciones
MMULT, TRANSPONER, MINVERSA, MDETERM, son típicas de operaciones
matemáticas entre matrices, que multiplican dos matrices, transpone, halla la
inversa o el determinante de una matriz, respectivamente.
A la hora de operar con funciones matriciales únicamente hay que tener dos
precauciones: debemos tener seleccionado todo el rango que va a ocupar la matriz
resultado de la operación; y para introducir la fórmula hay que pulsar la
combinación de teclas [Ctrl][Mays][Intro].
Reconocerás las fórmulas matriciales porque aparecen en la barra de
fórmulas entre llaves { }.
La matriz es considerada como una unidad, por lo que no puede modificarse una
celda de la matriz, se debe modificar la matriz entera seleccionando todo el rango
antes de editar la fórmula, sin olvidar introducirla tras la edición con
[Ctrl][Mays][Intro] (no vale escribir las llaves a mano). Lo mismo ocurre para
eliminarla, no se pueden eliminar solamente una parte de las celdas que componen
la matriz, se debe eliminar entera.
Si queremos, por ejemplo, resolver un sistema lineal de ecuaciones con igual
número de ecuaciones que de incógnitas, expresando dicho sistema en forma
matricial, operaríamos de la siguiente manera:
www.necesitomas.com
81
Ya sé Excel, pero necesito más
[A]·[x] = [B]
[x] = [A]-1·[B]
Que con las funciones de Excel quedaría escrito de una forma así:
{=MMULT(MINVERSA(matrizA);matrizB)}
Si nos enfrentamos a un problema sobredimensionado, con más ecuaciones que
incógnitas, podemos emplear el cálculo matricial para obtener un ajuste por
mínimos cuadrados a la solución.
[A]·[x] = [B]
[A]t·[A]·[x] = [A]t·[B]
[x] = ([A]t·[A])-1·[A]t·[B]
Es decir, empleando la nomenclatura de las funciones de Excel, la matriz [x] de
incógnitas sería:
{=MMULT(MMULT(MINVERSA(MMULT(TRANSPONER(matrizA);matrizA))
;TRANSPONER(matrizA));matrizB)}
Aparte de las operaciones convencionales entre matrices, Excel puede emplear el
concepto de matriz combinado con cualquier función que opere sobre un rango de
celdas.
La combinación de la función condicional SI, con este concepto de operación
matricial nos ofrece un gran potencial a la hora de operar con datos que cumplen
determinadas condiciones, venciendo la limitación de las funciones .SI
tradicionales (SUMAR.SI, CONTAR.SI, PROMEDIO.SI) que operan con las
celdas que cumplen o no una condición, pero no permiten operar cuando existen
varias condiciones. Las funciones .SI están pensadas, por ejemplo, para sumar
todos los valores superiores a 100, pero no sirve para sumar todos los valores de los
importes superiores a 100 y facturados entre dos fechas.
Esta limitación de comparar con varios criterios ha sido parcialmente solucionada
con
las
funciones
.SI.CONJUNTO
(SUMAR.SI.CONJUNTO,
CONTAR.SI.CONJUNTO).
También superamos el engorro de las funciones BD de base de datos (BDSUMA,
BDPRODUCTO, …), por lo poco operativo que resulta en muchas ocasiones tener
que escribir los criterios a cumplir en celdas aparte, pues no se pueden incluir en la
www.necesitomas.com
82
Ya sé Excel, pero necesito más
propia función BD como argumentos sino mediante una referencia a las celdas
donde se encuentran los criterios.
La función SI, con cualquier función aplicada sobre un rango e introducida como
función matricial, trabaja de la siguiente manera: tanto la condición como los
valores resultado se evalúan elemento a elemento, devolviendo una matriz de la
misma dimensión que el rango utilizado como argumento de la función; este rango
se habrá rellenado con los valores de verdadero o falso según cumpliesen o no la
condición cada uno de los elementos de la matriz (rango) inicial.
Debe tenerse la precaución si se van a emplear varios rangos, de que todos
tengan las mismas dimensiones. El resultado de la función también tendrá la
misma dimensión.
Si no se introduce como función matricial, se evalúa el conjunto como una unidad,
y algunas operaciones no serán posibles.
=SI(A1:A10=B1:B10;Verdadero;Falso) devolverá verdadero si A1:A10 es igual a
B1:B10, los diez valores iguales. Compara el conjunto.
{=SI(A1:A10=B1:B10;Verdadero;Falso)} devolverá como resultado diez valores,
que serán verdadero o falso según cumpla la condición cada valor por separado, es
decir, compara elemento a elemento, A1 con B1, A2 con B2, etc.
El resultado de la función SI también puede tomarse de una matriz, no tiene por
qué ser un valor único:
{=SI(A1:A10=B1:B10;C1:C10;D1:D10)} devuelve según sea verdadero o falso,
un valor tomado de C1:C10 o de D1:D10 respectivamente.
Hasta aquí no parece mucha ventaja; si el resultado ocupa tanto como el rango de
origen puedo poner una fórmula a la derecha de mis datos y ya está. Lo bueno
viene cuando utilizamos el resultado de esta función matricial como argumento
dentro de otra función, con lo que evitamos emplear esas celdas para un resultado
intermedio.
Cualquier función que admita un rango como argumento puede tener como
argumento el resultado de una operación matricial.
www.necesitomas.com
83
Ya sé Excel, pero necesito más
En el ejemplo anterior, podemos sumar los valores, que provienen de C1:C10 o de
D1:D10 según se cumpliese o no la condición. El resultado de esta suma aunque
sea una función matricial, es de dimensión 1x1, es una matriz con un solo número,
por lo tanto ocupará una celda
{=SUMA(SI(A1:A10=B1:B10;C1:C10;D1:D10))}
Para el caso de estas sumas condicionales, Excel incluye un complemento
denominado Asistente para suma condicional, que permite generar la fórmula en
pocos pasos de una manera bastante clara. Se puede utilizar este asistente como
ayuda para generar una función de este tipo y posteriormente editar la fórmula
matricial para reemplazar la función suma por la que nos interese (CONTAR,
PROMEDIO, PRODUCTO, etc., etc., etc.)
La parte matricial de la función puede abarcar sólo parte de una fórmula más
complicada, que puede incluir funciones de Excel y operaciones aritméticas.
{=1+5*A3+SUMA(SI(C5:C25=ESPACIOS(D5:D25);(E5:E25);0))}
Al evaluarse la función SI elemento a elemento, celda a celda, podemos aplicar una
función que normalmente sólo admite como argumento una celda, como es el caso
de la función ESPACIOS
Ten cuidado con los ceros y los vacíos. Para según qué funciones no es lo mismo
operar con ceros que no poner nada; por ejemplo, si vamos a sumar da igual tener
un cero, porque no afecta al resultado, pero si lo que vamos a obtener es la media
aritmética con la función PROMEDIO, operar con ceros para los datos que no
queremos tener en consideración generará resultados erróneos. Si no queremos
considerar ciertos registros habrá que ponerlos como vacíos "" (dobles comillas).
Lo repito una vez más: las fórmulas matriciales se introducen con la
combinación de teclas [Ctrl][Mays][Intro].
www.necesitomas.com
84
Ya sé Excel, pero necesito más
Formato
Formato de número personalizado
Menú contextual celda>Formato de celda>Número
En la pestaña dedicada al formato del número, dentro del formato de celdas, se
muestran diferentes opciones, agrupadas por categorías para dar formato al valor
que contiene la celda, es decir, definimos aquí cómo queremos que se muestre ese
valor.
Para cada categoría (número, moneda, fecha, …) se muestran en esta pestaña
diferentes modalidades para elegir la que más se adapte a nuestras necesidades.
www.necesitomas.com
85
Ya sé Excel, pero necesito más
Pero tal vez lo más interesante es conocer cómo se pueden generar formatos
personalizados, para poder tener un control más preciso sobre el modo de ver
nuestros datos, porque aunque disponemos de muchas posibilidades predefinidas
para los casos habituales, antes o después necesitaremos un formato que se salga de
lo normal.
Debe tenerse claro que una cosa es el formato del número y otra el valor de la
celda, que es con el que Excel opera (salvo que tengamos activada la opción de
calcular con precisión en pantalla).
Pese a lo que aparezca en pantalla, el valor de la celda no se altera al aplicar
un formato u otro.
Si por ejemplo, tras aplicar el formato a una fecha, vemos “Lunes, 1 de enero de
2007”, la celda sigue teniendo el mismo valor numérico que antes y podemos
operar con ella.
Para números con decimales, el formato hace que se muestra el valor de la celda
redondeado a tantas cifras decimales como le indiquemos, si bien el valor de la
celda no cambia.
Un formato numérico personalizado definirá cómo representar valores positivos,
valores negativos, valores cero y textos, por este orden, y separando cada una de
estas cuatro definiciones mediante el separador de listas del sistema (suele ser
punto y coma):
formato positivos; formato negativos; formato cero; formato textos
Si sólo indicamos un criterio se aplicará a todos los números, ya sean positivos o
negativos, mientras que el texto tendrá formato general de texto.
Si escribimos dos criterios, para positivos y negativos, los ceros adoptarán el
formato definido para los positivos, mientras que el texto tendrá el formato general
de texto.
Para definir el formato de un número emplearemos una serie de caracteres comodín
que representarán a los números, separadores, colores, etc.:
www.necesitomas.com
86
Ya sé Excel, pero necesito más
Carácter
0
Siempre muestra un número
#
Muestra un número, excepto cuando se trata de ceros a la
izquierda de la parte entera o a la derecha de la parte decimal.
E
exponencial en base diez, diez elevado a…
/
fracción
@
el valor de la celda cuando es un texto
_-
Separación
*
Repite el carácter siguiente hasta llenar la celda.
\
muestra el carácter siguiente, por ejemplo cuando es una E, no
lo confunde con un exponencial, o cuando aparece el mismo
símbolo que el empleado para separar decimales.
?
Un dígito cualquiera, pero cuando se trata de ceros a la
izquierda de la parte entera, o a la derecha de la parte decimal,
no muestra nada y deja el hueco.
[color]
color de la fuente a aplicar; puede ser blanco, negro, rojo,
azul, verde, amarillo y en algunas versiones también fucsia y
aguamarina.
"
delimitador de texto, para incluir cadenas de texto en el
formato.
Para el separador decimal y separador de miles, así como para el separador
de hora y los símbolos AM y PM, debes emplear los caracteres que hayas
definido en tu ordenador.
En los ejemplos que incluyo a continuación, el separador decimal es el punto y
como separador de miles se emplea un espacio (1 001.1). Para las horas empleo
como separador dos puntos y los caracteres AM y PM para indicar antes o después
de mediodía (11:53:15 AM).
www.necesitomas.com
87
Ya sé Excel, pero necesito más
Números
A continuación se muestran unos ejemplos de formatos numéricos, para ilustrar el
funcionamiento de los caracteres comodín:
Podemos agregar textos al formato numérico
De hecho, podemos tener unos formatos que muestren solamente un texto
alternativo en vez del valor de la celda.
Como parte de un formato personalizado podemos emplear el formato predefinido
“General”, escribiendo en nuestro formato personalizado la palabra “Estándar” (lo
debieron traducir dos personas diferentes que no se conocían). Por ejemplo para
aplicar un formato distinto a los números negativos, pero a los positivos, ceros y
texto el formato estándar/general, se haría de la siguiente manera:
www.necesitomas.com
88
Ya sé Excel, pero necesito más
Añadiendo colores y un formato para el texto
Con la almohadilla #, sólo aparecen las cifras cuando aportan información. La
utilización del carácter de separación de miles (en mi caso un espacio), indica a
Excel que debe mostrar dicho separador.
Mediante el empleo del símbolo ? podemos conseguir alinear los números al punto
decimal sin necesidad de mostrar ceros a la derecha (te recuerdo que deberás
sustituir el punto por tu carácter separador decimal). También podemos alinear un
prefijo que queremos que se muestre junto con el valor.
www.necesitomas.com
89
Ya sé Excel, pero necesito más
Mediante el empleo del asterisco podemos rellenar la celda repitiendo el siguiente
carácter que aparezca a continuación del *. Esto puede ser de utilidad para mostrar
un texto a la izquierda de la celda y el número a la derecha, rellenando con
espacios entre medias. Así es cómo los formatos predefinidos de contabilidad
sitúan el signo menos a la izquierda de la celda. En este ejemplo repito el carácter
+.
Para mostrar los valores con un número fijo de decimales, multiplicados por una
potencia de 10, emplearemos la letra E, seguida del signo + o – y a continuación el
formato del exponente. Empleando el signo más, aparecerá el signo
correspondiente al exponente, tanto si es negativo como si es positivo. Si
empleamos el signo menos, sólo se mostrará el signo en el exponente cuando éste
sea negativo.
Si nos interesa mostrar nuestros números con una potencia múltiplo de tres,
emplearemos un formato que incluya tres caracteres en la parte entera.
www.necesitomas.com
90
Ya sé Excel, pero necesito más
Tenemos la posibilidad de mostrar los números como fracciones mediante el
empleo en el formato de la barra inclinada /. Tendremos que definir formatos para
la parte entera, para el numerador y para el denominador de la fracción. Si
definimos un formato para la parte entera, se mostrará como fracción únicamente la
parte decimal del número. Si no definimos formato para la parte entera, todo el
número se mostrará como una fracción. Para separar la parte entera de la decimal
podemos emplear un separador como _- o una cadena de texto.
Si en el denominador empleamos un número en vez de un comodín, se mostrarán
las fracciones con el denominador especificado. Si empleamos almohadillas o
interrogaciones en el numerador, cuando no haya parte fraccionaria no se mostrará
la fracción, pero en el caso de las interrogaciones se mantendrá el hueco. Como en
todos los formatos, el valor mostrado procede de redondear el valor de la celda de
acuerdo a la definición del formato.
www.necesitomas.com
91
Ya sé Excel, pero necesito más
Para facilitarte el trabajo, comienza por el formato predefinido más parecido
a lo que necesitas, luego, al seleccionar la opción de formato personalizado,
aparecerá el código correspondiente a ese formato predefinido, que podrás
retocar.
Fechas
Excel almacena las fechas como un número, en el que la parte entera representa el
día (considerando como instante 1 las 0 horas del día 1 de enero de 1900) y la parte
decimal representa la hora, como la parte del día transcurrido hasta esa hora. Por
ejemplo, las 12 de la mañana del 1 de enero de 2007 es almacenado por Excel
como 39083.5, el uno de enero de 2007 es el 39083, mientras que las 12 de la
mañana es el 0.5.
El origen de fechas, el instante 0, se sitúa a las 0 horas del 31 de diciembre de
1899, aunque Excel lo muestre como 0 de enero de 1900.
Si compartes archivos con usuarios de Mac, puedes indicar a Excel que trabaje con
el sistema de fechas 1904, que es el empleado por Macintosh, en el que el origen se
sitúa a las 0 horas del 1 de enero de 1904 (entiendo lo de las 0 horas del uno de
enero, lo que no entiendo es lo de 1904). Cambiar esta opción no cambia el valor
de la celda, pero al mostrarlo como fecha se verían diferentes.
 Herramientas>Opciones>Calcular>Opciones del libro>Sistema de fechas 1904
Botón Office>Opciones de Excel>Avanzadas>Al calcular este libro>Usar
sistema de fechas 1904
Para definir formatos para las fechas se emplean las letras d, m, a, para representar
las cifras de día, mes y año respectivamente. Según repitamos estas letras, el modo
en que se representa cada uno de estos valores de la fecha es el mostrado a
continuación:
d
1
m
1
a
7
dd
01
mm
01
aa
07
www.necesitomas.com
92
Ya sé Excel, pero necesito más
ddd
lun
mmm
ene
dddd
lunes
mmmm
enero
aaaa
2007
Así, para mostrar una fecha como “Lun, 1 de enero de 2007”, deberíamos aplicar el
siguiente formato: ddd", "d" de "mmmm " de "aaaa
Para las representación de horas se emplean las letras H, M, S para horas minutos y
segundos respectivamente. En mayúsculas se interpreta como notación de 24 horas,
mientras que en minúsculas h, m, s, se interpreta como notación 12 horas, que
completaremos con AM/PM para que se inserte el símbolo AM o PM según
corresponda.
Para mostrar una hora como “son las 7 y 16 AM” deberíamos aplicar el formato:
"son las "h" y "mm AM/PM
Para un número que represente un punto en el tiempo, con fecha y hora, es decir
con parte entera y parte decimal, podemos aplicar un formato para verlo con el
siguiente aspecto “son las 7 y 16 AM del lunes 1 de enero de 2007”, de la siguiente
manera:
"son las "h" y "mm AM/PM " del " dddd d" de "mmmm" de "aaaa
Si queremos mostrar también como horas la parte entera de un número, sin volver a
empezar con cero horas al cambiar el día, debe ponerse en el formato el símbolo h
dentro de corchetes, de esta manera todo el número se convertirá a horas.
Análogamente, si ponemos entre corchetes la m de los minutos, todo el número se
mostrará convertido a minutos. Si empleamos la s de segundos, los números se
convertirán a segundos.
www.necesitomas.com
93
Ya sé Excel, pero necesito más
Si queremos mostrar nuestro valor de tiempo como horas y minutos con decimales,
añadiremos al comodín m de minutos el separador decimal y el formato a aplicar a
estos decimales.
Condicionales
Por defecto, los formatos permiten establecer una diferencia entre los valores
positivos y negativos, pero puede que en alguna ocasión nos interese que esta
distinción no se produzca en el valor cero, sino en otro valor.
Esto se consigue estableciendo los intervalos para los que debe aplicarse el formato
entre corchetes [ ]
Se pueden establecer hasta dos condiciones. Se puede añadir un formato para el
caso en que no cumpla ninguna de las condiciones y un último formato más para el
caso en que la celda contenga un texto.
Por ejemplo vamos a mostrar el texto “Suspenso” en color rojo para los valores
inferiores a cinco, mientras que para los valores superiores mostraremos el valor
redondeado sin decimales.
Las condiciones se evalúan en el orden en que están escritas, cuando se cumple una
de ellas se aplica el formato y no se continúa.
www.necesitomas.com
94
Ya sé Excel, pero necesito más
Si realmente tienes que diferenciar las celdas en función de sus valores, lo
mejor es que apliques formatos condicionales (ver página 98).
Alineación de celda
Menú contextual celda>Formato de celda>Alineación
Dentro de esta pestaña para la configuración del formato de la celda tenemos las
opciones para alinear el contenido de la misma horizontal y verticalmente.
Horizontalmente podemos alinear el texto a la izquierda o a la derecha, centrarlo o
justificarlo. Podemos centrar en contenido de una celda en el área definida por las
celdas seleccionadas. También podemos aplicar una sangría a todas las líneas que
aparezcan en la celda, para separar el texto de los bordes izquierdo y/o derecho de
la celda.
En vertical podemos alinear el texto a la parte superior de la celda, a la parte
inferior, centrarlo o distribuir el texto y justificarlo para rellenar toda la altura de la
celda.
Si activamos la opción de Ajustar texto, aquellas celdas cuyo contenido no quepa
en una línea, modificarán el alto de la fila para que todo el texto aparezca en varias
líneas dentro de la celda.
La opción reducir hasta ajustar disminuye el tamaño del texto para que todo el
contenido de la celda pueda mostrarse en una sola fila. Si cambiamos el tamaño de
la celda posteriormente también se modificará el tamaño del texto para adaptarse a
la nueva situación.
www.necesitomas.com
95
Ya sé Excel, pero necesito más
La opción combinar celdas permite que una celda ocupe el espacio de varias celdas
y, aparte de su función estética, sirve básicamente para generarte problemas en el
futuro.
Evita combinar celdas siempre que puedas, evitarás con ello pérdidas de
tiempo y molestias posteriores. La mayoría de las veces puedes conseguir el
mismo aspecto jugando con los bordes y la alineación del texto.
www.necesitomas.com
96
Ya sé Excel, pero necesito más
Estos ejemplos se han realizado empleando bordes de celda claros y oscuros para
conseguir el efecto de relieve, quitando los bordes interiores de las celdas sobre las
que aparece el texto que ocupa varias de ellas y alineando horizontalmente en la
selección ese texto que ocupa varias celdas, con lo que aparece visualmente como
si estuviese combinada, aunque no lo esté realmente. Con esto evitamos problemas
a la hora de copiar y pegar, porque los rangos de origen y destino no sean de la
misma dimensión y también, por ejemplo, a la hora de aplicar filtros, donde no
podemos trabajar bien si en nuestra fila de encabezado tenemos celdas combinadas.
www.necesitomas.com
97
Ya sé Excel, pero necesito más
Formato condicional
 Formato>Formato condicional
Inicio>Estilo>Formato condicional
Cuando tenemos una lista de datos considerable es difícil evaluar de una manera
rápida los valores para centrarnos únicamente en aquellos que nos interesan, bien
porque son los mayores, bien porque sobrepasan un cierto umbral, bien porque
incumplen cierto criterio, etc.
Mediante el formato condicional, Excel nos permite aplicar diferentes formatos a
las celdas según cumplan una serie de criterios que especifiquemos, de tal manera
que podemos resaltar la información que nos interese, pudiendo localizarla de un
vistazo.
Hasta la versión 2003 incluida, el formato condicional permitía aplicar diferentes
formatos solamente en fuente, bordes y tramas, pero con la versión 2007 llegó la
revolución a los formatos condicionales. Ahora, además de las opciones anteriores,
podemos poner una gradación de colores, unas barras de longitud proporcional al
valor, marcar con iconos de tipo flechas, semáforos…, destacar los n mayores
valores, o los que sobrepasen la media, un sinfín de posibilidades.
www.necesitomas.com
98
Ya sé Excel, pero necesito más
Desde el Administrador de reglas de formato condicional podemos ver todas las
reglas definidas en la hoja activa, modificar el orden en que son evaluadas, crear
nuevas reglas, modificar las existentes y eliminar las que ya no nos sean de
utilidad.
www.necesitomas.com
99
Ya sé Excel, pero necesito más
Por supuesto, se supera también la limitación de versiones anteriores en que sólo se
podían establecer tres condiciones para establecer los diferentes formatos, lo que en
muchas ocasiones resultaba escaso.
Ahora los formatos condicionales pueden superponerse: podemos mostrar un icono
a la vez que se aplica un color a la celda. En caso de conflicto entre dos criterios se
aplicará el que aparezca primero en la lista de reglas definidas.
En el formulario para editar o crear las reglas podemos configurar los intervalos de
valores o las condiciones que deben cumplir las celdas para aplicar un formato u
otro.
Si vas a definir las celdas a las que aplicar el formato condicional mediante
una fórmula, no olvides aplicar adecuadamente las referencias absolutas o
relativas según lo necesites.
www.necesitomas.com
100
Ya sé Excel, pero necesito más
Gráficos
Eje de abscisas proporcional a los valores
 Opciones de gráfico>Eje>Eje de categorías (X)>Escala de tiempo
Formato de Eje>Opciones del eje>Tipo de Eje>Eje de fecha
Únicamente disponemos de un tipo de gráfico en el que se representen los puntos
en dos dimensiones, es decir, con unos ejes cartesianos, estos gráficos son los
denominados por Excel de dispersión, que tan solo pueden ser de tipo puntos o
líneas.
En todos los demás gráficos con ejes, el eje horizontal o de abscisas no es
proporcional a los valores, puesto que está pensado para representar las series de
datos interpretando la x como el nombre de cada punto, por tanto representa uno a
continuación de otro como punto número uno, punto número dos, punto número
tres, etc., independientemente de que ese “nombre” del punto sea un valor distinto
del número de orden.
Sin embargo existe una opción, con limitaciones, para que el eje de abscisas sea
proporcional a los valores y poder generar, por ejemplo, un gráfico de columnas
donde cada columna se encuentre sobre el valor de x correspondiente a su dato.
No hay más que indicar a Excel (en las opciones para el eje, dentro de las opciones
del gráfico) que se trata de un eje de fecha. Esto está pensado para fechas, como su
nombre indica, aunque también se puede emplear con otros valores, si bien sólo
representa correctamente la x de números enteros positivos (que es como Excel
almacena las fechas), truncando el número a la parte entera del mismo en caso de
tener decimales.
Esto nos amplía las posibilidades de los gráficos de dispersión, pues de este modo,
aunque sea sólo para valores enteros, podemos realizar gráficos de columnas a la
vez que otra serie se representa con líneas, sin tener que recurrir a trucos como
añadir datos nulos intermedios para separar los datos auténticos.
Con fechas en el eje funciona a la perfección. Con números naturales, tal vez tardes
un rato en configurar la apariencia del eje como realmente quieres, mostrando los
valores adecuados y no múltiplos extraños procedentes de tener la unidad principal
en meses o en semanas.
www.necesitomas.com
101
Ya sé Excel, pero necesito más
www.necesitomas.com
102
Ya sé Excel, pero necesito más
Eje secundario
 Formato de Serie de datos>Eje>Trazar serie en>Eje secundario
Opciones de serie>Trazar Eje en>Eje secundario
Cuando estamos representando dos series de valores con órdenes de magnitud
diferentes, resulta interesante poder utilizar escalas diferentes para cada una de las
series representadas, para evitar que los valores grandes hagan imperceptibles a los
valores pequeños.
Para conseguirlo, en las propiedades de la serie que deseemos, activaremos la
opción para que se dibuje en el eje secundario
www.necesitomas.com
103
Ya sé Excel, pero necesito más
Representación de valores nulos
 Herramientas>Opciones>Gráfico
Herramientas de gráfico>diseño>Selecciónar datos>Celdas ocultas y vacías
Cuando en medio de nuestros datos tenemos registros con algún valor vacío,
podemos pedir a Excel que no represente ese dato, en gráficos tipo línea esto
supone que se interrumpa el dibujo de la línea en ese dato que falta. Podemos
indicar a Excel que lo represente como un cero, en el caso anterior del gráfico de
línea se dibuja la línea en el punto sin dato pasando por el valor cero. Pero puede
interesarnos no dibujar el dato que falta, pero no interrumpir el dibujo de la línea,
es este caso, elegiríamos la opción de conectar puntos de datos con línea.
www.necesitomas.com
104
Ya sé Excel, pero necesito más
En este mismo cuadro de configuración de celdas ocultas y vacías, podemos
también indicar a Excel si queremos que se representen en el gráfico los datos de
las celdas ocultas de la hoja, ya sea manualmente o mediante filtros o esquemas.
Para conseguir este efecto de dibujar una línea y que el gráfico no se interrumpa en
un dato que falta, también podemos llenar las celdas vacías con #N/A (sí,
escribiéndolo en la celda) para que, al no estar disponible el dato lo pase por alto
pero manteniendo la continuidad de la serie en el gráfico. En este caso, al no estar
la celda vacía, no se aplicará la configuración general del gráfico para celdas
ocultas y vacías.
www.necesitomas.com
105
Ya sé Excel, pero necesito más
www.necesitomas.com
106
Ya sé Excel, pero necesito más
Línea de tendencia
Excel permite ajustar diferentes tipos de curvas a los puntos que representamos en
un gráfico de dispersión. Podemos emplear para ello una línea, una función
exponencial o logarítmica, un polinomio del grado que queramos, una potencia, e
incluso una media móvil.
Podemos extrapolar nuestra curva de tendencia más adelante y más atrás de donde
tenemos datos. Es posible hacer que la curva intersecte con el eje “y” donde
queramos, mediante la opción de extraño nombre “Señalar intersección =”.
Podemos incluso mostrar sobre el gráfico la ecuación de esa curva (salvo en el caso
de la media móvil, claro).
Lo que no podemos hacer es utilizar la ecuación de esta línea de tendencia en la
hoja. Para calcular valores, tendríamos que teclearla a mano y se perderá el vínculo
con los datos originales, con lo que si añadimos nuevos datos, la ecuación que
aparece en el gráfico se actualizará, pero la ecuación que copiamos a mano seguirá
igual y seguro que se nos pasa por alto corregirla.
www.necesitomas.com
107
Ya sé Excel, pero necesito más
Si necesitamos ajustar una curva a unos datos, pero no gráficamente, sino mediante
fórmulas, tendremos que emplear las funciones que se encuentran dentro del grupo
de
funciones
estadísticas
de
Excel:
ESTIMACION.LINEAL,
ESTIMACION.LOGARITMICA, que calculan los valores que describen la recta o
la función logarítmica que se ajusta a los datos. Sólo tenemos estos dos tipos de
ajustes con funciones.
Se trata de funciones matriciales que devuelven varios valores en una matriz de una
fila por dos columnas si únicamente queremos definir la curva, o en una matriz de
cinco filas por dos columnas si queremos además una descripción estadística del
www.necesitomas.com
108
Ya sé Excel, pero necesito más
ajuste. Como todas las funciones matriciales, hay que seleccionar primero el rango
que ocupará el resultado, e introducirlas mediante [Ctrl][Mays][Intro].
Para calcular valores con un ajuste lineal o exponencial, tenemos las funciones
TENDENCIA y CRECIMIENTO, que a partir de unos valores conocidos de x e y,
pueden calcular los valores correspondientes a la curva ajustada por mínimos
cuadrados, lineal o exponencial respectivamente.
INTERSECION.EJE calcula el valor de la ordenada en la abscisa cero, es decir la
ordenada al cortar el eje Y, para un ajuste lineal. PRONOSTICO permite calcular
el valor de la recta ajustada para cualquier valor de la abscisa.
www.necesitomas.com
109
Ya sé Excel, pero necesito más
Detectar y Corregir errores
Auditoría de fórmulas
 Herramientas>Auditoría>Mostrar barra de auditoría
Fórmulas>Auditoría de fórmulas
Es difícil acertar siempre a la primera, por lo que no vienen mal las herramientas
para investigar en las fórmulas que hemos introducido, no sólo porque generen
errores en el cálculo, sino porque no estén dando como resultado los valores
esperados. También van a ser de gran ayuda estas herramientas a la hora de
investigar el comportamiento de la hoja, si lo que queremos es modificar una hoja
existente, para comprender cómo funciona. Es lo que se denomina Auditoría de
Fórmulas.
Entre otras, tenemos posibilidad de ver las celdas de las que depende la fórmula
que nos interesa, y qué otras dependen a su vez de ella. Para ello Excel puede
dibujar unas flechas que muestran las relaciones de precedencia o dependencia con
la celda activa.
Desde la versión 2002, tenemos la posibilidad de evaluar la fórmula paso a paso
para comprobar cómo Excel calcula la fórmula que se ha introducido, y poder así
detectar más fácilmente y corregir donde hayamos cometido un error que hace que
la fórmula no proporcione el resultado que esperábamos.
www.necesitomas.com
110
Ya sé Excel, pero necesito más
Tenemos la opción de rastrear los errores que existen en la hoja, para recorrerlos
uno a uno y poder analizar qué sucede.
Desde la versión 2003 se ha añadido una ventana de inspección, similar a la ya
existente en el editor de Visual Basic para depuración del código programado, que
permite centrarnos en el análisis de diferentes celdas, sin despistarnos por tener que
ir de un lado a otro del libro, aquí podemos tener a la vista únicamente las celdas
que nos interesen para investigar el comportamiento de la hoja.
www.necesitomas.com
111
Ya sé Excel, pero necesito más
Prevención de errores
Una de las imágenes que peor impresión me causan es encontrar una hoja que,
cuando aún no tiene datos, está llena de errores por todas partes: #¡DIV/0!,
#¡NUM!, #N/A. Transmite un aspecto poco cuidado de la aplicación, o peor aún,
puede hacer pensar que la hoja contiene errores y desanime a un futuro usuario a
utilizarla. Si es para algo rápido que sólo vas a utilizar tú, puede valer, pero si
nuestra hoja va a tener algo más de trascendencia, va a ser utilizada por más
personas, se va a entregar impresa a otras personas, debería cuidarse un poco más
este asunto.
Disponemos de funciones para detectar el tipo de error y así ofrecer mensajes que
ayuden a solventarlos, que se muestren en lugar del error de Excel. Se pueden
incluir las funciones ESERROR, ESERR o TIPO.DE.ERROR dentro de
condicionales SI, para mostrar mensajes alternativos, mostrar celdas en blanco o
realizar operaciones alternativas ante errores previsibles (ver página 76).
Podemos comprobar si realmente hay datos antes de operar, con funciones de tipo
ESBLANCO o ESNUMERO, o podemos asegurarnos de que esos datos son
correctos, por ejemplo para no dividir por cero, incluyendo nuestras fórmulas
dentro de una función condicional SI.
www.necesitomas.com
112
Ya sé Excel, pero necesito más
Tenemos la posibilidad de emplear los formatos condicionales para ocultar a la
vista los errores, por ejemplo dando al texto el mismo color del fondo; no resuelve
el problema, pero sí ante los ojos. En la versión 2007 viene incorporada
directamente la opción de dar formato condicional a las celdas con errores; en las
versiones anteriores se podía definir este formato condicional empleando una
fórmula con la función ESERROR, por ejemplo.
www.necesitomas.com
113
Ya sé Excel, pero necesito más
Acerca de los datos
No hay que confundir los datos, con la presentación de los datos.
Es muy fácil para un usuario ocasional de la informática equivocar los datos con la
presentación que se le da a esos datos, ya sea en pantalla o impreso en papel. No es
preocupante si el número de datos que se manejan es muy reducido, pero deja de
ser operativo en cuanto empezamos a tener un número considerable de datos
(tampoco hacen falta demasiados).
No es raro encontrarse con hojas Excel que tienen el aspecto de un formulario para
rellenar uno o dos datos y que luego quede impreso en papel para archivarlo, sin
ningún tratamiento informático posterior. Supongo que el hecho de que Excel
presente una cuadrícula con celdas facilita el diseño de este tipo de formularios y
permite su realización en poco tiempo. ¿Pero por qué pararse ahí? Excel puede
ayudarte bastante más que eso.
Con suerte se habrá guardado un archivo diferente para cada uno de estos
“formularios impresos” y todavía se podrán aprovechar los datos cuando a alguien
se le ocurra que pueden tener alguna utilidad. En otras ocasiones el formulario se
sobrescribe una y otra vez, borrando los datos anteriores y poniendo los nuevos en
su lugar; tal vez aún se conserve una copia impresa de las hojas que se han ido
generando a lo largo de la vida del archivo, o tal vez no. Esto tampoco tendría
demasiada importancia si las personas no tuviesen curiosidad y no realizasen
preguntas del tipo “¿cuántas facturas hemos emitido a nuestro principal cliente?” o
“¿quién es nuestro principal cliente?” o “¿cuánto nos hemos gastado este año en
pitos y cuánto en flautas?”. Tampoco sería un problema si las situaciones no se
repitiesen nunca pero, a quién no se le ha presentado un caso que se resuelve igual
que aquello que ya se hizo hace unos meses (o unos años).
Si la información no tuviese esa tendencia a desaparecer del sitio donde estamos
seguros de haberla guardado para que no se perdiese jamás…
En el peor de los casos no serás capaz de responder a estas preguntas acerca de los
datos del pasado, pero lo dejarás todo preparado para poderlas responder a partir de
ahora ¿no?
www.necesitomas.com
114
Ya sé Excel, pero necesito más
Una cosa son los datos de una factura (Fulano de Tal 15/08/07 20.15€) y otra cosa
es la presentación de esos datos con aspecto de factura, con sus logos, membretes,
encabezados, bordes y sombreados.
Tener clara la diferencia entre una cosa y otra nos evitará problemas, y por
supuesto nos evitará tener que repetir el trabajo en el futuro.
Si algo está ya introducido en el ordenador, haz lo que sea antes que imprimir para
volver a teclear. Esto no es sólo por no trabajar en balde, sino por evitar errores en
la transcripción, que luego son casi imposibles de detectar.
Mejor tener todos los datos juntos, o al menos lo más juntos posible.
Si todos nuestros datos están juntos, Excel o cualquier programa para el
tratamiento de los datos, podrá ser capaz de interpretarlos y operar con ellos para
ofrecernos información útil. Si por el contrario tenemos nuestros datos dispersos en
diferentes hojas, o incluso en distintos archivos, va a ser muy difícil que un
programa (o una persona) sea capaz de hacer nada de provecho con ellos. Tener los
datos dispersos favorece además la falta de homogeneidad de los mismos, lo que
complica aún más el proceso a la hora de agrupar los datos.
Al principio del trabajo no debes plantearte nunca la duda de si pones todos los
datos en un mismo sitio o en sitios diferentes: opta decididamente por un almacén
único para tus datos. Después podrás extraer de allí únicamente el subconjunto de
datos que te interesen, con la ventaja que si más tarde te interesa otra información
también podrás obtenerla, cosa que no resultará inmediata si tus datos están
repartidos de cualquier forma.
Es más fácil separar que unir.
Es más sencillo obtener diferentes vistas parciales, presentaciones o resúmenes a
partir de un origen único de datos, que tratar de reconstruir un conjunto único de
datos a partir de imágenes parciales de los mismos.
Hay que pensar un poco, muy poco, qué voy a necesitar para definir qué campos de
información tengo que rellenar. Si preveo que necesitaré conocer mis datos
agrupados por categorías, el ordenador será incapaz de hacerlo si yo no digo a qué
categoría pertenece cada dato, es decir, un campo de mis datos tendrá que ser la
categoría.
www.necesitomas.com
115
Ya sé Excel, pero necesito más
También debe preverse en qué sentido va a crecer la hoja con la adición de nuevos
datos. La mayoría de los programas de ordenador, por no decir todos, trabajan con
los datos en filas: en cada fila se anota un registro, esto es, un dato, mientras que
cada columna es un campo de información. Excel no es la excepción y sus hojas
tienen muchas más filas que columnas: hasta la versión 2003 había 256 columnas y
65536 filas (relación de 1/256); en la versión 2007 estas cantidades se han
aumentado hasta 1048756 filas y 16384 columnas (relación de 1/64).
No es extraño, sin embargo, encontrarse con hojas en la que los datos se han
organizado por columnas. Suelen ser hojas que se concibieron así para facilitar la
lectura de determinada información o que se pensaron como presentación de los
datos impresos y no como almacén de los mismos (claro, en la cultura occidental
leemos primero de izquierda a derecha y luego de arriba a bajo y con pocos datos
es fácil confundir si lo que primero se lee es un registro o los campos de cada
registro). Concebidas cuando había muy pocos datos, tras un tiempo de utilización
se colapsan alcanzando la capacidad de la hoja, o bien ya no se leen tan
cómodamente como al principio, teniendo que desplazarse horizontalmente, lo que
lleva a soluciones poco prácticas como seguir anotando los nuevos datos unas filas
más abajo, o continuar en una nueva hoja, cayendo en ambos casos nuevamente en
lo que considero un error serio, que es separar los datos, romper la unidad de los
mismos.
Si aún tienes dudas, ten en cuenta que, por ejemplo, Excel sólo permite aplicar
filtros, obtener datos externos para una tabla dinámica, etc., etc., etc., si los datos
están dispuestos con los registros en filas y los campos en columnas.
No digas que no te lo advertí.
www.necesitomas.com
116
Ya sé Excel, pero necesito más
Filtrado
 Datos>Filtro>Autofiltro
Datos>Ordenar y filtrar>Filtro
Cuando tenemos una lista de datos, el filtrado de los mismos nos facilitará
centrarnos únicamente en aquellos datos que nos interesen. Pueden establecerse
criterios para cada uno de los campos, mostrándose únicamente de entre todos los
datos aquellos que cumplen todos los criterios de filtrado.
Para activar el filtrado de los datos, debemos situarnos sobre una celda del rango de
datos, Excel supondrá que la primera fila es la de los encabezados, la que contiene
los nombres de los campos. Otra opción es que seleccionemos manualmente el
rango que contiene los datos, incluida la fila de encabezados y después activemos
el filtro; en este caso Excel utiliza como encabezados la primera fila de las
seleccionadas. En cada celda de encabezado aparece un botón con una flecha hacia
abajo, del que se despliega una lista con las opciones de filtrado.
Desde la versión 2007, las opciones de la lista desplegable para el filtrado se han
completado añadiendo opciones para ordenar los datos por el campo seleccionado,
así como un cuadro donde seleccionar manualmente los datos a mostrar. También
se ofrecen, dentro de un segundo desplegable diferentes filtros de fecha, de
número, de texto, según el tipo de datos contenidos en ese campo.
www.necesitomas.com
117
Ya sé Excel, pero necesito más
Para establecer el filtro de un campo desplegamos las opciones disponibles y
seleccionaremos uno de los filtros predefinidos, o bien personalizaremos los
criterios según nuestras necesidades, mediante un filtro personalizado.
En el filtro personalizado podemos establecer exactamente el criterio que
queremos que cumplan los datos a mostrar.
www.necesitomas.com
118
Ya sé Excel, pero necesito más
Si tenemos aplicados formatos condicionales, ahora podemos también filtrar por el
formato, lo que permite localizar rápidamente aquellas celdas que se han resaltado
mediante el formato condicional.
www.necesitomas.com
119
Ya sé Excel, pero necesito más
Una posibilidad adicional de realizar un filtrado de nuestros datos consiste en la
utilización de filtros avanzados
 Datos>Filtro>Filtro avanzado
Datos>Ordenar y filtrar>Avanzadas
Los criterios para los filtros avanzados se definen con un rango en que se indica el
nombre de los campos a filtrar en la primera fila y debajo de esta, los criterios que
debe cumplir cada campo. Es el mismo sistema que el empleado por las funciones
de base de datos (ver página 72).
Podemos aplicar el filtro sobre la propia lista, pero también podemos hacer una
copia de los datos filtrados a otro lugar de la misma hoja.
En la definición del filtro avanzado podemos activar la opción para filtrar
únicamente registros únicos, con lo que si hay datos repetidos sólo aparecerán una
vez tras aplicar el filtro.
Debe tenerse en cuenta que si seleccionamos unas celdas de un conjunto de datos
filtrado y las copiamos, únicamente estamos copiando las celdas visibles.
www.necesitomas.com
120
Ya sé Excel, pero necesito más
De igual modo, si escribimos una fórmula y la extendemos mientras tenemos
activo un filtro, tan sólo estamos introduciendo la fórmula en las celdas visibles y
no en las que están ocultas por el filtro. Cuando modifiquemos o quitemos el filtro
actual, las fórmulas aparecerán en unas filas sí y en otras no.
También debe tenerse la precaución de comprobar el estado de los filtros aplicados
si vamos a ejecutar una macro que se basa en los datos de la lista, para asegurarnos
de que va a funcionar correctamente en las celdas que verdaderamente queremos y
no sólo en las visibles.
www.necesitomas.com
121
Ya sé Excel, pero necesito más
El comportamiento es diferente del caso en que tenemos filas o columnas que se
han ocultado manualmente o bien mediante las opciones de agrupar y esquema. En
estos casos al copiar, también se copian las celdas ocultas y al extender la fórmulas,
también se rellenan las celdas ocultas.
Ordenar
 Datos>Ordenar
Datos>Ordenar y Filtrar>Ordenar
En las versiones anteriores a la 2007, únicamente se podía ordenar una lista de
datos por tres criterios simultáneamente. Si se quería ordenar por más de tres
criterios debía hacerse en varios pasos. Así, para ordenar por 6 criterios, primero se
ordenaba por los criterios 4, 5 y 6, y a continuación se ordenaba por los criterios 1,
2 y 3. Para los datos que tenían iguales los valores de los criterios 1, 2 y 3, Excel
mantenía el orden existente, el de la ordenación realizada antes, con lo cual el
resultado era el deseado.
En la versión 2007, se ha eliminado esta limitación y podemos añadir todos los
criterios de ordenación que queramos, mediante la opción “agregar nivel”
disponible en el cuadro de diálogo ordenar.
www.necesitomas.com
122
Ya sé Excel, pero necesito más
También se han añadido nuevas opciones para comparar las celdas, como por
ejemplo el color de las mismas o el icono de la celda, que combinado con las
opciones de formato condicional puede ser de gran utilidad pues se podrán agrupar
los datos que cumplan una misma condición.
Validación
 Datos>Validación
Datos>Herramientas de datos>Validación de datos
La mayor parte de las veces, un conjunto de datos sigue ciertos patrones comunes,
por ejemplo, los tiempos empleados por los corredores en una prueba de cien
metros lisos son del orden de 10 segundos, pueden ser 9 o pueden ser 30 segundos,
pero nunca van a ser dos horas; podemos utilizar las opciones de validación de
datos de Excel para evitar errores absurdos o de bulto en la introducción de datos.
También puede utilizarse la validación para evitar la introducción de valores
incorrectos, ofreciendo una lista con las opciones disponibles. Esta lista puede
introducirse con una referencia a las celdas que contienen los valores, o bien puede
introducirse manualmente separando los valores entre sí con punto y coma (o con
el separador de listas que emplees en tu equipo).
www.necesitomas.com
123
Ya sé Excel, pero necesito más
El cuadro de diálogo para los criterios de validación presenta tres pestañas:
configuración, mensaje de entrada y mensaje de error.
Las opciones de Configuración establecen los criterios que han de cumplir los
datos: tipo de datos y criterios a cumplir para ser considerados válidos. Cuando se
está modificando una regla existente, podemos indicar si queremos que se
modifique en todas las celdas que tienen esa misma regla de validación, lo que
resulta útil para no tener que seleccionar previamente a la modificación todas las
celdas afectadas, evitando que olvidemos alguna celda por el camino.
Tenemos la posibilidad de mostrar a quien vaya a introducir los datos un texto
descriptivo que facilite información acerca de las condiciones que deben cumplir
los mismos. En las opciones de Mensaje de entrada definiremos en primer lugar si
queremos que se muestre o no el mensaje al seleccionar la celda; a continuación
www.necesitomas.com
124
Ya sé Excel, pero necesito más
tenemos dos cuadros de texto para escribir el título del mensaje y el texto
explicativo.
En las opciones de Mensaje de error podemos indicar si queremos que se muestre
un mensaje cuando los datos no cumplan las condiciones establecidas. Este
mensaje puede ser de tres tipos: Grave, advertencia e información.
www.necesitomas.com
125
Ya sé Excel, pero necesito más
Eligiendo el tipo de mensaje grave, no se permite la introducción de datos
erróneos. Con el mensaje de advertencia y con el mensaje informativo recibimos el
aviso del error, pero podemos continuar con los datos incorrectos. Deberás evaluar
en cada caso qué se adapta mejor a lo que necesitas.
www.necesitomas.com
126
Ya sé Excel, pero necesito más
Los mensajes de validación de datos sólo se muestran al introducir datos
nuevos de uno en uno.
Si definimos las reglas de validación cuando ya existen en las celdas valores, o
introducimos varios valores a la vez, por ejemplo copiando y pegando valores en
las celdas con reglas de validación, Excel no nos avisa si algunos valores no
cumplen las reglas establecidas. En estos casos, aunque no se muestren los
mensajes, lo que sí podemos hacer es pedir a Excel que nos señale qué valores no
cumplen las reglas de validación definidas. Todas las celdas que contengan datos
que incumplan los criterios de validación se mostrarán rodeadas por una línea de
color rojo.
 Barra de auditoría>Rodear con un círculo datos no válidos
Datos>herramientas de datos>validación de datos>rodear con un círculo
datos no válidos
Esquema
 Datos>Agrupar y esquema
Datos>Esquema
A veces se maneja tanta información que es imposible verla en pantalla y resulta
incómodo moverse arriba y abajo en la hoja para llegar hasta el dato que nos
interesa.
www.necesitomas.com
127
Ya sé Excel, pero necesito más
Mediante las opciones de agrupación y esquema, podemos ocultar y mostrar
fácilmente la información contenida en la hoja, pudiendo establecer una jerarquía
de hasta 8 niveles de agrupación.
Puedes crear el esquema de la información manualmente seleccionando las filas o
columnas que quieras agrupar.
www.necesitomas.com
128
Ya sé Excel, pero necesito más
En el cuadro de diálogo de configuración de esquema se nos ofrecen varias
opciones de resumen para las filas de totales: totales arriba o debajo de las celdas
agrupadas por filas, y a la izquierda o a la derecha para los agrupamientos por
columnas.
Para facilitar la lectura de los datos y diferenciar mejor unos niveles de otros,
podemos activar la opción para que nuestro esquema aplique estilos
automáticamente a las celdas, con lo que cambiará el aspecto si cambiamos la
agrupación, o podemos simplemente aplicar los estilos a las celdas de acuerdo al
esquema actual, pero las modificaciones posteriores del esquema no cambiarán los
estilos aplicados.
Si activas la opción estilos automáticos para un esquema existente, pulsa
Crear para aplicar los estilos.
Si tenemos subtotales intercalados entre los datos, Excel puede generar un esquema
automáticamente mediante la opción autoesquema, deduciéndolo de las sumas o
funciones de resumen que operen con los datos de la lista, interpretándolas como
subtotales de los diferentes capítulos. Si tienes suerte y has sido meticuloso al
calcular manualmente los subtotales, tal vez Excel sea capaz de generar el esquema
correctamente, entendiendo por correctamente hacerlo tal y como piensas que
debería ser, aunque las irregularidades que se suelen introducir a mano se lo suelen
poner bastante difícil. En cualquier caso, casi siempre será más fácil realizar
www.necesitomas.com
129
Ya sé Excel, pero necesito más
pequeños ajustes al esquema generado automáticamente, que crearlo a mano desde
cero.
Las fórmulas que calculan los subtotales deben estar en la misma columna que
los datos para que autoesquema las detecte.
Excel creará un agrupamiento de datos cuando detecte una función para resumir un
grupo de datos, por ejemplo SUMA, PROMEDIO o SUBTOTALES, también son
válidas otras operaciones o fórmulas. Si hay funciones que hacen referencia a otras
funciones o a datos ya incluidos en otros grupos, el autoesquema los agrupará en
un nuevo grupo de nivel superior.
Subtotales
 Datos>Subtotales
Datos>Esquema>Subtotal
Dentro de las opciones de agrupación y esquema tenemos la utilidad Subtotal, que
permite agrupar automáticamente mediante un esquema la información de una
lista, creando un grupo cada vez que detecte un cambio en el campo que le
indiquemos, e introduciendo las fórmulas para el cálculo de los subtotales de este
grupo recién creado, empleando para ello la función SUBTOTALES.
www.necesitomas.com
130
Ya sé Excel, pero necesito más
Para todos los campos se utilizará la misma función resumen, si quieres
funciones diferentes habrás de modificarlo a mano.
Excel detecta los cambios en el valor del campo que le indiquemos, así que antes
de crear los subtotales, asegúrate de que los datos están ordenados correctamente.
www.necesitomas.com
131
Ya sé Excel, pero necesito más
La creación automática de subtotales está pensada para agrupar por un solo campo.
Si necesitas agrupar por más de uno, tendrás que repetir el proceso, indicando cada
vez por qué campo quieres agrupar.
No olvides desactivar la opción “Reemplazar subtotales actuales”, para que
los nuevos subtotales se añadan a los anteriores.
En cada paso se crearán nuevos subgrupos dentro de los grupos ya existentes, por
lo que es importante prestar atención al orden en que se dan estos pasos.
Sabiendo esto, supongo que nunca más insertarás tus subtotales a mano.
Genera los subtotales automáticamente a partir de la lista de datos y luego
retócalos, si es necesario, para dejarlo a tu gusto.
Consolidar Datos
Si hemos cometido el error de tener multitud de hojas con la misma estructura,
incluso en archivos diferentes, ahora sabes que no es la mejor manera de almacenar
la información. Sabes que es más sencillo separar unos datos que están juntos, que
juntar unos datos que están dispersos, especialmente cuando esos datos dispersos ni
siquiera están almacenados en archivos homogéneos que guarden la misma
estructura.
Si tenemos un archivo para la contabilidad de cada proyecto o de cada oficina,
luego supondrá un trabajo nada despreciable responder a una pregunta tan simple
www.necesitomas.com
132
Ya sé Excel, pero necesito más
como cuánto he facturado en total, o cuánto gasté en teléfono en el primer
trimestre. Si vas a empezar a almacenar datos, no cometas el error de hacerlo en
hojas o libros separados.
No todo es blanco o negro, a veces no queda más remedio que emplear archivos
diferentes, para oficinas diferentes o para personas diferentes, pero de los que luego
querremos obtener cierta información en conjunto.
En cualquier caso, si el mal ya está hecho ¿qué puedes hacer para resumir la
información dispersa? Tranquilo, aún no está todo perdido.
Se denomina consolidación de datos a resumir información que se encuentra
repartida en diferentes lugares de una hoja, o en diferentes hojas, ya sea en el
mismo archivo o en archivos distintos. Es decir, se trata de obtener un resumen de
la información que se encuentra dispersa, manteniendo esa dispersión. Cuando se
habla de resumir información estamos hablando de obtener un total, la media, el
máximo, el mínimo, contar los elementos, etc.
Para los ejemplos mostrados a continuación se ha empleado un libro donde anotar
las cifras significativas de la nómina, de cara a la declaración de la renta. En este
libro tenemos una hoja para cada año, desde hace bastantes años. Las cifras que se
muestran no son reales, para que nadie se sorprenda, ni se impresione, ni se ría.
A mano
En el peor de los casos, si las hojas no tienen ni pies ni cabeza (que no es lo mismo
que encabezado y pie de página), si no comparten una estructura común, si no
tienen ninguna homogeneidad, no te va a quedar más remedio que resumir la
información a mano, indicando una a una las celdas que quieres considerar.
Si, por el contrario, tenemos hojas de un mismo libro que tienen la misma
estructura, podemos emplear el concepto de referencia en tres dimensiones o
referencia 3D, que facilitan el resumen manual, pues permite operar con un mismo
rango simultáneamente en varias hojas de un libro, por ejemplo, la fórmula
=SUMA(Hoja1:Hoja20!A1:A5), sumaría las celdas de la A1 hasta la A5, de todas
las hojas comprendidas entre la hoja llamada Hoja1 y la hoja de nombre Hoja20.
Si todas nuestras hojas tienen el total en la misma celda, mediante una
referencia 3D podremos sumar esos totales de todas la hojas de manera
sencilla.
www.necesitomas.com
133
Ya sé Excel, pero necesito más
Las referencias 3D no permiten elegir individualmente las hojas sobre las que
actuar, sólo permiten elegir la primera y la última hoja y formarán parte de la
misma todas las hojas que se encuentren entre ambas en cada momento. Si
insertamos una hoja entre medias de ellas también será considerada en la referencia
3D; del mismo modo, si se mueve una de las hojas a otro lugar fuera del intervalo
entre la primera y la última hoja de la referencia, dejará de formar parte de la
referencia y no será tenida en cuenta en los cálculos.
A máquina
 Datos>Consolidar
Datos>Herramientas de datos>Consolidar
Aparte de realizar la consolidación de datos manualmente celda a celda o con
referencias tridimensionales cuando sea posible, Excel permite realizar un resumen
de datos repartidos en diferentes libros o en diferentes hojas, siempre que estos
datos tengan una estructura de listado o tabla y compartan todos o al menos
algunos nombres de los campos, que figurarán en la primera fila de la lista.
En el cuadro de diálogo de esta herramienta, elegiremos la función a emplear para
calcular el resumen de nuestros datos. Todos los datos se resumirán del mismo
modo, es decir, que no podemos contar unos y sumar otros. Bueno, tampoco cuesta
nada realizar varias consolidaciones cambiando la función a emplear.
www.necesitomas.com
134
Ya sé Excel, pero necesito más
Como en otras ocasiones, la utilización de nombres para referirnos a los rangos que
contienen la información a consolidar, hacen el proceso más sencillo y más fácil de
entender.
Los rótulos en la fila superior se mantendrán en el resumen, entendiendo que son
los nombres de los campos. Los rótulos de la columna izquierda se emplearán para
agrupar los datos. No se puede elegir otro campo para agrupar, ni se puede agrupar
por más de un campo.
Crear vínculos con los datos de origen generará filas donde se incluirán referencias
a los datos que provocan los totales mostrados, agrupados en un esquema, dentro
del apartado correspondiente. Si no se activa la opción de crear vínculos,
simplemente aparecerán los totales.
www.necesitomas.com
135
Ya sé Excel, pero necesito más
Los vínculos a los datos de origen son referencias a las celdas correspondientes de
cada una de las hojas que hemos consolidado. Es decir, que este asistente hace el
trabajo por nosotros de ir hoja a hoja buscando la información para incluir una
referencia a la misma.
En el caso de incluir vínculos a la información original, en el resumen aparecen
identificados los datos con el nombre del libro. Si nuestros datos provienen de
libros diferentes no hay problema, pero puede llegar a ser algo confuso si nuestros
datos proceden de hojas diferentes de un mismo libro, puesto que aparecerán todas
identificadas con el mismo nombre. Tendremos que investigar en las celdas de
detalle a qué hojas hacen referencia.
www.necesitomas.com
136
Ya sé Excel, pero necesito más
Tablas
 Datos>Lista>Crear lista
Insertar>Tablas>Tabla
Desde la versión 2003, aunque entonces se le llamó lista, aparece el concepto de
tabla, como un conjunto de datos, al que se puede aplicar formatos, filtros, añadir
columnas con fórmulas, añadir columnas de totales, pero con la ventaja de trabajar
con ese conjunto de datos como una unidad.
Empleando referencias a rangos convencionales, que no pertenecen a una tabla, al
añadir nuevos datos a continuación de los datos existentes, en los gráficos, las
fórmulas, las tablas dinámicas, etc., no se actualizan las referencias existentes del
rango antiguo al nuevo rango de datos, es decir, no se detecta que hay más datos y
que el último registro está, por tanto, en otra posición diferente. Para evitar esto, o
se insertan filas entre la primera y la última fila del rango para los nuevos datos,
con lo cual las referencias sí se adaptan a la nueva situación, o se redefinen los
nombres de los rangos para considerar los nuevos registros, o se modifican las
referencias a los rangos de origen para las fórmulas si no se han empleado
nombres.
Trabajando con tus datos agrupados en una tabla ya no se vuelven a presentar estos
problemas, pues la tabla sí incorporará los datos escritos a continuación, y las
referencias a los datos de la tabla se actualizarán correctamente para considerar
todos los datos presentes.
Podemos, desde las opciones de estilo de la tabla, indicar si queremos que las filas
y las columnas se muestren con bandas de diferente color para facilitar la lectura, si
queremos que se diferencien también la primera columna, o la última. También si
queremos que se muestre la fila de encabezado y una fila de totales.
www.necesitomas.com
137
Ya sé Excel, pero necesito más
En la fila de totales, para cada campo podremos definir el modo de calcular su
total, eligiendo la función a emplear de una lista desplegable.
Los colores empleados dependerán del estilo de tabla aplicado, que se puede elegir
entre una numerosa relación de estilos predefinidos, o bien podemos crear uno
personalizado que se adapte mejor a nuestras necesidades o a nuestros gustos.
El aspecto de los estilos predefinidos proviene del tema actual de nuestro libro. En
la página 62 puedes encontrar más información sobre cómo aplicar y definir temas
para los archivos de MS Office.
www.necesitomas.com
138
Ya sé Excel, pero necesito más
Si añadimos información a continuación de la tabla, Excel considera que queremos
agregarla a la tabla existente y la incorpora a la misma. Esto no funciona así si
tenemos activada la fila de totales así que, si vamos a añadir información, primero
hay que desactivar los totales. Una vez añadidos nuestros datos podemos volver a
insertar la fila de totales que conservará la definición que hicimos para cada campo.
Desplazándonos por la tabla mediante la tecla de tabulación, al llegar a la
última columna, la celda activa pasa a la primera columna de la fila siguiente.
Al llegar a la última celda de la última fila de datos y pulsar el tabulador, se
añadirá una fila más a la tabla.
Si añadimos una fórmula a la derecha de la última columna, Excel interpretará que
deseamos insertar en la tabla una columna con un campo calculado y creará una
nueva columna con las fórmulas. Para referirnos al dato de un campo en la misma
fila donde está la fórmula, emplearemos el nombre del campo, el que aparece en el
encabezado, escrito entre corchetes [ ]. Comprobarás que al introducir la fórmula
www.necesitomas.com
139
Ya sé Excel, pero necesito más
con el ratón, o con las flechas de desplazamiento, Excel escribe los nombres de los
campos por ti. Por ejemplo, para calcular el retraso entre la fecha de la factura y la
fecha del pago, escribiríamos la siguiente fórmula en cualquier celda de la columna
siguiente a la última de la tabla.
=[Fecha pago] – [Fecha factura]
Dentro de la tabla, el nombre del campo se refiere al mismo registro, esto es, a la
misma fila donde se encuentra la fórmula. Si escribimos una fórmula fuera de la
tabla, el nombre del campo se refiere a todos los datos de ese campo.
Todas las tablas tienen un nombre, cuyo ámbito es el libro, con el que
podemos referirnos a ella.
Si queremos hacer referencia a un campo de la tabla desde fuera de la misma,
tendremos que anteponer al nombre del campo el nombre de la tabla, para que
Excel sepa donde buscar la información que le pedimos. Por ejemplo, para contar
cuántos datos tenemos podríamos escribir la siguiente fórmula
=CONTAR(NombreDeLaTabla[Importe])
En cualquier cuadro de diálogo que solicite una referencia a un rango, podemos
emplear el nombre de la tabla y el campo del mismo modo.
Disponemos de algunos modificadores más para referirnos a la información de la
tabla. El modificador y el nombre del campo irán separados por el separador de
listas (en mi caso punto y coma) y todos ellos dentro de unos corchetes. Si no
indicamos ningún nombre de campo, el modificador hará referencia a toda la tabla.
Por ejemplo para referirnos al total del campo importe que aparece en la fila de
totales escribiríamos:
=NombreDeLaTabla[[#Totales];[importe]]
Tenemos los siguientes modificadores:
www.necesitomas.com
140
Ya sé Excel, pero necesito más
#Todo
devuelve todo el contenido, lo que incluye también el
encabezado y la fila de totales.
#Datos
devuelve sólo los datos, sin encabezado ni totales.
#Encabezados
devuelve la fila de encabezado.
#Totales
devuelve el valor de la fila de totales.
#Esta fila
devuelve el valor de la tabla que se encuentra en la misma fila
que la celda donde está la fórmula, aunque se encuentre en
distinta hoja.
Si queremos que la fórmula nos devuelva más de un valor, tenemos que
introducirla como una función matricial.
Entre las herramientas disponibles para la tabla, tenemos la posibilidad de resumir
la información de la misma mediante una tabla dinámica.
También es posible eliminar información duplicada, seleccionando los campos que
deben coincidir para que consideremos que dos datos son iguales. Esto es
especialmente útil para realizar una limpieza previa de los datos, para prevenir que
la existencia de valores repetidos distorsione el análisis posterior de la información.
www.necesitomas.com
141
Ya sé Excel, pero necesito más
Y por supuesto, si no nos gusta, siempre podremos volver a convertir una tabla en
un rango convencional. Excel ya se ocupa de sustituir los nombres de los campos y
demás referencias a la tabla que existan en el libro por la referencia a las celdas
correspondientes.
www.necesitomas.com
142
Ya sé Excel, pero necesito más
Obtener datos externos
Datos>Obtener datos externos
Excel ofrece una gran capacidad para analizar datos, para resumirlos, compararlos,
dibujarlos y operar con ellos. En algunos casos los datos estarán también
almacenados en Excel, pero no será extraño encontrarse con situaciones en las que
los datos se encuentran en otro archivo, bien porque han sido generados por otro
programa, bien porque los datos se almacenan en una base de datos que se adapte
mejor a la estructura que tiene la información que queremos guardar, o bien porque
los datos se encuentran en un servidor común para toda la oficina o para toda la
empresa, al que se accede desde diferentes aplicaciones.
Excel no es un programa gestor de base de datos y aunque puede almacenar datos
con estructura de listado o tabla, no permite establecer relaciones entre tablas, no es
lo que se conoce como una base de datos relacional. Tampoco permite el acceso
simultáneo (no me refiero al uso compartido del libro) de varios usuarios a los
datos guardados, que es otra de las características fundamentales de una base de
datos. Otra limitación es el número de registros, para el que Excel tiene un tope en
el número de filas (aunque lo hayan aumentado en la versión 2007).
Si para tus datos una estructura del tipo de una única tabla es suficiente, empezar
en Excel puede ser un buen punto de partida para aclarar las ideas sobre los tipos
de datos que vas a almacenar, qué campos necesitas, qué consultas vas a realizar a
esos datos, etc.
Las correcciones en Excel siempre resultan más sencillas de realizar que
mediante un programa de base de datos. Excel es más flexible y no requiere
tener las ideas tan claras desde el principio.
Si tus datos tienen una estructura más compleja que las dos dimensiones de una
tabla, con tablas relacionadas, registros repartidos en varias tablas, estructuras de
más de dos dimensiones como los llamados cubos, etc. tendrás que almacenarlos en
una base de datos. Desde Excel podrás realizar consultas a estos datos, que generen
como resultado un listado tipo tabla, bidimensional (registros en filas campos en
columnas), que sí sea capaz de interpretar.
www.necesitomas.com
143
Ya sé Excel, pero necesito más
En las opciones del programa, dentro de la configuración del centro de
confianza, puedes definir el comportamiento cuando se abre un libro que
contiene contenido externo, como son las conexiones de datos.
Ventajas
Cuando enlazamos desde Excel con un origen externo de datos, estamos
estableciendo un vínculo con los datos originales. Si modificamos los datos
enlazados en Excel no estamos alterando el original, sino la copia.
Podemos actualizar nuestra hoja con la última versión disponible de los datos,
evitando el error de realizar un trabajo para luego descubrir que nos faltaban
algunos datos y tenemos que adaptar o rehacer el trabajo.
Los datos sólo están en un lugar, con lo que evitamos tener que introducir los
nuevos datos en varios sitios para mantener sincronizadas varias copias de los
mismos, lo que acaba degenerando en tener varios archivos con datos, ninguno de
los cuales está completo.
Los rangos modifican su tamaño de acuerdo a los datos que resultan de la consulta,
con lo que los nombres del rango, las fórmulas, los gráficos, todo lo que hiciese
referencia al rango que contiene los datos vinculados, ya sea directamente o
mediante nombres, se adapta automáticamente a la nueva cantidad de datos,
evitando errores del tipo “datos que no aparecen en el gráfico” o “fórmulas que no
operan con todos los datos existentes”, que son demasiado habituales cuando
añadimos datos en una listado de una hoja y sobrepasamos el límite que habíamos
supuesto que nunca íbamos a superar.
www.necesitomas.com
144
Ya sé Excel, pero necesito más
Las fórmulas introducidas al lado de los datos para operar con ellos se extienden
automáticamente para adaptarse al número de datos resultado de la consulta, con lo
que no volveremos a tener que extender manualmente las fórmulas si introducimos
un dato nuevo una fila más abajo del último registro.
El proceso de obtener datos externos
Cuando se habla de obtener datos desde un origen externo debes tener claro que no
quieres abrir el archivo original directamente con Excel (si es que se puede); que
no quieres copiar los datos en otro programa y pegarlos en Excel; que no quieres
trabajar directamente con los datos originales, sino crear un enlace a los mismos.
Los pasos a dar son similares, independientemente de donde se encuentren los
datos almacenados. Variarán algunas opciones y posibilidades disponibles, pero la
idea es la misma y se puede resumir en estos pasos:
En primer lugar deberás indicar al programa dónde se encuentran los datos: en un
archivo de texto, en una base de datos de Access, en un servidor SQL, en una tabla
de una página web, en un archivo XML, en un origen para el que hayas definido un
nombre (DSN, Data Source Name, nombre de origen de datos), o en cualquier
origen de datos ODBC (Open Data Base Connectivity) para el que tengas un
controlador instalado en tu equipo, lo que incluye el caso de que tus datos se
encuentren en un libro de Excel.
En cada caso debes proporcionar la configuración necesaria para poder conectar
con el origen de datos que te interese: nombre de usuario y contraseña, base de
datos a la que conectar, ubicación del archivo, etc.
Hay que definir también qué datos queremos importar y cómo. Si queremos una
tabla entera, o datos de varias tablas, si queremos todos o sólo determinados
campos, si queremos todos los registros o sólo aquellos que cumplan unas
determinadas condiciones.
Por último definiremos qué hacer con los datos. Podemos listarlos en una hoja, o
pueden ser el origen de una tabla o gráfico dinámico.
Ahora ya tenemos los datos en nuestro libro, podemos añadir fórmulas que operen
con cada registro o con todos ellos, resumirlos, representarlos en un gráfico,
cualquier cosa que se nos ocurra, pero con la tranquilidad de saber que si en el
futuro hay datos diferentes de los que hay ahora, o se añaden nuevos registros, no
www.necesitomas.com
145
Ya sé Excel, pero necesito más
tendremos que hacer nada, porque al actualizarse los datos el trabajo ya estará
hecho.
www.necesitomas.com
146
Ya sé Excel, pero necesito más
Desde archivo de texto
 Datos>Obtener datos externos>Importar archivo de texto
Datos>Obtener datos externos>desde texto
Si nuestros datos van a obtenerse de un archivo de texto, al indicar a Excel dónde
se encuentra dicho archivo se mostrará el asistente para importar texto, que en unos
cuantos pasos nos solicitará la información necesaria para poder interpretar
correctamente los datos.
Se importarán todos los registros. En este tipo de conexión no está permitido
establecer unos criterios de consulta para restringir el número de datos
resultado. Sí podemos elegir si importar o no alguno de los campos, pero se
importarán a Excel todos los registros (filas) del archivo.
En el primer paso del asistente indicamos cómo están separados unos campos de
otros en la misma fila del archivo, en un mismo registro, si están separados por un
determinado carácter, o si la anchura de los campos es fija, es decir, que cada
campo ocupa siempre el mismo número de caracteres.
www.necesitomas.com
147
Ya sé Excel, pero necesito más
Indicaremos también desde qué fila queremos obtener los datos, por si al comienzo
del archivo existen líneas de encabezado que no nos interesa importar puesto que
no se trata de los datos propiamente dichos.
Disponemos de una lista para elegir el tipo de codificación del archivo. En general
Excel lo detecta automáticamente, pero podemos modificarlo manualmente por si
acaso la suposición de Excel no es la correcta.
En el segundo paso del asistente indicaremos qué carácter se emplea para separar
los campos (tabulación, coma, punto y coma, espacios, etc. ). Si los campos de
texto están delimitados por comillas u otro carácter, este es el momento de decirlo.
En el caso de que nuestro tipo de archivo fuese de ancho fijo, lo que habrá que
definir en este segundo paso será la anchura de cada campo.
www.necesitomas.com
148
Ya sé Excel, pero necesito más
En el tercer paso, indicaremos para cada uno de los campos qué tipo de dato
contiene: General para que Excel suponga el tipo de dato en función del contenido;
Texto si queremos que el campo se importe como texto (aunque contenga números
luego no podremos operar con ellos); Fecha, podremos indicar el formato que tiene
la fecha en el archivo de texto para que no haya confusiones con el orden en que
está escrita.
Podemos no importar una columna entera si ese campo no nos interesa.
Dentro de las opciones avanzadas, a las que se accede desde el último paso del
asistente, especificaremos qué caracteres se han empleado en el archivo de texto
para separar los decimales y para separar los millares. También definimos dónde
figura el signo menos en los números negativos del archivo de datos, si delante o
detrás del número.
Esta configuración es especialmente importante para reconocer adecuadamente los
números, porque no es lo mismo interpretar el dato 1.001 como “mil uno”, que
como “uno con una milésima”. Si tenemos 1,001.10 para que entienda el número
mil uno con diez centésimas, habremos tenido que definir en las opciones
avanzadas la coma como separador de miles y el punto como separador decimal. Si
Excel no es capaz de reconocer un número lo interpretará como texto. Si tenemos
www.necesitomas.com
149
Ya sé Excel, pero necesito más
los dos caracteres presentes en el número es más difícil cometer un error, pero
cuando sólo tenemos un símbolo de separación y tres cifras a la derecha del
separador sí es posible la ambigüedad. Si tenemos 1,000 frente a 1.000 ¿cuál de
estos números es el mil y cuál es el uno?
Tras dar todos estos pasos y finalizar el asistente, habrá que indicar dónde y cómo
queremos que aparezcan los datos en el libro. En el caso de los archivos de texto
sólo disponemos de la opción de importarlos como un rango en una hoja. Si
queremos por ejemplo crear una tabla dinámica con esos datos, tendremos que
crearla después, indicando como origen para la misma el rango donde se
encuentran los datos importados del archivo de texto y lo indicaremos con su
nombre, puesto que todos los rangos de datos importados tienen un nombre.
www.necesitomas.com
150
Ya sé Excel, pero necesito más
El nombre del rango de datos procedente de una consulta a un archivo de
texto, que podemos definir en la hoja de propiedades del rango de datos
externo, tiene como ámbito la hoja donde están los datos.
Este asistente para la importación de texto, también puede utilizarse cuando en
nuestra hoja tengamos texto procedente de copiar y pegar, o arrastrar con el ratón,
desde otra aplicación. Si este texto pegado en Excel se amontona en una única
columna, podemos emplear el asistente para importación de archivos de texto, para
convertir este texto en columnas, aunque en este caso no existe vínculo con el
archivo original, no podremos actualizarlo más adelante.
 Datos>Texto en columnas
Datos>Herramientas de datos>Convertir texto en tabla
Otra situación en que se utiliza el mismo asistente para importación de texto es
cuando abrimos con Excel un archivo de texto, o separado por comas. En este caso
el asistente se mostrará automáticamente en pantalla al abrir el archivo, para que
puedas indicar a Excel cómo interpretarlo.
Te recuerdo que dispones de unas funciones para el tratamiento de datos tipo texto,
como LIMPIAR, que elimina los caracteres no imprimibles, o ESPACIOS, que
elimina los espacios existentes al principio y al final de un texto. Consúltalas en la
página 77.
www.necesitomas.com
151
Ya sé Excel, pero necesito más
Desde una página web
 Datos>Obtener datos externos>Nueva consulta web
Datos>Obtener datos externos>desde web
Excel es capaz de recuperar información de una tabla que se encuentre en una
página web, en Internet o en cualquier otro lugar al que tengamos acceso desde
nuestro equipo. Tal vez sería más correcto decir que Excel es capaz de obtener
datos desde archivos de tipo html.
Qué te voy a contar de Internet que no sepas. Sólo recordarte que es frecuente que
una página hoy exista y mañana ya no, o mañana existe pero ha cambiado de sitio o
de aspecto, así que no tengas la confianza plena de que tus consultas web
funcionarán eternamente.
Por cierto, para que una consulta a una página web de Internet funcione, lo
primero que hay que tener es una conexión a Internet.
www.necesitomas.com
152
Ya sé Excel, pero necesito más
En las versiones anteriores a la 2003, debíamos proporcionar el nombre de la tabla
que contenía los datos que queríamos importar dentro de la página web. Este
nombre había que consultarlo viendo el código de la página web con un editor de
texto e investigando un poco, no resultando muchas veces evidente cómo referirse
a la tabla en cuestión.
Desde la versión 2003 el asistente para la importación de datos desde páginas web
analiza la página de donde vamos a tomar los datos y nos ofrece las tablas que
contiene, con lo que resulta mucho más cómodo identificar qué tabla, de entre toda
la página, es la que realmente nos interesa.
Este cuadro de diálogo para una nueva consulta web, ofrece la opción de guardar la
consulta como archivo de texto, con extensión iqy, supongo que de “Internet
QuerY”, para poder reutilizarla en el futuro.
Pulsando sobre Opciones, se muestra un nuevo cuadro de diálogo donde
indicaremos a Excel si recupera además de los datos el formato que éstos tienen en
la web.
Definiremos a Excel cómo tratar la información que encuentre entre delimitadores
<PRE>, con formato previo.
www.necesitomas.com
153
Ya sé Excel, pero necesito más
Por último podemos elegir si queremos que Excel trate de reconocer fechas en los
datos y si deshabilitamos los redireccionamientos hacia otras páginas web al tratar
de acceder a la página que nos interesa.
Al igual que con los datos procedentes de un archivo de texto, sólo tenemos la
opción de importar los datos como un rango dentro de una hoja del libro.
El nombre del rango de datos procedente de una consulta a una página web,
que podemos definir en la hoja de propiedades del rango de datos externo,
tiene como ámbito la hoja donde están los datos.
www.necesitomas.com
154
Ya sé Excel, pero necesito más
Desde Access
Datos>Obtener datos externos>Desde Access
Al seleccionar esta opción, lo primero que se solicita es la ubicación del archivo
con la base de datos Access que contiene los datos que vamos a obtener.
A continuación se muestra un listado con las tablas y consultas disponibles en esa
base de datos, para seleccionar la que tiene los datos que nos interesan.
Si no queremos una tabla entera, sino una consulta más concreta, en las
propiedades de la conexión, una vez creada, podremos escribir una consulta SQL
particularizada.
No hay más que indicar ahora qué haremos con los datos que Access nos enviará
como respuesta a nuestra consulta a la base de datos. Podemos mostrarlos en el
libro como una tabla, o utilizarlo como origen para una tabla o un gráfico
dinámico.
www.necesitomas.com
155
Ya sé Excel, pero necesito más
Desde un servidor SQL
Datos>Obtener datos externos>de otras fuentes>Desde SQL Server
Sólo hay que conocer el nombre el servidor SQL donde están nuestros datos y la
base de datos, así como las contraseñas si son necesarias para poder conectar.
Una vez conectados con el servidor, hay que especificar qué base de datos de entre
todas las del servidor es la que vamos a emplear y qué tabla dentro de ésta. Más
adelante, en las propiedades de la conexión, se puede introducir una consulta en
lenguaje SQL si lo que necesitamos no es una tabla completa sino una selección de
registros a partir de los datos de una o varias tablas.
En el siguiente paso del asistente podremos guardar la consulta en un archivo
independiente, con extensión odc (siglas de ¿Open? Database Connection,
conexión abierta de base de datos) para poder reutilizarla posteriormente.
www.necesitomas.com
156
Ya sé Excel, pero necesito más
Es el momento de añadir un texto descriptivo de la conexión, para recordar más
adelante la finalidad de esta conexión. También se debe agregar un nombre
descriptivo, que es el que se empleará en el libro para identificar la conexión.
Se pueden añadir palabras clave para facilitar la localización posterior de la
consulta, aunque en mi opinión es mejor emplear nombres suficientemente
descriptivos para el archivo odc y para la conexión.
Podemos indicar a Excel si queremos que se intente leer el archivo odc con la
definición de la conexión cada vez que actualicemos los datos, lo que es interesante
tanto si modificamos con un editor de texto el archivo, para actualizar la consulta
con las modificaciones introducidas, como si trasteamos desde Excel en las
propiedades de la consulta, para recuperar la consulta original guardada en el
archivo.
www.necesitomas.com
157
Ya sé Excel, pero necesito más
Por último, como en todas las importaciones de datos externos, indicaremos dónde
vamos a emplear nuestros datos
www.necesitomas.com
158
Ya sé Excel, pero necesito más
A través de Query
 Datos>Obtener datos externos>Nueva consulta de base de datos
Datos>Obtener datos externos>De otras fuentes>De Microsoft Query
Microsoft Query es un programa incluido con Office cuya finalidad es realizar
consultas a orígenes de datos de tipo ODBC (Open DataBase Connectivity,
conectividad abierta de bases de datos). Podemos acceder a datos contenidos en
una hoja de un libro Excel, podemos acceder a una base de datos Access, podemos
acceder a cualquier sistema de base de datos, siempre que dispongamos en nuestro
equipo de un software controlador adecuado para acceder a la misma.
La mayoría los fabricantes de sistemas de bases de datos, si no todos, elaboran
controladores para poder acceder a las bases de datos mediante ODBC. Si tiene ese
controlador, mediante Query podrás consultar sus datos.
Excel tiene la posibilidad de consultar datos a bases de datos a través de Query. Es
como si Excel le pidiese el favor a Query de ir a buscarle unos datos, Query se
ocupa de entenderse con la base de datos, localizar la información que le han
pedido y volver a Excel con la respuesta a su pregunta.
El primer paso para obtener los datos es indicar de dónde proceden. Desde el
cuadro de diálogo podemos definir un nuevo origen de datos, utilizar una consulta
o una definición de cubo OLAP creada anteriormente.
www.necesitomas.com
159
Ya sé Excel, pero necesito más
Algunas versiones de Query no reconocen nombres de archivos de bases de
datos Access o Excel si éstos contienen puntos. No emplees nombres del tipo
Mis.Datos.mdb, utiliza guiones bajos u otro carácter para que Query acceda
sin problemas.
Si activamos la opción de usar el asistente para consultas, aparecerán una serie de
ventanas desde las que podremos ir paso a paso definiendo las opciones de nuestra
consulta.
Definiremos de qué campos y de qué tablas queremos obtener los datos, así como
el orden en que aparecerán estos campos.
Estableceremos, en caso necesario, los criterios que han de cumplir los datos que
queremos obtener. Mediante unas listas desplegables podemos indicar estos
criterios de una manera sencilla.
www.necesitomas.com
160
Ya sé Excel, pero necesito más
Por último indicaremos los criterios de ordenación de los datos.
Si nuestra consulta ha quedado completamente definida tras todos estos pasos del
asistente, en el último paso se puede guardar la consulta en un archivo de texto con
extensión dqy (Data QuerY) y devolver los datos a Excel.
Si el asistente no nos ha permitido generar la consulta exactamente como la
necesitábamos, podemos abrir la interfaz de Query para retocarla a nuestro antojo.
www.necesitomas.com
161
Ya sé Excel, pero necesito más
La apariencia de este programa muestra varias zonas diferenciadas, aparte de los
menús y botones de la barra de herramientas.
En la primera de estas zonas se muestran las tablas que forman parte de la
consulta, con las relaciones existentes entre ellas si las hay.
Según lo necesitemos quitaremos y añadiremos tablas a este panel,
eligiéndolas entre las tablas disponibles en la conexión definida. Podemos definir y
editar las relaciones existentes entre las tablas.
www.necesitomas.com
162
Ya sé Excel, pero necesito más
En la segunda zona es donde podemos establecer los criterios de filtrado de
los datos. Se elegirá en la primera fila, mediante una lista desplegable, el campo
sobre el que queremos aplicar el filtro, y en las filas de debajo los criterios que
debe cumplir. Los criterios que estén en la misma fila se deben cumplir
simultáneamente, es una condición Y. Los criterios de filas diferentes se
corresponden con una condición O, se filtrarán los datos que cumplan los criterios
de al menos una de las filas.
Como criterio para un campo podemos escribir un valor, o una operación con
valores o con los campos, que puede ser aritmética (+, -, *, /), una operación lógica
(Y, O, NO), una comparación (< menor que, <= menor o igual que, = igual que, >=
mayor o igual que, > mayor que, <> distinto, ENTRE tal Y cual valores, COMO
'un texto'), una lista de valores (EN(valor1;valor2;valor3;…)) y valores nulos (ES
NULO, NO ES NULO).
Para delimitar los textos se emplea la comilla simple, mientras que como carácter
comodín para cualquier cadena de texto se utiliza el símbolo del tanto por ciento
%. Para representar un único carácter se emplea como comodín el guión bajo _.
Para buscar uno de los caracteres comodín, lo incluiremos dentro de corchetes, por
www.necesitomas.com
163
Ya sé Excel, pero necesito más
ejemplo COMO '%[%]' se cumpliría en aquellos datos que acaben en un símbolo
%.
Cuando incluimos caracteres entre corchetes, se considera que cumple la condición
si está presente alguno de los caracteres, por ejemplo si nuestro criterio para un
campo de texto es COMO 'l[ao]s', obtendríamos los datos con los textos las y los.
Si queremos que no se incluya ninguno de los caracteres, antepondremos a los
caracteres, dentro del corchete, el símbolo de exclamación ! Por ejemplo, COMO
'l[!ao]s' devolvería las cadenas les, lis, lus, lbs, lxs, en fin, las cadenas que, entre
medias de la l y la s, tienen cualquier carácter excepto la a y la o. Si los datos se
obtienen desde SQL Server, en vez de la exclamación habrá que emplear el
carácter ^.
Podemos indicar un intervalo de caracteres separándolos con un guión -, por
ejemplo COMO 'l[a-d]s' nos devolvería los textos las, lbs, lcs, lds.
Continuando con el aspecto del programa, por último, en la parte inferior de Query
aparece un listado con los datos resultado de la consulta. Para elegir los campos
cuyos datos queremos obtener basta con arrastrar el campo desde la tabla de la
parte superior hasta este listado.
Haciendo doble clic con el ratón sobre el nombre del campo, se mostrará una serie
de opciones del mismo, como el nombre que aparecerá en el encabezado, o la
función empleada para resumirlo en consultas que tengan algún tipo de
agrupamiento.
www.necesitomas.com
164
Ya sé Excel, pero necesito más
Podemos activar o desactivar la opción de actualización automática en la barra
de herramientas, para que los datos que aparecen en este listado reflejen
automáticamente, o no, cada uno de los cambios que vayamos realizando. En caso
de tenerlo desactivado, no olvides actualizar los datos manualmente cuando hayas
completado la consulta, para comprobar que la consulta funciona correctamente y
devuelve los datos que esperabas.
La definición de la consulta, realizada mediante la interfaz del programa
Query, es convertida a una sentencia SQL (Structured Query Language, lenguaje
estructurado de consultas) que podemos editar manualmente.
Una vez creada la consulta según nuestras necesidades, desde el menú Archivo
podremos guardar la consulta como archivo dqy para poder reutilizarla en el futuro.
Por último, también desde este menú, podremos devolver los datos a Excel, donde
se nos preguntará si mostramos los datos como una tabla o los empleamos como
origen para una tabla o gráfico dinámico.
Microsoft Query dispone de su propia ayuda en pantalla, independiente de la
de Excel. Pulsa [F1] desde la interfaz de Query para acceder a ella.
Si conoces Access, o algún otro programa gestor de bases de datos, habrás
comprobado que tanto el aspecto, como la manera de elaborar una consulta con
Query es muy similar a hacerlo en el modo diseño de consultas de estos programas,
si bien las posibilidades de Query son más limitadas. Si tu consulta es muy
complicada, puede que Query no sea capaz de representarla gráficamente con lo
que tendrás que editarla mediante sentencias SQL.
Si estás acostumbrado a elaborar consultas en Access u otro programa de base de
datos, o tu consulta es más complicada de lo que Query puede representar, siempre
puedes elaborar una consulta a través de estos otros programas y luego adaptar la
sentencia SQL generada, para que Query la entienda. En la página 175 se comentan
los cambios necesarios para adaptar las sentencias SQL de unos programas a otros.
www.necesitomas.com
165
Ya sé Excel, pero necesito más
Propiedades de un rango de datos externos
Desde texto y web
Desde la ventana de propiedades del rango de datos externo, podemos cambiar el
nombre ofrecido por defecto y establecer aquel que más nos guste y mejor defina
de dónde vienen los datos o para qué los utilizamos. A este nombre se podrá hacer
referencia en fórmulas, para indicar el origen de un gráfico o una tabla dinámica.
Es un nombre de rango más, que aparecerá en el administrador de nombres junto
con los otros nombres definidos en el libro.
Para los archivos de texto, dentro del grupo para el control de las actualizaciones,
elegiremos si queremos que nos pregunte el nombre de archivo cada vez que
actualicemos los datos. Esto resulta de utilidad si tenemos varios archivos de texto
con estructura similar, definimos las opciones de importación para uno de ellos y
luego cada vez que actualicemos tendremos la posibilidad de indicar de qué
archivo se leerán los datos. En las consultas web, esta opción se ha sustituido por
“habilitar actualización en segundo plano”.
También podemos establecer un periodo de tiempo para realizar actualizaciones
automáticas, o bien seleccionar si se actualizarán los datos al abrir el libro. Si no
activamos ninguna de estas opciones, la actualización de datos será manual, bien
desde el menú contextual sobre el rango, bien desde el administrador de
conexiones.
www.necesitomas.com
166
Ya sé Excel, pero necesito más
Una opción muy útil para reducir el tamaño de los archivos es no guardar los datos
en el libro. Si no vamos a tener problema en conectar con el origen de datos cada
vez que abramos nuestro libro, podemos seleccionar la opción de quitar los datos
de la hoja antes de cerrar, que es una opción adicional a actualizar al abrir el libro.
La opción de quitar los datos antes de cerrar estará deshabilitada hasta que
hayamos accedido a los datos por primera vez y tengamos datos en el libro.
Estableceremos los criterios respecto al ajuste del ancho de las columnas en
función del contenido recuperado, pudiendo señalar que se conserve al actualizar el
formato aplicado a las celdas.
www.necesitomas.com
167
Ya sé Excel, pero necesito más
Definimos también el comportamiento al actualizar los datos en lo referente al
formato y la anchura de las celdas, así como con la inserción y eliminación de
datos cuando cambia el número de registros totales tras actualizar.
Si tenemos fórmulas que calculan totales debajo de los datos, cuando se recuperen
más datos, nos interesará la opción de insertar celdas o filas, para que los nuevos
datos no sobrescriban las fórmulas.
Por último, tenemos la opción de que automáticamente se extiendan las fórmulas
que se encuentran en las columnas adyacentes al rango de datos, importantísima
opción si realizamos operaciones con los datos. Esta opción nos asegura que las
fórmulas siempre se encontrarán en todas las filas donde haya datos.
Esta última opción aparece en las consultas a archivos de texto y no aparece en las
consultas a bases de datos, puesto que para el primer caso los datos se importan
como un rango convencional, mientras que para el segundo caso los datos se
importan como una tabla, y en las tablas las fórmulas de las columnas adyacentes
se extienden siempre automáticamente.
En las versiones anteriores a la 2003, al no existir aún las tablas (o listas), en las
opciones de los datos externos procedentes de bases de datos sí aparece también la
opción de extender automáticamente las fórmulas.
He dejado para el final la opción que aparece en primer lugar: guardar definición
de consulta. Si se desactiva esta opción, Excel no podrá volver a consultar los
datos, rompemos el vínculo que existe con el archivo donde se encuentran los
datos. Como consecuencia, convertimos nuestros datos vinculados en datos sin
más, sin posibilidad de actualizarlos posteriormente. Nos quedaremos con una
copia de los datos en su estado actual.
www.necesitomas.com
168
Ya sé Excel, pero necesito más
Desde bases de datos
En las propiedades de un rango de datos externo procedente de una consulta a una
base de datos únicamente disponemos de opciones relativas al formato y al
comportamiento cuando varía el número de datos tras la actualización.
Si estás utilizando una versión de Excel anterior a la 2003, lee también el
apartado sobre las propiedades de un rango procedente de un archivo de texto
o de una página web.
En el primer grupo, especificaremos las opciones relativas a conservar el formato y
los filtros aplicados sobre el rango tras actualizar, así como sobre si se incluyen, o
no, números de fila y si se ajusta el ancho de las columnas automáticamente al
contenido.
También disponemos de las opciones necesarias para definir el comportamiento del
rango cuando aumenta o disminuye el número de registros resultado de la consulta
a la base de datos. Insertar celdas o filas para los datos nuevos, o sobrescribir las
celdas existentes. Cuando el número de datos se reduce, se eliminarán las celdas
sin usar, o simplemente se borrarán.
www.necesitomas.com
169
Ya sé Excel, pero necesito más
Propiedades de la conexión
Datos>Conexiones>Conexiones
En la versión 2007 la información de la conexión al origen de datos está disponible
en un formulario en el que podemos editar cómodamente la información de las
propiedades de la consulta a la base de datos.
En el cuadro de diálogo conexiones figuran todas las conexiones del libro actual,
con posibilidad de seleccionar la que nos interese para ver, en la parte inferior, en
qué lugar del libro se emplea dicha conexión. La actualización de los datos puede
realizarse manualmente desde aquí y podemos también acceder al formulario de
propiedades de la conexión.
En las propiedades de la conexión, tenemos dentro de la pestaña denominada Uso,
las opciones relativas a la actualización de los datos.
Para las consultas a archivos de texto y archivos html, estas son las únicas opciones
habilitadas dentro de las propiedades de la conexión, que por otra parte, también
www.necesitomas.com
170
Ya sé Excel, pero necesito más
están disponibles a través de las propiedades del rango de datos externos para estos
tipos de archivos.
Para reducir el tamaño del archivo, podemos seleccionar la opción de quitar los
datos antes de guardar. Esta opción no interesa activarla si sólo disponemos de
conexión con el origen de datos ocasionalmente, por ejemplo porque trabajemos
con un equipo portátil fuera de la oficina sin conexión a la red corporativa.
Tampoco interesará si la conexión con el origen de datos es muy lenta y
recuperamos un número elevado de registros, tal vez en esas condiciones no nos
merezca la pena esperar a que se actualicen los datos cada vez que se abra el libro,
aunque con las velocidades que tienen las redes hoy día esta limitación cada vez es
menos relevante.
Aunque quitemos los datos externos antes de cerrar, las fórmulas existentes en
las celdas adyacentes al rango no desaparecen. Cuando abramos de nuevo el
libro y se vuelvan a cargar los datos, ahí estarán también las fórmulas.
En la pestaña denominada Definición, se muestra la información sobre la conexión
con la base de datos, como por ejemplo la ubicación del archivo con la base de
datos, con lo que podremos corregir la localización del mismo si éste se cambió de
lugar con posterioridad a la creación de nuestra consulta.
En el caso de que nuestra consulta tenga parámetros, se podrá acceder a su
configuración desde esta pestaña, además de poder hacerlo desde el menú
contextual de los datos.
www.necesitomas.com
171
Ya sé Excel, pero necesito más
En esta pestaña es donde podemos elegir si queremos obtener los datos de una tabla
completa o si queremos realizar una consulta mediante SQL a la base de datos para
elegir qué datos exactamente son los que nos interesan.
www.necesitomas.com
172
Ya sé Excel, pero necesito más
Consultas con parámetros
Las consultas que realicemos a datos externos pueden incluir criterios para filtrar
los datos, por ejemplo podemos establecer que el campo fecha sea posterior al uno
de enero de 2007, o que el valor del campo importe sea superior a diez euros.
Sin embargo, si posteriormente queremos modificar estos criterios no nos quedaría
más remedio que entrar en la definición de la consulta para introducir los nuevos
valores. Si vamos a cambiar el criterio continuamente, acceder a la definición no
resulta nada operativo.
Para solucionar este problema, los criterios pueden definirse de manera
paramétrica, esto es, nuestra consulta se define con unos filtros genéricos, mediante
el empleo de parámetros, a los que habrá que dar valor antes de ejecutar la
consulta.
Por ejemplo filtramos los datos cuyo campo fecha sea mayor que un parámetro y
menor que otro parámetro. En los criterios de filtrado de Query, escribiremos los
campos sobre los que se aplicará el filtro y en las filas bajo el nombre de cada uno
de estos campos escribiremos el criterio, escribiendo entre corchetes el nombre del
parámetro.
Los nombres de los parámetros utilizados no pueden coincidir con el nombre
de ningún campo de la base de datos.
Cuando llegue el momento de actualizar la consulta, se nos preguntará por los
valores para los parámetros, empleando el nombre que hemos introducido entre
corchetes. En nuestro ejemplo, nos pedirá que introduzcamos los valores Desde y
Hasta.
Una vez en Excel, podemos establecer una serie de opciones relativas a los
parámetros. Para ello accederemos a través del menú contextual de la tabla, o bien
a través de la pestaña Definición de las propiedades de la conexión.
www.necesitomas.com
173
Ya sé Excel, pero necesito más
Desde el formulario de definición de los parámetros de nuestra consulta
indicaremos a Excel, para cada uno de los parámetros, si queremos que se pregunte
al usuario por el valor de los mismos cada vez que se actualice, para lo cual
podremos escribir un texto personalizado que se mostrará al usuario para explicarle
lo mejor posible qué se le está pidiendo.
También podemos fijar el parámetro a un valor concreto, que se podrá modificar
posteriormente desde este mismo formulario.
Por último y más interesante, podemos tomar el valor del parámetro de una celda.
En este caso podemos indicar a Excel que actualice los datos cada vez que cambie
el valor de la celda.
En el cuadro de diálogo en que se pregunta al usuario por el parámetro, se puede
escribir directamente el valor, pero también cabe la posibilidad de indicar una
referencia a una celda. En este caso, es el usuario quien decide qué celda contiene
www.necesitomas.com
174
Ya sé Excel, pero necesito más
el valor del parámetro y si quiere mantener esta asociación para las próximas
actualizaciones.
Lenguaje SQL
¿Es necesario estudiar este lenguaje para realizar consultas a bases de datos y, en
nuestro caso, para particularizar una consulta a un origen de datos externo? La
respuesta es NO.
Con los asistentes para realizar consultas que tienen muchas de las aplicaciones de
bases de datos, entre ellas Query, podemos crear consultas sin tener que programar
nada. Prácticamente con el ratón y escribiendo únicamente los criterios que deben
cumplir los campos, estos asistentes se ocupan de escribir los comandos SQL que
la base de datos entenderá para devolvernos los datos que queremos.
Teniendo en cuenta que con Query podemos enlazar con cualquier origen de datos
para el que tengamos el controlador ODBC instalado en nuestro ordenador, con
saber manejar un poco este programa podremos emplearlo como el intermediario
más sencillo para acceder a cualquier base de datos.
Claro, es tan sencillo que a veces no es capaz de representar gráficamente las
consultas que se salen de lo habitual y sólo permite introducir las consultas
directamente en SQL. Mediante Query tampoco podremos emplear parámetros en
las consultas que no pueda representar gráficamente.
En estos casos, podremos emplear el asistente para generar consultas de Access (o
cualquier otro programa gestor de bases de datos que conozcas), que es algo más
potente y permite realizar con la misma sencillez consultas más complicadas.
Copiaremos la sentencia SQL generada por Access y sustituiremos la sentencia
SQL de nuestra consulta, bien directamente en la ventana SQL de Query, bien en la
definición de la consulta, dentro del formulario de propiedades de la conexión
www.necesitomas.com
175
Ya sé Excel, pero necesito más
(disponible desde la versión 2007), bien en el archivo de texto donde guardamos la
consulta original.
Sólo hay que tener algunas precauciones a la hora de utilizar código SQL de las
consultas Access en Query, ya que algunos caracteres deben cambiarse,
especialmente los comodines, puesto que estos programas utilizan diferentes
versiones del estándar ANSI para las consultas:
Query
SQL Server
Access
'
'
"
Comodín texto
%
%
*
Comodín un carácter
_
_
?
Exceptuar caracteres
^ o !
según origen
^
!
?
[parámetro]
[parámetro]
Delimitador texto
Parámetros
Modificar una consulta existente
Siempre es recomendable guardar un archivo con la definición de la consulta, por
si tenemos que reutilizarla más adelante o por si desde Excel no podemos
modificarla adecuadamente. Siempre será más cómodo reutilizarla desde el
archivo, retocando lo que haga falta, que tener que volver a crearla desde cero.
Guarda este archivo con un nombre que te permita identificar fácilmente qué datos
se obtienen con esa consulta. Nombres del tipo “consulta desde Access 1”,
“consulta desde Access 2” no son nada esclarecedores.
Si eliges guardar las contraseñas en el archivo de definición de la consulta,
ésta se almacena como texto sin cifrar, con lo que debes tener cuidado de
dónde guardas y cómo proteges estos archivos.
www.necesitomas.com
176
Ya sé Excel, pero necesito más
Se trata de archivos de texto, por lo que puedes leerlos y editarlos fácilmente con
cualquier editor, aunque es recomendable que cuentes uno algo mejor que el bloc
de notas de Windows, sobre todo para poder ver los caracteres no imprimibles,
como espacios y tabulaciones. Si no conoces ninguno prueba con Crimson Editor
(www.crimsoneditor.com) o LopeEdit (www.lopesoft.com), ambos gratuitos.
Desde el archivo de la consulta podrás modificar fácilmente la ubicación de la base
de datos, podrás cambiar la sentencia SQL de la misma para incluir nuevos
campos. Podrás acceder a toda la información de la conexión sin intermediarios.
Eliminar la conexión con un origen de datos
Por supuesto, puede que alguna vez nos interese trabajar con una copia de los datos
en un momento concreto, que no vamos a querer actualizar nunca.
Para los archivos de texto y web, así como en versiones anteriores de Excel,
podemos romper el enlace que une la consulta con los datos originales
desactivando la opción Guardar definición de la consulta, dentro de las
propiedades del rango de datos externo.
Desde el cuadro de diálogo donde se muestran todas las conexiones a datos
externos podemos quitar las conexiones que no vayamos a utilizar. Los datos que
se encuentren en el libro procedentes de esa conexión permanecerán en el libro,
pero ya no se podrán actualizar, se habrán convertido en una copia de los datos.
Datos> Conexiones>Conexiones>Quitar
www.necesitomas.com
177
Ya sé Excel, pero necesito más
Si los datos externos se encuentran en una tabla de nuestro libro, en la pestaña
“diseño”, dentro del grupo “Herramientas de tabla”, que aparece al situar la celda
activa sobre la tabla, hay una serie de funcionalidades relativas a los datos
externos, entre las que se encuentra la posibilidad de romper el vínculo con los
datos de origen.
Herramientas de tabla>Diseño>Datos externos de tabla>Desvincular
www.necesitomas.com
178
Ya sé Excel, pero necesito más
Tablas dinámicas
Cuando tenemos pocos datos, o una cantidad moderada, que se pueda ver en una
pantalla o poco más, seguramente no tiene sentido hablar de resumir dichos datos
para poder obtener conclusiones de los mismos, porque de un vistazo podemos
estudiar los datos directamente, sin ayuda adicional.
Sin embargo, cuando los datos que estamos manejando empiezan a crecer, cada vez
es más incómodo y difícil leerlos uno a uno para poder extraer conclusiones,
llegará un punto en que nuestra cabeza no será capaz de analizar tanta información,
y es un punto al que se llega con gran facilidad.
Una de las herramientas más potentes y fáciles de utilizar que posee Excel a la hora
de resumir gran cantidad de datos es lo que se denomina tabla dinámica.
De las dos palabras que componen este nombre, el significado de “tabla” es el de
resumir nuestros datos, agruparlos y organizarlos ordenadamente en forma de tabla,
de manera que una persona pueda analizar cómodamente la información. El sentido
de la palabra “dinámica” es que no se trata de una representación o un resumen
inmóvil o estático, configurado la primera vez y sin posibilidad de ajustes
posteriores, como ocurre por ejemplo con la consolidación de datos, sino que se
puede modificar, reorganizar, mostrar u ocultar información a nuestro antojo,
cambiar la forma en que se agrupa y se ordena, sobre la marcha, según lo
necesitemos, empleando para ello tan solo el ratón.
Los datos no tienen por qué estar en la misma hoja de cálculo, de hecho ni siquiera
tiene que estar en una hoja de cálculo y pueden proceder de otro archivo o de una
base de datos externa. En el caso de datos externos procedentes de archivos de
texto o html, la tabla dinámica no puede leer directamente de ellos, así que habrá
que importar los datos a una hoja Excel y hacer que nuestra tabla dinámica tome
como origen los datos desde esa hoja.
Para las figuras que ilustran este apartado se han empleado como datos un listado
con información de facturas, cuyos campos son fecha de factura, fecha de pago,
importe, categoría y observaciones. A pesar de no tener demasiados campos podrás
ver claramente las ventajas que proporciona analizar la información con una tabla
dinámica.
www.necesitomas.com
179
Ya sé Excel, pero necesito más
Creación
Al iniciar la creación se una tabla dinámica aparece un asistente para definir los
datos a emplear y la ubicación de la tabla.
 Datos>Informe de tablas y gráficos dinámicos
Insertar>Tablas>Tabla dinámica
En este primer paso es donde indicamos el rango donde se encuentran nuestros
datos, siempre más claro si empleamos nombres. Podemos indicar que nuestros
datos proceden de una fuente externa, en cuyo caso se mostrará un cuadro de
diálogo para elegir la conexión a emplear de la existentes ya en el libro, o bien
crear una conexión nueva desde una consulta guardada.
Si los datos a partir de los que se alimenta la tabla dinámica están en Excel como
un rango convencional, al añadir nuevos datos hay que tener la precaución de que
la tabla dinámica considere estos nuevos registros a la hora de actualizarse. En el
caso de datos externos, esto no es problema, puesto que se tomarán todos los datos
resultado de la consulta. El problema puede surgir cuando los datos se introducen
manualmente en Excel y la tabla dinámica accede a los mismos mediante una
referencia a un rango, cuando los datos no están en una tabla, ni proceden de una
consulta de datos externos. Si introducimos datos insertando filas en medio del
rango, éste crece incluyendo los nuevos datos. Si los datos se introducen a
continuación de los datos existentes, una fila más abajo, hay que corregir el rango
www.necesitomas.com
180
Ya sé Excel, pero necesito más
de origen de la tabla dinámica, o redefinir el nombre del rango para que incluya los
nuevos registros.
Si los datos se encuentran en Excel, es recomendable que crees una tabla con
ellos (ver página 137), que luego podrás resumir mediante una tabla dinámica.
Con esto evitarás problemas con la adición de nuevos datos.
En la versión 2007 se ha añadido un nuevo modo de disponer los datos en un lugar
o en otro de la tabla dinámica, mediante un croquis de la tabla que aparece en el
panel de tareas. En las versiones anteriores, los campos se cambian de posición
directamente sobre la propia tabla dinámica.
Podemos elegir entre diferentes modos de ver la lista de campos y las zonas donde
colocar los mismos, página, fila, columna, y resumen de valores.
Una vez que hemos indicado el origen de datos debemos elegir qué campos
queremos que aparezcan en los encabezados de filas y columnas y qué campos
queremos resumir en el cuerpo de la tabla dinámica. Para hacerlo basta con
arrastrar el campo deseado desde la lista de campos hasta el lugar de la tabla,
representado en el panel de tareas, donde queremos que aparezca. En el menú
contextual sobre el nombre del campo aparecen también opciones para agregarlo a
las diferentes partes de la tabla.
www.necesitomas.com
181
Ya sé Excel, pero necesito más
Para aquellos que prefieran configurar la disposición de los campos directamente
sobre la tabla, existe la opción de que la tabla dinámica admita el funcionamiento
de versiones anteriores, en vez de con el panel de tareas.
Opciones de tabla dinámica>Mostrar>Diseño de tabla dinámica clásica
Esto requiere además que el diseño del informe sea tabular o en esquema, para que
cada campo se muestre en columnas diferentes. En modo compacto no podremos
arrastrar los campos directamente sobre la tabla.
Herramientas de tabla dinámica>Diseño>Diseño>Diseño de informe
www.necesitomas.com
182
Ya sé Excel, pero necesito más
Si tenemos más de un campo para resumir en el cuerpo de la tabla, aparecerá un
nuevo rótulo, el campo “∑ Valores” (“Datos” en versiones anteriores), que
representa a los resúmenes de los campos. Cambiando la posición de este “campo”
estableceremos cómo van a aparecer los valores de resumen respecto de los rótulos
de filas y columnas. A continuación se muestran algunos ejemplos de la misma
información ordenada de maneras diferentes.
www.necesitomas.com
183
Ya sé Excel, pero necesito más
Configurar los campos
Para cada campo podremos, a través de Configuración del campo, que aparece en
el menú contextual sobre el propio campo, establecer una serie de opciones como
el nombre que aparecerá en la tabla (también puede cambiarse en la tabla
directamente), el formato de número con que aparecerán los valores, o la función
empleada para resumirlo.
www.necesitomas.com
184
Ya sé Excel, pero necesito más
Podemos definir cómo queremos ver ese resumen de datos eligiendo entre varias
opciones, como mostrar directamente el valor calculado con la función definida en
la pestaña Resumir por, o mostrar los valores como porcentajes de la fila (el total
de la fila es el 100% y para cada valor se muestra su contribución a ese total).
Podemos mostrar los valores como porcentaje, tomando como referencia los
valores de una determinada categoría marcada por otro campo, por ejemplo,
mostramos las sumas del importe de las facturas como porcentaje, tomando como
referencia (100%) las facturas del año 2006. En la configuración del campo
www.necesitomas.com
185
Ya sé Excel, pero necesito más
“importe” elegimos mostrar valores como “% de”, en campo base seleccionamos
“Años” y en elemento base elegimos “2006”.
Es posible mostrar los valores como diferencias, en valor o porcentaje, respecto de
los valores que le indiquemos como referencia, que pueden ser los de una misma
categoría para todos, por ejemplo todos los datos respecto de los valores del año
2006, o pueden tomarse como referencia para una categoría los valores de la
categoría anterior o siguiente (anterior o siguiente según el orden en que tengamos
mostrados los valores). Por ejemplo, esto nos permitiría conocer lo que aumenta o
disminuye la facturación en cada año para cada categoría, respecto del año anterior.
Es también posible mostrar varias veces el mismo campo, pero empleando
diferentes formas de resumir los valores, por ejemplo para conseguir que aparezca
www.necesitomas.com
186
Ya sé Excel, pero necesito más
el valor del importe total junto con el porcentaje de variación respecto del año
anterior.
Agrupar
La tabla dinámica permite agrupar automáticamente los datos por intervalos de
valores y también por fechas (años, meses, …), siempre que Excel reconozca que
un campo está formado exclusivamente por fechas. Para ello, en el menú
contextual que aparece sobre el campo que queramos agrupar, aparecen las
opciones de agrupar y desagrupar.
Según el tipo de dato de que se trate aparecerá uno de los siguientes cuadros de
diálogo:
www.necesitomas.com
187
Ya sé Excel, pero necesito más
Para los datos que no se puedan agrupar automáticamente, siempre podemos
seleccionar a mano los elementos que queremos que formen parte de un grupo y
elegir en el menú contextual la opción agrupar, con lo que crearemos un nivel de
agrupación a la medida de nuestras necesidades, aunque con los inconvenientes de
todo proceso manual, puesto que cuando tengamos nuevos datos habrá que
agruparlos a mano.
Un problema presente hasta la versión 2003 inclusive a la hora de agrupar por
fechas, cuando los datos de origen estaban en un rango de Excel, es que todas las
celdas de ese campo debían contener una fecha, lo cual es lógico, pero no podían
estar en blanco, lo cual no es tan lógico. En este último caso, Excel no reconocía el
campo como fecha y no permitía la agrupación por periodos de tiempo.
Si la causa del problema consistía en que se había definido como rango de origen
para la tabla dinámica un área mayor que los datos que se tenían realmente, por
ejemplo para tener en cuenta la futura adición de nuevos registros, debía soslayarse
www.necesitomas.com
188
Ya sé Excel, pero necesito más
esta limitación ajustando el rango origen de datos de la tabla dinámica exactamente
a las celdas con datos, sin incluir celdas vacías.
Si el origen del problema era que no conocíamos algunas fechas para los datos del
rango, no había nada que hacer salvo agrupar los datos a mano.
En la versión 2007 sí se reconoce como campo de fecha unos datos que, estando en
Excel, contienen sólo fechas aunque presenten alguna celda vacía entre medias y
permite, por tanto, la agrupación por periodos de tiempo.
Tras la agrupación aparece un nuevo campo con los grupos creados, disponible en
la tabla dinámica igual que cualquier otro campo, para emplearlo como etiqueta de
filas o de columnas, como filtro de informe, e incluso es posible resumirlo; lo
dicho, un campo más.
Sorprendentemente, los grupos de fechas no son fechas, por ejemplo al agrupar por
años, meses y días, todas los datos de fecha 1 de enero de 2007 se agruparían
primero en el año 2007 (número) y dentro de este año en el mes “ene” (texto) y
dentro de este mes en la fecha “01-ene” (texto). Debe tenerse especial precaución
con esto, fundamentalmente si tenemos campos calculados que operan con las
fechas, porque estarían operando con un texto.
Mostrar y ocultar detalles
Otra posibilidad interesante que ofrece una tabla dinámica es la de mostrar y
ocultar parte de la información, expandiendo o contrayendo un determinado grupo
o un campo completo. En el menú contextual sobre un campo o un valor de un
campo, aparecen las opciones de expandir y contraer.
Podemos hacer simplemente doble clic con el ratón sobre el elemento que
queramos expandir para que se muestren los datos. Si podemos expandir varios
campos, Excel mostrará un cuadro de diálogo preguntándonos qué información de
detalle queremos desplegar.
www.necesitomas.com
189
Ya sé Excel, pero necesito más
Si tenemos varios niveles de agrupación en la tabla, en las opciones de la tabla
podemos elegir que se muestren o no unos botones (con los símbolos + y -) para
expandir y contraer la información.
Ocultar y mostrar parte de la información nos ayuda a centrar la atención sobre los
datos que nos interesan y queremos analizar.
www.necesitomas.com
190
Ya sé Excel, pero necesito más
Al cambiar la disposición de la tabla dinámica, al expandir campos o al
incluir nueva información, la tabla cambiará de tamaño, así que comprueba
que no tengas nada escrito en la hoja que pueda ser sobrescrito por la tabla.
Si mostramos los detalles de un valor resumido del cuerpo de la tabla (desde el
menú contextual, o haciendo doble clic sobre el valor) se creará una nueva hoja con
los datos que han generado ese valor resumen.
Campos calculados
 Menú contextual>Fórmulas>Campo calculado
Herramientas de tabla dinámica>Opciones>Herramientas>Fórmulas>Campo
calculado
Además de los campos originales de nuestros datos, podemos generar campos
nuevos calculados a partir de fórmulas que empleen como argumentos los campos
existentes. En nuestro ejemplo podemos definir un campo que calcule la diferencia
entre la fecha de pago y la fecha de la factura, para luego conocer cuál ha sido el
desfase medio en los pagos.
No emplees en campos calculados fechas que hayas agrupado.
www.necesitomas.com
191
Ya sé Excel, pero necesito más
Ten precaución con la manera en que la tabla dinámica calcula los totales de los
campos calculados, porque no siempre lo que te parece obvio es lo que Excel va a
calcular.
Elementos calculados
 Menú contextual>Fórmulas>Elemento calculado
Herramientas de tabla
dinámica>Opciones>Herramientas>Fórmulas>Elemento calculado
Dentro de un campo que se utilice como rótulo de fila o de columna, pueden
generarse elementos que operen con los valores correspondientes a ese rótulo. Por
ejemplo, en el caso de tener nuestros datos en diferentes categorías, podemos crear
un elemento calculado que proporcione resultado de dos categorías juntas.
www.necesitomas.com
192
Ya sé Excel, pero necesito más
Los elementos calculados también se consideran a la hora de hallar los
totales. Presta atención para no considerar los datos dos veces, en el elemento
original y en el elemento calculado.
Puede darse la circunstancia de que varios elementos calculados deban aplicarse en
una misma celda, por ejemplo porque tenemos elementos calculados tanto en los
rótulos de filas como en los de columnas. En este caso se aplicará la última fórmula
que aparezca en la lista de Orden de resolución de elementos calculados. Desde
este cuadro de diálogo puedes establecer el orden en que estos cálculos se
realizarán, para que proporcionen el resultado que buscas.
www.necesitomas.com
193
Ya sé Excel, pero necesito más
Filtro de informe
Otro concepto a tener claro es el de filtros de informe. Es como si tuviésemos una
dimensión adicional para organizar la información, aparte de las filas y columnas.
Este filtro de informe, también llamado página del informe, permite mostrar sólo la
información de los datos que cumplen el criterio del filtro. En la versión 2007 es
posible incluso filtrar por varios elementos simultáneamente.
En el ejemplo se han filtrado los datos para mostrar sólo aquellos que corresponden
al año 2006.
www.necesitomas.com
194
Ya sé Excel, pero necesito más
Configuración de la tabla
Dentro de las opciones de configuración de la tabla dinámica, quiero destacar
algunos aspectos para ayudar a comprender mejor las posibilidades existentes.
La presentación del cuadro de diálogo con las propiedades de la tabla ha cambiado
en esta versión. Las más importantes de estas opciones ya aparecían en las
versiones anteriores, si bien amontonadas en una única pestaña.
En la pestaña de Diseño y formato podemos especificar qué valor mostrar en caso
de que se produzca un error al calcular los resúmenes. Si en nuestros datos tenemos
ceros, puede que al calcular los resúmenes como porcentajes respecto de los ceros
aparezcan errores de división por cero. Si en nuestros datos tenemos celdas con
errores, éstos se vendrán también a la tabla dinámica. Aquí podemos indicar que
los errores aparezcan como celdas en blanco o con un texto explicativo.
Análogamente, podemos indicar cómo mostrar las celdas vacías.
www.necesitomas.com
195
Ya sé Excel, pero necesito más
En la pestaña Totales y filtros, podemos activar si queremos que se calculen totales
generales por filas y por columnas, aunque tal vez esté más claro al seleccionarlo
directamente desde la pestaña diseño, dentro del grupo de herramientas de tabla
dinámica.
En la pestaña Mostrar es donde se puede elegir si queremos que nuestra tabla
dinámica funcione con el método clásico, esto es arrastrando los campos sobre la
tabla directamente, en vez de sobre los cuadros del panel de tareas.
www.necesitomas.com
196
Ya sé Excel, pero necesito más
En la pestaña Impresión estableceremos las opciones para repetir títulos y etiquetas
de filas en cada hoja impresa, para facilitar la lectura.
Por último, en la pestaña Datos disponemos de la posibilidad de guardar los datos
de origen con el libro o no hacerlo. Almacenar los datos con la tabla dinámica hace
que nuestro archivo aumente de tamaño de manera considerable, claro que el
www.necesitomas.com
197
Ya sé Excel, pero necesito más
tamaño no es el único factor a tener en cuenta, pues dependerá también de las
dificultades que podamos tener a la hora de volver a conectar con los datos para
actualizarlos, por la conexión, por la velocidad, por la disponibilidad o por
cualquier otro motivo.
Si prevés que no vas a tener problemas para actualizar los datos desde el
lugar donde se encuentren, es recomendable no almacenar los datos de la
consulta con la tabla dinámica, para no aumentar el tamaño de archivo de tu
libro inútilmente.
Varias tablas dinámicas con los mismos datos
Es muy frecuente tener que realizar varios resúmenes diferentes de los mismos
datos. La tabla dinámica almacena la conexión con los datos, así como las
combinaciones de los datos, los campos y elementos calculados, la agrupación de
los campos, etc.
Si cada vez que necesites hacer un resumen creas una nueva tabla dinámica desde
el principio, aparte de que se consuman más recursos del ordenador, repetirás los
mismos pasos innecesariamente, volviendo a definir lo que ya tenías definido.
Además, cuando quieras actualizar los datos, tendrás que ir por cada una de tus
tablas dinámicas para actualizarlas, con lo que el ordenador también repetirá la
acción de tener que leer los datos.
A partir de una misma tabla dinámica, podemos mostrar la información resumida
de diferentes maneras en varios lugares del libro.
www.necesitomas.com
198
Ya sé Excel, pero necesito más
Es posible copiar toda la tabla y pegarla en otro lugar del libro. Es posible copiar la
hoja entera. En estos casos tendremos varios resúmenes, pero que se alimentan de
una única tabla dinámica, por lo que no se ocupa memoria innecesariamente, y
cuando se cargan los datos para actualizar la información, se actualizan todos los
resúmenes a la vez.
Gráfico dinámico
La misma información que se muestra numéricamente como un resumen de tabla
dinámica, puede representarse mediante un gráfico “dinámico”. Podremos elegir
qué campo utilizar como eje de categorías, como serie, como valor. El modo de
hacerlo es similar a como se hace con un informe de tabla dinámica.
Dependiendo del tipo de gráfico será posible representar con más o menos éxito, de
una forma más o menos clarificadora, el resumen de los datos.
www.necesitomas.com
199
Ya sé Excel, pero necesito más
Análisis “y si…”
Supón que ya hemos elaborado un modelo sofisticadísimo para resolver cierto
problema, entonces llegará alguien y nos preguntará ¿y si aquí en vez de un 2 fuese
un 3, qué resultado obtienes?¿y si pones un 4? No, me gustaba más el 3. Hazme
una comparativa con esos valores para tomar una decisión.
Seguramente te has visto más de una vez en esta situación.
A falta de otro nombre mejor, a este estudio para ver cómo varían nuestros
resultados cuando asignamos diferentes valores a los datos de partida se le llama
análisis “Y si”, aunque a mí me suena mejor con algo más de suspense: “y si…”
No estoy pensando en una simple fórmula, aunque también puede estudiarse de la
misma manera, estoy pensando en un modelo que puede ser tan complicado como
queramos. Nuestro modelo puede ser los Presupuestos Generales de Estado, en
función del precio del barril de crudo y del cambio Euro-Dólar, por poner un
ejemplo.
Para evitar tener que repetir la hoja donde están nuestros cálculos una y otra vez
cambiando únicamente unos pocos parámetros, Excel incorpora unas herramientas
que recalculan el modelo completo asignando los valores que le indiquemos a los
parámetros, y mostrando en forma resumida los resultados para las diferentes
situaciones calculadas.
Para el caso en que queramos estudiar cómo varían múltiples resultados en función
de un único parámetro, y para el caso de estudiar cómo varía un único resultado en
función de dos parámetros, Excel ofrece las tablas de una y dos variables
respectivamente.
Para el caso en que queramos estudiar cómo varían diferentes resultados
modificando varios parámetros, Excel permite almacenar cada combinación de los
parámetros como un escenario, pudiendo generar de forma sencilla un informe
resumen de los escenarios creados.
www.necesitomas.com
200
Ya sé Excel, pero necesito más
Tablas de 1 y 2 variables
 Datos>Tabla
Datos>Herramientas de datos>Análisis y si>Tablas de datos
Cuando queremos calcular una función cuyo valor sólo depende de una o dos
variables, Excel nos ofrece la posibilidad de representar en una tabla el resultado de
dicha función para diferentes valores de los parámetros.
Para el caso en que tengamos dos variables, en la esquina superior izquierda del
rango que ocupará la tabla de datos pondremos la fórmula que queremos calcular;
en la fila superior, a la derecha de esta celda, los valores que queremos que adopte
uno de los parámetros, mientras que la columna de la izquierda, debajo de la
fórmula, contendrá los valores del segundo parámetro.
Si el resultado que buscamos no es una fórmula que se calcula en una celda, sino
que es el final de un proceso más elaborado, que recorre diferentes celdas, con
diferentes fórmulas, lo que se puede poner en esta esquina superior izquierda es
una referencia a la celda que contiene el resultado final del cálculo.
En el siguiente ejemplo calcularemos el área de un grupo de barras de acero en
función de su diámetro y del número de barras. Crearemos una tabla de datos
donde se calcularán las áreas para diferentes diámetros (en la fila superior) y
diferente número de barras (en la columna izquierda).
Antes de ejecutar esta instrucción debemos seleccionar el rango que ocupará la
tabla, incluidas la fila y columna donde están la fórmula y los valores para los que
queremos evaluarla. A continuación ejecutamos el comando tabla de datos y
aparecerá un cuadro de diálogo para que le indiquemos qué celda del modelo es la
que se sustituirá por los valores que hemos dispuesto en la fila superior de la tabla,
y qué celda del modelo se sustituirá por los valores que hemos escrito en la primera
columna de la tabla de datos. Como tantas otras veces, los nombres aclaran la
lectura de las referencias.
www.necesitomas.com
201
Ya sé Excel, pero necesito más
Sólo una precaución: las celdas que indiquemos como parámetro de entrada
de fila y columna deben estar en la misma hoja donde vamos a crear la tabla
de datos.
Al pulsar el botón aceptar, el área que habíamos seleccionado se rellenará con los
valores que adopta la fórmula para las combinaciones de los parámetros de filas y
columnas.
Para dar un aspecto más pulcro, puedes ocultar la fórmula de la esquina
dando a la fuente el mismo color que el relleno de la celda.
www.necesitomas.com
202
Ya sé Excel, pero necesito más
La tabla de datos obtenida es una matriz, por tanto no pueden modificarse las
celdas independientemente. Esta matriz incluye únicamente los resultados, pero no
la fórmula ni los valores de los parámetros.
Si después de creada la tabla modificamos los valores de los parámetros, la tabla se
recalculará para estos nuevos valores.
Para el caso de funciones de una sola variable, el proceso de generación de una
tabla de datos es similar al caso anterior de dos variables, pero como ahora sólo
utilizamos un parámetro nos queda la otra dimensión de la tabla libre, que puede
emplearse para representar el resultado de más de una función simultáneamente, si
bien todas ellas han de depender de la misma variable.
En el siguiente ejemplo se muestran diferentes fórmulas calculadas a partir del
radio de un círculo, creándose una tabla de datos de una variable, en este caso el
radio, que calculará las fórmulas para diferentes valores del mismo anotados en la
fila superior.
Seleccionaremos el área que contiene las fórmulas y los valores del parámetro con
el que se calcularán. En este caso la esquina superior izquierda no se utiliza.
www.necesitomas.com
203
Ya sé Excel, pero necesito más
Es posible también poner las funciones en la fila superior y los valores del
parámetro en la columna izquierda. En este caso, en el cuadro de diálogo para crear
la tabla, habría que indicar que nuestra celda de entrada para el parámetro se
encuentra en la columna.
Escenarios
 Herramientas>Escenarios
Datos>Herramientas de datos>Análisis Y si>Administrador de escenarios
Cuando necesitamos estudiar cómo varía nuestra hoja al modificar varios
parámetros; cuando tenemos que realizar hojas de cálculos repetitivos, que se
diferencian entre sí únicamente en que varían unos cuantos valores; estamos
hablando de escenarios.
Podemos definir multitud de escenarios para una hoja de cálculo. Excel almacena
en el escenario los valores de las celdas que definamos como cambiantes, no
almacena toda la hoja. Al mostrar un escenario, Excel aplicará los valores
guardados a las celdas para las que se definió el escenario, el resto de celdas que no
forman parte del escenario continuarán con los mismos valores que tuviesen antes
de mostrar dicho escenario.
Al final del proceso de definición tendremos varios escenarios que representarán
diferentes valores de los datos de entrada. Aparte de poder activar cada uno de los
escenarios almacenados para mostrarlo en la hoja, lo que resulta realmente útil es la
posibilidad de generar un resumen de los mismos de forma automática, de manera
que seamos capaces de ver agrupados qué valores de los datos de partida se han
considerado en cada escenario y qué valores adoptan en cada caso las celdas de
resultados que nos interesan.
Desde el formulario de definición de un escenario nuevo, indicaremos un nombre
para el mismo. Indicaremos qué celdas se almacenarán en el escenario. Podemos
www.necesitomas.com
204
Ya sé Excel, pero necesito más
también agregar una descripción para aclarar o explicar qué representa esa
combinación de valores.
Para emplear escenarios y que luego no resulte un jeroglífico descifrar la
comparación entre ellos es prioritario asignar nombres a las celdas
cambiantes y a las celdas de resultados que se desea incluir en un resumen de
escenarios.
Resulta fundamental asignar nombres tanto a las celdas de datos de origen como a
las celdas de resultados, no por capricho, sino para poder entender el resumen de
los escenarios o el propio escenario en el formulario de administración. No es lo
mismo ver una referencia a una celda del tipo $B$17, que ver un nombre
descriptivo de la información que contiene esa celda.
A continuación se muestra un segundo formulario donde asignaremos valores a las
celdas cambiantes.
www.necesitomas.com
205
Ya sé Excel, pero necesito más
Podemos ir creando escenarios similares, con las mismas celdas cambiantes. Si
desde el formulario para asignar valores pulsamos “agregar”, volveremos al
formulario de creación de escenario para definir el nombre y las observaciones del
nuevo escenario, y desde ahí otra vez asignaremos valores, y así sucesivamente
hasta que hayamos definido todos los casos que nos interesen.
Como habrás comprobado, el proceso de creación de escenarios es manual, puesto
que está concebido para estudiar combinaciones puntuales de los datos de partida,
es decir, que no podemos indicarle a Excel que un primer parámetro puede adoptar
3 valores, un segundo parámetro puede adoptar 5 valores diferentes y un tercer
parámetro 8 valores diferentes, para que se creen automáticamente los escenarios
de las 120 combinaciones posibles. Este proceso, si se quiere hacer
automáticamente, debería realizarse mediante una macro. En el capítulo dedicado a
la programación de macros se incluye un ejemplo para crear escenarios de manera
automática (ver página 292).
Si tenemos libros similares con escenarios definidos, mediante el botón Combinar
del administrador de escenarios, podemos traer a nuestra hoja los escenarios
definidos en otra hoja del mismo libro, o de otro libro que tengamos abierto.
No todos los escenarios almacenados en una hoja tienen por qué tener las mismas
celdas cambiantes. Podemos tener escenarios diferentes para diferentes fines. A la
hora de resumirlos, hay que tener cuidado, pues el resumen considera todos los
escenarios definidos en la hoja. Si sólo queremos resumir una selección de ellos,
podemos utilizar una hoja auxiliar, vacía, para almacenar todos los escenarios de la
hoja mediante la opción Combinar (te recuerdo que un escenario sólo es unas
celdas con sus valores), luego eliminaremos de la hoja que contiene el modelo
aquellos escenarios que no queramos incluir en el resumen. Posteriormente,
podremos recuperar los escenarios desde la hoja auxiliar.
www.necesitomas.com
206
Ya sé Excel, pero necesito más
Los escenarios almacenan el valor de las celdas cambiantes como texto, así
que ten cuidado si trabajas con escenarios creados en un ordenador que
emplea un separador decimal distinto, porque puede que lo que aparentemente
son números sean considerado por Excel como textos.
Mediante el botón “mostrar” del administrador de escenarios, se aplican en la hoja
los valores guardados en el escenario seleccionado, mostrándose entonces la hoja
particularizada para los datos de dicho escenario, para verlo o para imprimirlo. En
la página 283 se incluye un ejemplo de macro para imprimir todos los escenarios
de una hoja.
Una vez definidos los escenarios tienes la mitad del trabajo hecho. Ahora falta la
parte más interesante, en la que Excel resume la información de los diferentes
escenarios, bien generando un resumen en una nueva hoja, bien mediante una tabla
dinámica.
Para resumir los escenarios, habrá que indicar qué celdas contienen los resultados
que queremos reflejar en el resumen, y el tipo de informe a generar.
Las celdas de resultados deben estar en la misma hoja donde se han definido
los escenarios, aunque en los cálculos realizados entre medias haya
referencias a otras hojas.
www.necesitomas.com
207
Ya sé Excel, pero necesito más
Para cualquiera de los tipos de informe, se insertará una nueva hoja en el libro, con
la información del resumen de los escenarios.
En las siguientes figuras se muestra un detalle de los rótulos de un resumen de
escenarios sin haber empleado nombres en las celdas y en el caso de haberlos
utilizado. Espero haber despejado cualquier duda.
¿Por qué el resumen de escenarios está con los datos en columnas, en vez de en
filas? El resumen resulta más ancho que largo, que es como se debieron quedar
quienes programaron esto, con lo que en cuanto tenemos unos pocos escenarios ya
empieza a no leerse cómodamente. Aparte de que, en las versiones anteriores de
Excel, esto supone además que no pueden resumirse más de 253 escenarios, porque
no caben en la hoja.
Si tienes muchos escenarios, muchos parámetros, o quieres reorganizar la forma de
resumir los escenarios, pensarás que decantándote por un resumen de tipo informe
de tabla dinámica lo tendrás resuelto. Pues no. La tabla dinámica resumen de
escenario no permite agrupar los resultados por los datos de partida, ya que no los
www.necesitomas.com
208
Ya sé Excel, pero necesito más
incluye en la tabla dinámica, solamente aparece el nombre del escenario y los
resultados.
Sería realmente útil que incluyese, como campos de la tabla dinámica, las celdas
cambiantes de los escenarios para poder agrupar los resultados por sus valores. A
ver si para la próxima versión de Excel hay suerte.
Bueno, si lo que necesitas es resumir con una tabla dinámica según los datos de
partida, en unos pocos pasos puedes solucionarlo. Primero genera un resumen
convencional, luego copia este resumen y pégalo transpuesto en otra hoja para que
los datos estén en filas y no en columnas, elimina las columnas en blanco y
resúmelo con una tabla dinámica. Ahora sí puedes agrupar los resultados según los
datos de origen.
Te sugiero que desactives en la tabla dinámica los totales generales así como los
subtotales de filas y columnas. Presta también atención a la función empleada para
resumir la información, porque la suma no siempre es lo más conveniente.
www.necesitomas.com
209
Ya sé Excel, pero necesito más
Resolver problemas
Cálculos iterativos
 Herramientas>Opciones>Calcular
Botón Office>Opciones de Excel>Fórmulas>Opciones de cálculo
Normalmente, las hojas de cálculo que creamos son capaces de resolver las
funciones en un solo paso de cálculo, pero en ocasiones esto no es suficiente para
solucionar nuestro problema, por ejemplo porque el resultado de una celda se
emplea para calcularse a sí misma.
El programa, de hecho, avisa de que se ha producido un error de referencia
circular, entendiendo que lo más probable es que te hayas equivocado a la hora de
introducir las fórmulas, pero ¿qué ocurre si necesitamos calcular una fórmula de
manera iterativa, esto es, calculándola varias veces hasta alcanzar la solución?
En primer lugar, debemos activar para nuestra hoja la opción de cálculo iterativo,
indicando al programa las condiciones para detener el proceso y no estar
indefinidamente calculando. Estas condiciones son el número máximo de
iteraciones y la tolerancia de la solución, lo que llama cambio máximo.
Si la diferencia entre una pasada del cálculo y la anterior es inferior al valor del
cambio máximo especificado, el cálculo se detendrá. Si se alcanza el número
máximo de iteraciones, el cálculo también se detiene con el valor de la última
iteración.
Dependiendo del caso, de lo que varíen los valores en cada iteración y de lo lejos
que nos encontremos de la solución, el número necesario de iteraciones para llegar
a la solución será diferente.
Del mismo modo, el valor del cambio máximo especificado deberá estar en
consonancia con el orden de magnitud de los valores con que estemos operando. Te
recuerdo que Excel opera con números que tienen quince cifras, así que no será
capaz de encontrar una solución del orden de 1020 con un cambio máximo de 10-4,
porque tenemos 24 dígitos entre uno y otro.
No tomes los valores por defecto del programa como inamovibles. Puede que
no sean válidos para tu caso.
www.necesitomas.com
210
Ya sé Excel, pero necesito más
Para ilustrar esto con un ejemplo, supongamos que queremos calcular la media de
unos datos, pero descartando los valores más bajos, fijando el criterio de considerar
como no válidos los datos inferiores al 70% de la media.
El proceso iterativo consistiría en calcular la media de todos los valores, calcular el
70% de esa media para fijar el límite de validez. En un segundo paso volvemos a
calcular la media, pero sólo de los valores iguales o superiores a límite anterior.
Calculamos el 70% de esta segunda media para fijar el nuevo límite, y así
sucesivamente hasta que en alguno de estos pasos todos los valores quedasen ya
por encima del límite inferior.
La fórmula a poner en la celda donde calcularemos la media de los valores válidos
sería de la siguiente manera:
=PROMEDIO.SI(Datos;”>=” & 0.7*estamismacelda)
Donde he llamado “estamismacelda” a la celda donde se escribe esta fórmula, es
decir, la fórmula se hace referencia a sí misma, que es lo que fuerza a realizar el
cálculo iterativo.
La referencia a la celda no tiene que estar necesariamente en la misma celda, puede
generarse una referencia circular si desde una celda nos referimos a otras que a su
vez vuelven a referirse a la primera.
Si el proceso iterativo no converge, Excel para de calcular tras haber
completado el numero máximo de iteraciones que hayas especificado en las
opciones del programa. Es decir, que aunque Excel termine de calcular, no
significa que haya llegado a una solución. No está de más volver a calcular
[F9] para asegurarte de que con más iteraciones no varían los resultados.
www.necesitomas.com
211
Ya sé Excel, pero necesito más
Buscar Objetivo
 Herramientas>Buscar objetivo
Datos>Herramientas de datos>Análisis Y si>Buscar Objetivo
Excel no resuelve algebraicamente ecuaciones, pero ofrece una utilidad para
resolverlas numéricamente, que permite obtener una de las posibles soluciones (si
es que hay más de una) de un modelo con una incógnita.
Busca el objetivo de un modelo, no sólo de una ecuación, porque resuelve la hoja
de cálculo variando el valor de una celda, hasta conseguir que otra celda adopte un
valor que nosotros fijamos. Entre medias de estas celdas se pueden realizar todas
las operaciones que queramos, desde una simple función hasta el modelo de
cálculo más sofisticado que puedas imaginar, recordando que resuelve el sistema
en función de una única variable.
No entiendo muy bien la traducción que han hecho de este formulario, que siempre
me hace dudar sobre dónde poner la incógnita y dónde la celda con el valor que
quiero alcanzar. Creo que lo que me despista es Para cambiar la celda, si lo
hubiesen traducido al español por algo así como Cambiando la celda, quedaría
mucho más claro.
Para obtener el resultado, Excel comienza la iteración por el valor que la celda
tiene actualmente. Si hay más de una solución, Excel encontrará la más próxima a
este valor inicial de la celda. Para encontrar las otras soluciones, habrá que
proporcionar a Excel otros valores iniciales más cercanos a la solución buscada.
Vamos a plantear un ejemplo con la función parabólica y = x²-1, para la que
conocemos analíticamente los valores en los que se anula: +1 y -1.
www.necesitomas.com
212
Ya sé Excel, pero necesito más
Partiremos, para buscar objetivo, de un valor en la celda x igual a 2.
Como en tantas otras ocasiones, poner nombres a las celdas facilita la comprensión,
porque si hemos llamado “x” a la variable, e “y” al resultado de la función, todo
queda mucho más claro: queremos calcular la “x” que hace que la función “y” se
anule.
La búsqueda de objetivo encuentra una solución, la más próxima al valor de partida
que teníamos para x. Ha encontrado la solución +1, y Excel considera que ha
alcanzado una solución cuando se cumplen los criterios de convergencia para el
cálculo iterativo (ver página 210).
www.necesitomas.com
213
Ya sé Excel, pero necesito más
Si hubiésemos partido de un valor inicial de x igual a -2, la búsqueda de objetivo
habría localizado la solución x = -1.
¿Qué ocurre cuando la búsqueda de objetivo no encuentra una solución tras realizar
el número máximo de iteraciones establecido en la configuración del programa?
Pues aparece otro mensaje confuso: la búsqueda “puede no haber encontrado” una
solución; que no es lo mismo que: la búsqueda “no puede encontrar” una solución,
aunque esto último se parece más a la realidad de lo ocurrido.
www.necesitomas.com
214
Ya sé Excel, pero necesito más
Esto puede deberse a varios motivos. El primero es que no exista una solución.
Pero puede que sí exista y no se alcance con los criterios de convergencia
establecidos, bien porque el número de pasos a dar debe ser mayor, bien porque el
orden de magnitud de la solución es desproporcionado respecto del valor fijado en
el “cambio máximo” en las opciones para cálculos iterativos.
Por cierto ¿cómo sé cuántas soluciones tiene mi problema? La respuesta a esa
pregunta no la proporciona Excel.
Solver
Bastante más sofisticado que “Buscar Objetivo”, el complemento llamado Solver,
que no se carga por defecto al iniciar el programa (ver página 35) permite fijar
como objetivo un valor para una celda, o bien maximizar o minimizar dicha celda,
modificando simultáneamente varias celdas de las que dependa su valor y
cumpliendo asimismo una serie de restricciones establecidas en otras celdas.
Al igual que Buscar Objetivo, Solver sólo encuentra una solución, la más
próxima a los valores iniciales de las celdas.
www.necesitomas.com
215
Ya sé Excel, pero necesito más
Partiendo de la hoja donde tenemos nuestro modelo, al ejecutar el comando Solver,
aparece un formulario donde hemos de introducir, en primer lugar, nuestra celda
objetivo, y cuál es ese objetivo.
Para continuar definiendo el problema, indicaremos cuales son las celdas
cambiantes, las que se modificarán para buscar una solución. El botón Estimar
propone automáticamente como celdas cambiantes todas aquellas de las que
depende la celda objetivo.
En la parte inferior de este formulario es donde se muestran las restricciones
definidas para el problema, con unos botones para agregar nuevas restricciones o
editar las existentes.
En la definición de la restricción indicaremos la celda o rango sobre la que se
aplicará la restricción, un operador (menor o igual, mayor o igual, igual) y el valor
www.necesitomas.com
216
Ya sé Excel, pero necesito más
o la referencia a la celda con que se comparará. Aparte de estos operadores, se
dispone de dos opciones más: int, de integer, para indicar que el valor será un
número entero y bin, de binario, para indicar que el valor será cero o uno.
Una misma celda puede estar afectada por varias restricciones.
Desde la ventana de definición de los parámetros de Solver, se puede acceder a las
opciones de configuración del cálculo, mediante el botón Opciones.
En primer lugar se fijan los criterios de duración máxima del cálculo, en tiempo y
número de iteraciones. Transcurrido cualquiera de ellos, si no se ha alcanzado una
solución, se detiene el cálculo para preguntar si continúa calculando o se da por
terminado el proceso.
Los criterios de convergencia se establecen indicando una precisión para las
restricciones, una tolerancia alrededor de la solución y un valor para la
convergencia entre iteraciones sucesivas.
Cuanto más cerca se encuentren los valores de partida de las celdas
cambiantes del resultado final, menor será el tiempo de cálculo necesario
hasta alcanzar la solución.
www.necesitomas.com
217
Ya sé Excel, pero necesito más
Con la opción de Adoptar modelo lineal facilitaremos la resolución en aquellos
casos en que todas las relaciones entre las celdas sean lineales.
Mediante Asumir no negativos obligaremos a que las celdas cambiantes no sean
inferiores a cero, salvo para aquellas celdas en que se haya definido una restricción
específica fijando un límite inferior.
Activando Usar escala automática, se ajustan los órdenes de magnitud de los
valores de celdas cambiantes y objetivo.
Con la opción Mostrar resultado de iteraciones, cada vez que Solver encuentre una
solución, que puede no ser la buena, se muestran los resultados y se permite
guardar un escenario antes de continuar calculando en busca de más soluciones.
En los grupos de opciones de la parte inferior se establece el modo en que se
resolverá numéricamente el problema: en primer lugar se elige cómo se estimará el
valor del objetivo a partir de los valores actuales de las celdas cambiantes; se puede
elegir también el método utilizado para calcular las derivadas alrededor del
objetivo y de las celdas cambiantes; por último es posible indicar el método
numérico utilizado para hallar la solución.
Si vas a realizar varios tanteos o varias pruebas, puedes guardar modelos de
simulaciones de Solver para luego volver a utilizarlos más adelante, utilizando los
botones Guardar modelo y Cargar modelo situados en la parte derecha de este
formulario de opciones de Solver. Un modelo se guarda en celdas de la propia hoja,
y sólo almacena la celda objetivo, el valor de dicho objetivo y las restricciones. No
se guardan los resultados de la simulación sino la definición de la misma para
poder volver a calcularla.
Una vez completado el cálculo y obtenida la solución, se nos pregunta si queremos
mantener en las celdas cambiantes los valores obtenidos por Solver o si queremos
volver a los valores iniciales. Podemos también, desde este último cuadro de
diálogo, guardar un escenario con los valores de la celdas cambiantes, para su
utilización posterior.
Otro de los aspectos interesantes es la posibilidad de generar Informes de los
resultados obtenidos. Estos informes, para los que se crean hojas nuevas en el libro,
son de tres tipos: informe de respuestas, donde se incluye la descripción del
objetivo, de las celdas cambiantes y del cumplimiento de las restricciones; informe
de sensibilidad, donde se indica la pendiente del modelo respecto de cada celda
cambiante en el punto correspondiente a la solución obtenida (si fuese una función
www.necesitomas.com
218
Ya sé Excel, pero necesito más
se llamaría derivada parcial, como no es una función, se llama gradiente reducido);
por último, en el informe de límites, cuando se han definido límites para las celdas
cambiantes, tanto mediante restricciones como asumiendo valores no negativos en
las opciones de Solver, se muestran los valores inferior y superior de cada celda
cambiante y el valor del objetivo en cada caso.
Si no hay definida ninguna restricción para las celdas cambiantes, en el
informe de límites aparecerán errores #N/A
Si logras reducir tu problema a un único valor, podrás utilizar Solver para
resolverlo. Ahora tu preocupación será convertir el problema para expresarlo en
una sola celda. En el caso de dinero, está claro, maximizar los beneficios o
minimizar los gastos. En el caso de un almacén, minimizar las cantidades
www.necesitomas.com
219
Ya sé Excel, pero necesito más
almacenadas. En el caso de estar planificando unos trabajos con prisas,
minimizarás el tiempo total de ejecución. En el caso de proyectar una intervención
en un Parque Natural, minimizarás el impacto ambiental. En el caso del diseño de
un plan de evacuación de emergencia, maximizarás el número de personas
rescatadas con vida. En tu caso …
Por ejemplo, empleando Solver podemos ajustar una curva a una muestra de datos
por el método de los mínimos cuadrados, para ello nuestras celdas cambiantes
serán los coeficientes que definen la curva de ajuste, mientras que nuestro objetivo
será minimizar la suma de los cuadrados de las diferencias entre los valores reales
de la muestra de datos y los valores calculados con la curva ajustada, es decir,
minimizar la siguiente función {=SUMA((Ycalculada-Ydatos)^2)}, donde
Ycalculada e Ydatos son los nombres que he asignado al rango con los valores
calculados mediante la función de ajuste y al rango que contiene los datos
originales, respectivamente.
Solver no se inventa los modelos, simplemente resuelve el modelo que hayas
creado previamente, que no es poco. Tú defines el problema, Solver lo
resuelve.
Si quieres ver varios ejemplos de utilización de Solver, consulta el libro de
ejemplos llamado Solvsamp, que se incluye con la instalación de Office.
C:\Archivos de programa\Microsoft Office\Officexx\SAMPLES\
www.necesitomas.com
220
Ya sé Excel, pero necesito más
Facilitando el trabajo a los demás
Controles de formulario en tus hojas
 Barra de herramientas Formularios/Barra herramientas Visual Basic>Cuadro de controles
Programador>Controles>Insertar
Pensando en facilitar el trabajo a los que lleguen después para utilizar las hojas que
estás haciendo, el empleo de controles en la hoja puede simplificar el uso de la
misma. Además, puedes evitar la introducción de datos erróneos, permitiendo
elegir los valores de listas, o permitiendo cambiar los valores mediante barras
deslizantes empleando el ratón, en vez de tecleando.
La utilización de controles en la hoja evita tener que crear y programar formularios
en Visual Basic para Aplicaciones, siendo más que suficiente para la mayor parte
de los casos.
Los controles de formulario son objetos propios de Excel, se manipulan como otros
objetos que insertamos en la hoja, como una forma o una imagen, pero en la
configuración del formato del control, a la que se accede desde el menú contextual,
entre otras propiedades como el tamaño o el color de relleno, tenemos una pestaña
denominada Control con propiedades específicas para cada tipo de control y desde
donde podremos vincular su valor con el de una celda, o indicar el intervalo de
valores válidos para el mismo.
www.necesitomas.com
221
Ya sé Excel, pero necesito más
Con un control de número, o de barra de desplazamiento, aumenta o disminuye el
valor de la celda asociada al pulsar las flechas hacia arriba o abajo. Mediante
casillas de verificación puedes asignar valores verdadero o falso a la celda
asociada, según esté o no activada.
Disponemos también de listas y cuadros combinados para elegir entre una serie de
valores, sin tener que escribirlos.
Mediante los botones de opción, de los que sólo puede estar activado uno,
elegiremos el valor de la celda asociada, que será el número de orden del botón
seleccionado.
La vinculación con una celda es bidireccional, es decir, si cambia el valor del
control, cambia el valor de la celda, pero si cambias el valor de la celda, también el
control refleja ese cambio.
Por supuesto, puedes poner botones en la hoja que ejecuten una macro, con lo que
el usuario no tendrá que saber cómo se llama la macro que debe ejecutar,
simplemente apretará un botón. Para este caso, directamente desde el menú
contextual del botón podemos asignar una macro para que se ejecute al pulsarlo.
www.necesitomas.com
222
Ya sé Excel, pero necesito más
Para poder seleccionar y modificar un control, debe estar activo el modo
diseño.
Frente a los controles de formulario de Excel, existe otro tipo de controles que
podemos utilizar en las hojas, denominados ActiveX. Los controles ActiveX se
basan en la idea de que son independientes del programa que los utilice o del
lenguaje en que fueron programados. Están instalados en el equipo y cualquier
programa compatible con ActiveX puede utilizarlos y acceder a las propiedades
para configurarlos.
Al insertar un control ActiveX, las propiedades no se muestran en el formulario de
formato del objeto, sino que debemos activar la ventana propiedades, donde se
muestran las propiedades para el objeto seleccionado.
 Barra herramientas Visual Basic>Cuadro de controles>Propiedades
Programador>Controles>Propiedades
Desde este cuadro de propiedades podemos ajustar la posición, el tamaño, la celda
vinculada, si se imprimirá o no, etc., aquí están todas las propiedades del objeto.
www.necesitomas.com
223
Ya sé Excel, pero necesito más
Estos controles tienen asociados una serie de eventos, como hacer doble clic con el
ratón, para los que se pueden programar procedimientos, por ejemplo para ejecutar
una macro al hacer clic. El código asociado a estos controles estará en la hoja que
los contiene.
Aparte de los controles ActiveX que se muestran por defecto, podemos
acceder a la lista completa de controles instalados en el equipo para emplear el que
necesitemos en nuestro libro.
Los controles de formulario de Excel siempre estarán disponibles en un equipo
donde esté Excel instalado. Si utilizas controles ActiveX diferentes de los
proporcionados por Excel, tendrás que asegurarte de que en los equipos donde
vayan a utilizar el libro también los tengan instalados.
Proteger el libro
Cuando creas modelos en tus libros para que los utilicen otras personas, en algunas
ocasiones puede ser interesante impedir que los futuros usuarios alteren ciertas
partes “delicadas” del libro, especialmente en los casos en que solamente tienen
que particularizar algunos datos y, al calcularse el libro, todo lo demás se hace
automáticamente.
Dentro del formato de las celdas, tenemos una pestaña con opciones para proteger
las celdas. Aquí estableceremos si la celda estará bloqueada para impedir que
modifiquen su contenido o si se ocultará el contenido, en el caso de que sea una
fórmula, para que no sea visible en la barra de fórmulas y sólo veamos el resultado
de la misma.
Esta configuración de protección de las celdas se activará al proteger la hoja.
Mientras la hoja no esté protegida se podrá editar cualquier celda.
www.necesitomas.com
224
Ya sé Excel, pero necesito más
Al pegar formato, también se pegan las opciones de protección de las celdas
copiadas.
 Herramientas>Proteger>Proteger hoja
Revisar>Cambios>Proteger hoja
Al proteger la hoja aparece una lista de opciones que podemos permitir a los
usuarios (dependiendo de la versión habrá más o menos posibilidades disponibles).
Desde poder seleccionar las cedas bloqueadas, hasta permitir modificar, o no, los
escenarios existentes.
En caso necesario estableceremos una contraseña para poder desbloquear la hoja y
realizar nuevos cambios. Tal vez en la mayoría de los casos no sea necesaria una
contraseña, puesto que la simple protección impide la mayor parte de los errores
accidentales, que consisten en toquetear las cosas sin querer o sin darse cuenta.
Si sólo permitimos seleccionar las celdas desbloqueadas, al pulsar [Intro] o
[Tabulación] o desplazarnos con las flechas de dirección, la celda activa
pasará a ser la siguiente celda desbloqueada disponible en esa dirección.
www.necesitomas.com
225
Ya sé Excel, pero necesito más
 Herramientas>Proteger>Proteger libro
Revisión>Cambios>Proteger libro>Proteger estructura y ventanas
La protección de la estructura impide al usuario eliminar, mover o cambiar de
posición las hojas y por consiguiente impiden cualquier acción que genere hojas
nuevas, como resumir escenarios, mostrar datos de detalles de una tabla dinámica,
etc.. Tampoco se podrán grabar nuevas macros en un libro con estructura
protegida.
La protección de las ventanas del libro impedirá a los usuarios abrir o cerrar las
ventanas del libro, así como moverlas o cambiarlas de tamaño. Sí se puede, en
cambio, mostrar y ocultar las ventanas existentes.
Guardar como>Herramientas>Opciones generales
Respecto de la protección del archivo, en las opciones generales para el libro, a las
que se accede desde el cuadro de diálogo guardar como podremos establecer una
contraseña de apertura del libro y otra contraseña diferente para permitir la
escritura una vez el libro esté abierto. Puede establecerse cada una de estas
contraseñas independientemente de la otra.
www.necesitomas.com
226
Ya sé Excel, pero necesito más
Mediante la opción se recomienda sólo lectura, se mostrará un aviso al abrir un
libro para recomendar que se abra como sólo lectura, así recordamos al futuro
usuario que, si no tiene intención de realizar cambios, abriéndolo como sólo lectura
evitará posibles accidentes.
También disponemos de la posibilidad de realizar copias de seguridad de los
archivos, generando una copia de la última versión guardada, cada vez que
guardemos el archivo de nuevo. Estas copias se guardan en el mismo directorio del
archivo original, con extensión xlk.
Botón Office>Preparar>Cifrar documento
Finalmente, para aumentar la seguridad del documento, podemos encriptar el
contenido del archivo, para que solo sea legible por Excel si proporcionamos la
contraseña adecuada. Especialmente pensado para documentos de alto secreto y del
tipo “sólo para sus ojos”. Antes de abrir uno de estos archivos asegúrate de que no
hay nadie escondido mirándote.
Si ha habido piratas informáticos que han accedido a la información de los
servidores del FBI o a la tarjeta de crédito de Bill Gates, si no consiguen acceder a
tus documentos protegidos, o a ese papel arrugado donde tienes anotadas tus
contraseñas secretas, será porque nadie esté especialmente interesado en hacerlo.
www.necesitomas.com
227
Ya sé Excel, pero necesito más
Macros y Funciones
Excel permite la programación personalizada mediante el lenguaje Visual Basic
para Aplicaciones (VBA). ¿Qué quiere decir esto? pues que todo lo que realizas
manualmente con el programa puede hacerse automáticamente, explicándoselo a
Excel en este lenguaje, para que lo entienda. Si tienes que repetir los mismos pasos
varias veces, puedes dar instrucciones a Excel para que repita esas tareas por ti, y
no dudes que lo hará mucho más deprisa y, por supuesto, todas las veces igual, sin
olvidar ni un paso.
Lo primero y más importante que hay que tener bien claro es que no es necesario
saber programación para emplear macros que realicen tareas repetitivas. Excel
dispone de un grabador de macros que, una vez activado, va grabando todas las
acciones que se realizan en el programa. Cuando nos haga falta repetir las tareas
grabadas, simplemente ejecutaremos la macro. Programación cero.
El grabador de macros se ocupa de transcribir los pasos que vas dando a código
VBA. Este es el método más rápido para crear macros sencillas, posteriormente, si
es necesario, podrás retocar el código de lo que se acaba de grabar para ajustarlo
más a tus necesidades.
Puede que este lenguaje de programación no sea el mejor, informáticamente
hablando, puede que tenga bastantes limitaciones, puede que no sea el más rápido a
la hora de ejecutarse, pero a cambio tiene unas ventajas indudables: como su
nombre indica es básico, sencillo de aprender, lo cual nos facilita bastante su
aprendizaje a los que nos dedicamos indirectamente a la informática. Otra ventaja,
es que este lenguaje de programación se parece bastante a dar instrucciones al
ordenador en inglés con lo que, si sabes algo de inglés (muy poco) es más o menos
sencillo entender el código.
La otra gran ventaja es que algunos programas comerciales, además de los
fabricados por Microsoft, han optado por este sistema de programación, con lo que
resulta relativamente sencillo para alguien que sepa programar macros en Excel,
programar también macros en Corel Draw o en AutoCad, ya que el lenguaje es el
mismo, y sólo cambia el modelo de objetos de cada programa, con el que puede
hacerse referencia a cualquier funcionalidad del mismo. No tendrás que aprender
otro lenguaje, sólo tendrás que conocer cómo se llaman los objetos de esos
programas.
www.necesitomas.com
228
Ya sé Excel, pero necesito más
La programación de macros tiene sentido cuando las tareas son repetitivas, bien
porque se ejecuta muchas veces en distintos momentos, bien porque tenemos que
repetir los mismos pasos una vez tras otra. No hay que pensar que una tarea
repetitiva es la que se repite un millón de veces, yo cada vez tengo el listón más
bajo y si intuyo que se va a repetir más de dos veces aún lo dudo, pero si son diez
veces no lo pienso y grabo una macro. Todo depende de lo engorroso de las tareas
a repetir, de la posibilidad de equivocarte al repetir varias veces los mismos pasos y
de la práctica que vayas adquiriendo con la grabación / programación.
Otra posibilidad de la programación consiste en definir funciones personalizadas,
que se adapten a una necesidad específica, funciones que pueden utilizarse en la
hoja de cálculo del mismo modo que se emplean las funciones incorporadas por
Excel.
En mi experiencia, con todas las macros he ahorrado tiempo (en bastantes casos
muchísimo tiempo), desde las macros más sencillas hasta las más complicadas, las
que más tiempo me ha llevado programar y depurar. Es una inversión que merece
la pena.
La programación de procedimientos (macros y funciones) en Excel permitiría
escribir capítulos y capítulos, pero no es el objeto de este libro. En las páginas
siguientes simplemente se explica lo más básico del lenguaje de programación y se
incluyen unos ejemplos prácticos que te ayudarán a entenderlo un poco mejor y
además, seguro que te resultarán de utilidad.
Ten confianza en ti
Por motivos de seguridad frente a virus programados como macros dentro de
archivos de Office, por defecto la ejecución de macros está deshabilitada.
Dependiendo de la versión de Excel, puede que esté deshabilitada incluso la
ejecución de macros del libro de macros personal.
Como tú vas a programar macros necesitarás decirle a Excel que confíe en las
macros que has creado, lo cual se puede hacer porque confiarás en todos los libros
con macros que se encuentren en ciertos lugares de tu ordenador o de la red, o
también se puede hacer confiando en las macros que vienen firmadas digitalmente,
por ejemplo por ti.
www.necesitomas.com
229
Ya sé Excel, pero necesito más
 Herramientas>Macro>Seguridad
Programador>Código>Seguridad de macros
En las versiones anteriores, dentro de las opciones de seguridad para macros se
podía elegir entre varias opciones, deshabilitar todas las macros, habilitarlas todas,
o preguntar al abrir un libro con macros qué hacer al respecto.
En la versión 2003 se añade el concepto de centro de confianza, con el que
podemos indicar una serie de ubicaciones de cuyo contenido nos fiamos, por
ejemplo la carpeta “Mis Trabajos” del disco duro. Los archivos que se encuentren
en esta ubicación y contengan macros no serán bloqueados.
Para firmar macros y que en otros equipos puedan indicar que se fían de lo que esté
firmado por ti, necesitarás un certificado expedido por algún organismo que se
dedique a estos temas.
Como parte del paquete Office se incluye una utilidad para firmar digitalmente las
macros que se van a utilizar en el mismo equipo, con lo cual puedes tener un
certificado que valdrá para ti, pero no para los demás, pues cualquiera podría crear
un certificado de estos con el nombre de otra persona.
Supongo que todos estos temas de las firmas digitales, contraseñas, etcétera,
tenderá a converger hacia un sistema común basado en el carnet de identidad
digital o en las huellas dactilares o alguna otra característica por el estilo.
Lee esto antes de grabar una macro
 Herramientas>Macro>Grabar nueva macro
Programador>Código>Grabar macro
Antes de empezar a grabar una macro piensa qué celda quieres que sea la celda
activa, para empezar la grabación desde ese lugar.
www.necesitomas.com
230
Ya sé Excel, pero necesito más
Elige un buen nombre para tu macro, procura que no sea un enigma. Puedes utilizar
el cuadro Descripción para agregar una explicación que aclare la finalidad de la
macro.
Según la utilización que vayas hacer de la macro posteriormente, debes elegir
dónde se guardará la macro que grabes, si en el libro actual o en tu libro de macros
personal, que estará disponible cada vez que abras Excel (ver página 24). Aunque
más adelante también lo podrás hacer, puedes asignar una combinación de teclas
personalizada para ejecutar la macro.
Durante la grabación de la macro piensa si deseas emplear referencias absolutas o
relativas a la celda activa en cada momento .
 Barra detener grabación>Referencia relativa
Programador>Código>Usar referencias relativas
Si quieres escribir un valor en la celda A2, tendrás que grabar la macro con
referencias absolutas, mientras que si lo que quieres es escribir un valor en la celda
de debajo de la celda activa, tendrás que activar la opción para utilizar referencias
relativas.
Antes de terminar de grabar la macro piensa qué celda quieres que sea la celda
activa tras la ejecución de la macro, principalmente por si la vas a ejecutar varias
www.necesitomas.com
231
Ya sé Excel, pero necesito más
veces seguidas, en cuyo caso interesará terminar en una celda que sea el punto de
partida para la siguiente ejecución de la macro.
 Herramientas>Macro>Macros
Programador>Código>Macros
Para ejecutar una macro, simplemente elígela en el formulario de macros y pulsa el
botón Ejecutar. En este mismo formulario, desde el botón Opciones podrás asignar
una combinación de teclas para ejecutar cada macro.
Entre las opciones de personalización de la barra de herramientas puedes agregar
un botón para ejecutar tu macro.
 Herramientas>Personalizar>Comandos>Macros
Opciones de Excel>Personalizar>Comandos disponibles en>Macros
www.necesitomas.com
232
Ya sé Excel, pero necesito más
VBA en dos palabras
El concepto fundamental de VBA es que puedes referirte a cualquier “cosa” de
Excel siguiendo la jerarquía de objetos que han establecido los programadores de
Microsoft para este programa.
Imagina que no puedes manejar ni el ratón ni el teclado, con lo que tienes que ir
dictando a tu compañero de al lado cómo ir trabajando con tu libro. Tienes que ir
paso a paso siguiendo la jerarquía de objetos del programa, porque no es un tipo
muy brillante, aunque es muy rápido y meticuloso.
Por ejemplo, para escribir el número 3 en la celda A1 de la hoja llamada hoja1 del
libro llamado libro1, seguiríamos la siguiente descripción (empezando por lo
general, hasta llegar a lo particular):
Primero la aplicación, Excel. Entre todos los libros abiertos indicamos el que se
llama “Libro1”. Dentro de las hojas de este libro la que se llama”hoja1”. En esta
hoja, nos fijamos en el rango “A1”, que es la celda A1. Por último, de este rango
me fijo en su valor y lo hago igual a tres.
Ahora se lo vamos a decir a nuestro amigo en Inglés, separando cada parte con un
punto para no confundirlo:
Application.Workbooks(“Libro1”).Worksheets(“hoja1”).Range(“A1”).Value = 3
Pues con esto ya entiendes el lenguaje que emplea Excel. Como ves no es muy
difícil, basta con saber tanto inglés como los indios de las películas del Oeste y
tener un poco claro el concepto de la jerarquía, separando cada paso con un punto.
La jerarquía del programa viene descrita en lo que se denomina el modelo de
objetos (busca en la ayuda de Visual Basic “objetos de Microsoft Excel”) y es más
o menos sencilla de entender, puesto que es similar a describir de palabra cómo
llegar desde el nivel superior, paso a paso, hasta el elemento que nos interese.
No es necesario nombrar siempre todos los pasos hasta llegar al objeto al que
quieres referirte. Si no indicas Application se entiende que la aplicación a la que
te refieres es Excel; si no indicas a qué libro te refieres, se sobreentiende que te
refieres al libro activo; si no indicas ninguna hoja, se sobreentiende que estás
refiriéndote a la hoja activa. Es decir, que si simplemente escribimos
Range(“A1”) Excel implícitamente supone que estamos hablando de la celda A1
de la hoja activa del libro activo que tenemos en Excel en este momento.
www.necesitomas.com
233
Ya sé Excel, pero necesito más
Como ya estarás deduciendo, el programa y todo lo que contiene está formado por
objetos , todo son objetos: la aplicación, un libro, las hojas, los gráficos, una
celda, un comentario, una tabla dinámica, todo. Cada uno de estos objetos tiene
propiedades, métodos y eventos.
Las propiedades
definen al objeto, por ejemplo el nombre de una hoja, el color
de una celda, el número de hojas que hay en un libro, la columna a la que pertenece
una celda, el margen inferior de la configuración de impresión de una hoja…
Desde nuestros procedimientos podemos acceder a estas propiedades y cambiar su
valor.
Los métodos
realizan una acción con el objeto, por ejemplo las hojas del libro
tienen un método que añade una nueva hoja al libro, una celda tiene un método que
borra su contenido, un libro tiene un método que lo activa, un rango tiene un
método que lo selecciona… Desde nuestros procedimientos podemos ejecutar estos
métodos, con los argumentos necesarios en cada caso, para que Excel realice las
acciones correspondientes.
Por último, cada objeto tiene asociados unos eventos , que son situaciones que
suceden con los distintos elementos del programa, por ejemplo, al abrir un libro, al
pulsar un botón, al seleccionar un gráfico, antes de cerrar, antes de imprimir…
Excel detecta los eventos y podemos programar código para que se ejecute cada
vez que se produzca un evento determinado.
El entorno de programación
El editor de Visual Basic es el lugar donde programar tus macros. En este editor,
aparte de la ventana donde editar el código propiamente dicho, pueden mostrarse
otras ventanas que ofrecen información adicional sobre dónde estamos escribiendo
este código, propiedades de los objetos, valores de variables durante la ejecución
de programa para analizar su funcionamiento, …
www.necesitomas.com
234
Ya sé Excel, pero necesito más
El explorador de proyectos muestra los archivos que tenemos abiertos en Excel,
interpretados como proyectos de Visual Basic para Aplicaciones, esto es, como
elementos que contienen programación. Dentro de cada uno de ellos aparece una
serie de objetos: las hojas
del libro, así como el propio libro . Otros objetos
que puede tener nuestro libro-proyecto de programación son formularios
personalizados
, para interactuar con el usuario. Finalmente, podemos tener
módulos, que contienen exclusivamente programación, pueden ser módulos
normales
y módulos de clase , que sirven para definir tus propios objetos
personalizados, con sus propiedades, métodos y eventos.
www.necesitomas.com
235
Ya sé Excel, pero necesito más
Como ves, los procedimientos que programes pueden estar repartidos por varios
lugares de tu proyecto. El lugar en que programes dependerá del alcance que deba
tener tu procedimiento. Para programar código de respuesta a un evento, el código
debe estar contenido en el mismo lugar que el objeto que genera el evento, por
ejemplo, el código para los botones de un formulario debe estar en el formulario, el
código para ejecutarse al cambiar la selección de una hoja deberá estar en esa hoja.
Las macros y funciones que utilizarás en el libro se escriben en un módulo.
Desde el panel de propiedades podemos acceder a las propiedades del objeto
seleccionado en el editor: un módulo, una hoja, un libro, un control de un
formulario. Desde aquí puedes cambiar el nombre a un módulo, o puedes hacer que
una hoja del libro no sea visible.
Mediante el examinador de objetos podemos ver qué propiedades, métodos y
eventos tiene cada objeto definido. Si no recuerdas muy bien lo que estás
buscando, tal vez desde esta ventana puedas localizarlo.
www.necesitomas.com
236
Ya sé Excel, pero necesito más
En la ventana de código es donde se muestra el programa propiamente dicho. En la
parte superior de esta ventana hay dos listas desplegables, en la lista de la izquierda
aparecen los objetos disponibles dentro del objeto seleccionado, por ejemplo en un
formulario aparecerían todos los controles del formulario; en una hoja aparece la
hoja y los controles que hayamos colocado en esa hoja. En la lista de la derecha
aparecen los eventos disponibles para el objeto elegido en la primera lista; si en la
lista de la izquierda hemos elegido la opción General, a la derecha se muestra las
declaraciones del módulo y los nombres de los procedimientos ya programados.
En la parte inferior de la ventana de código tenemos dos botones, para elegir
si queremos ver los procedimientos de uno en uno, o ver todos los procedimientos
del módulo uno a continuación de otro.
A la hora de escribir el código, el editor va autocompletando las palabras mientras
escribes. Al pulsar [Ctrl][J] se despliega una lista de autocompletar con los objetos,
propiedades y métodos disponibles en cada momento. También aparecen en este
listado las constantes predefinidas. La opción para que se muestre automáticamente
esta lista se activa en:
Herramientas>Opciones>Editor>Lista de miembros automática
En el caso de utilizar funciones o métodos, se muestra un texto en pantalla con
información sobre los argumentos que utiliza esa función.
www.necesitomas.com
237
Ya sé Excel, pero necesito más
Con estas ayudas evitarás erratas al escribir, que se traducen en errores en la
ejecución del procedimiento, también evitarás tener que memorizar todas las
propiedades y métodos, o tener que estar continuamente recurriendo al examinador
de objetos.
Ya habrás comprobado que, para facilitar la lectura del código, el editor muestra
automáticamente de diferente color las funciones y comandos de VBA, así como
los comentarios, los errores de sintaxis, etc., y aunque los colores predeterminados
satisfacen todas mis expectativas artísticas, puede que desees configurar a tu gusto
el aspecto del editor:
Herramientas>Opciones>formato del editor
Si es importante comentar las celdas de tus hojas, más importante es comentar un
programa, para luego ser capaz de entenderlo si alguna vez tienes que volver a él
para retocarlo, corregirlo o mejorarlo.
Para añadir comentarios a tus programas utiliza una comilla simple. Lo que
escribas a continuación de esta comilla ' VBA entenderá que es un comentario.
Mientras editas el código, puedes disponer marcadores (Edición>Marcadores)
en las líneas que te interese, para poder llegar a ellas rápidamente desde cualquier
lugar del módulo. Las líneas marcadas aparecen con una señal azul en la barra
indicadora situada a la izquierda del código.
Los marcadores no se guardan con el archivo, están pensados para facilitar el
movimiento entre diferentes partes del código en una sesión de trabajo.
www.necesitomas.com
238
Ya sé Excel, pero necesito más
Depuración
Las cosas no suelen salir a la primera y casi siempre requieren realizar algún tanteo
previo para probar el funcionamiento de lo que llevamos hecho hasta el momento.
En el editor de Visual Basic disponemos de una serie de utilidades pensadas para
facilitar el trabajo de depuración de errores y comprobación del funcionamiento de
los procedimientos.
Depuración>Compilar
Mediante la compilación se comprueba la sintaxis de las instrucciones, así como la
declaración de variables. Los errores más simples se detectan al compilar el
proyecto.
Depuración>Paso a paso por instrucciones ([F8])
Con esta utilidad podemos ir ejecutando instrucción a instrucción el
procedimiento en donde se encuentre el cursor. La línea que se va ejecutando en
cada momento se señala de otro color para saber dónde nos encontramos. Para
ejecutar la instrucción y pasar a la siguiente debes pulsar [F8].
Combinado con las ventanas para obtener información de las variables y
expresiones de inspección definidas, permite ir evaluando si el procedimiento se
comporta de acuerdo a lo esperado o no.
Si realizamos algún cambio y queremos volver atrás durante esta ejecución paso a
paso, podemos establecer como instrucción siguiente la línea que queramos, bien
desde el menú contextual, bien desde el menú Depuración>Establecer instrucción
siguiente. También, desde el menú contextual del código, durante la ejecución paso
a paso, disponemos de la opción de ejecutar hasta la posición del cursor
[Ctrl][F8], si no queremos detenernos en cada línea.
Cuando desde nuestro procedimiento se llama a otro, también se ejecutaría paso a
paso este segundo procedimiento. Para controlar el modo en que se realizan estas
llamadas a otros procedimientos podemos elegir la opción “paso a paso por
procedimientos”
[Mays][F8], con lo que la llamada a otro procedimiento se
ejecuta como un único paso. Si nos encontramos dentro de un segundo
procedimiento y queremos terminarlo para volver al principal, elegiremos la opción
“paso a paso para salir”
[Ctrl][Mays][F8].
www.necesitomas.com
239
Ya sé Excel, pero necesito más
Para continuar la ejecución normalmente hasta el final, sin ir paso a paso, puedes
pulsar el botón de reproducción , o la tecla [F5]. Para detener la ejecución del
procedimiento puedes pulsar el botón de parada .
Depuración>Alternar punto de interrupción [F9]
Tenemos la posibilidad de establecer en nuestro código puntos de interrupción,
en los que la ejecución del programa se detendrá para que podamos estudiar la
situación. Una vez interrumpida la ejecución, nos encontraríamos en el modo paso
a paso desde esa instrucción.
Los puntos de interrupción se identifican al mostrarse con la línea de otro color y
con un punto gordo en la barra indicadora que hay a la izquierda del código. Si en
cualquier línea hacemos clic en la barra indicadora, se inserta/elimina un punto de
interrupción. Como es lógico, no podemos establecer puntos de interrupción en
líneas en blanco, ni en líneas que contienen exclusivamente un comentario.
Tampoco se puede situar un punto de interrupción en las sentencias de declaración
de variables o constantes, ni en las opciones del módulo.
Una vez tenemos la ejecución interrumpida o en el modo paso a paso, nos
interesará obtener información del estado del programa, como por ejemplo los
valores que tienen las variables, cuántas variables se están utilizando en el
procedimiento, qué procedimientos están abiertos actualmente, y cualquier otra
cosa que se nos pueda ocurrir para comprender cómo está trabajando el programa,
o cómo se espera que vaya a funcionar. Se accede a estas posibilidades desde el
menú Ver, o desde la barra de herramientas Depuración.
Mediante la ventana locales, podemos ver todas las variables a medida que se
van utilizando, con indicación del procedimiento al que pertenecen, el valor de
cada una de ellas, y el tipo de variable de que se trata.
Es posible definir expresiones para inspección, Depuración>Agregar inspección,
que se evalúan durante la ejecución del código. Desde el formulario de definición
de la expresión de inspección, podemos establecer que la ejecución del código se
interrumpa cuando esta expresión devuelva un valor verdadero, o cuando cambie
de valor. Por ejemplo, podemos interrumpir la ejecución cuando la variable k sea
igual a 15, para lo cual nuestra expresión de inspección será k=15, y activaremos la
opción de interrumpir cuando sea verdadero.
En la ventana inspección podremos ver los valores que adoptan todas las
inspecciones definidas.
www.necesitomas.com
240
Ya sé Excel, pero necesito más
Seleccionando una expresión o variable en el código con la ejecución
interrumpida, al pulsar el botón de inspección rápida se mostrará información sobre
el valor actual de dicha expresión.
Durante la ejecución podemos realizar también una inspección rápida de los
valores simplemente pasando el ratón sobre la variable o parte del código que nos
interese.
Para
ello
deberemos
tener
activada
la
opción
Herramientas>Opciones>Editor>Información rápida automática.
Por último, en la ventana inmediato podemos escribir funciones, ejecutar
métodos de los objetos disponibles, mostrar los valores de las variables. Podemos
probar las sentencias del programa para ver si surten el efecto esperado.
Para mostrar un valor utiliza Print o ? seguido de lo que quieras mostrar, por
ejemplo, escribiendo ?ActiveSheet.Name en la ventana inmediato y pulsando
[Intro] se mostrará el nombre de la hoja activa. Escribiendo ?2+2, se mostrará
como resultado 4. Para ejecutar una instrucción, escríbela sin más en esta ventana y
se ejecutará al pulsar la tecla [Intro]. En la ventana inmediato también está
disponible el autocompletado de métodos y propiedades [Ctrl][J]
En nuestro código podemos emplear Debug.Print para escribir información a la
ventana inmediato, que luego nos ayude a entender los pasos dados.
Lo básico de Visual Basic
Tipos de procedimientos
Podemos programar dos tipos de procedimientos: subrutinas y funciones.
Las subrutinas, que es el tipo de procedimiento de las macros, realizan una serie de
tareas de acuerdo a las instrucciones programadas. La definición de la subrutina
empieza con la instrucción Sub seguida del nombre que queramos asignarle (sin
espacios ni caracteres especiales) y finaliza, tras todas las instrucciones del
procedimiento, con End Sub.
El siguiente ejemplo es un procedimiento que muestra un mensaje en pantalla
mediante MsgBox, diciendo el título de este libro.
Sub EjemploSubrutina()
MsgBox "Ya sé Excel, pero necesito más"
End Sub
www.necesitomas.com
241
Ya sé Excel, pero necesito más
Una función es un procedimiento que devuelve como resultado un valor, a partir de
unos parámetros o argumentos iniciales. Estas funciones personalizadas se pueden
emplear en las celdas de la hoja de cálculo igual que las funciones predefinidas de
Excel, que operan con unos argumentos y devuelven un valor.
La definición empieza con la instrucción Function seguida del nombre de la
función. Hay que indicar en esta primera línea el tipo de dato que generará como
resultado. Dentro de la función, cuando se hayan realizado las operaciones
necesarias, se debe asignar el valor que la función devolverá como resultado. Para
terminar, tras todas las instrucciones, se escribirá End Function.
En el siguiente ejemplo se define una función que devuelve como resultado un
valor entero (Integer)
Function FunciónEjemplo() As Integer
' ...Operaciones
FunciónEjemplo = 7
End Function
Ambos tipos de procedimientos pueden tener argumentos. Estos argumentos se
declaran en la instrucción inicial donde se da el nombre al procedimiento. Para
ello, entre paréntesis y a continuación del nombre del procedimiento, se indicará
cada uno de los argumentos separados por comas, especificando el tipo de dato de
cada uno de ellos.
En el siguiente ejemplo se define una función que calcula la suma de dos
argumentos que son números enteros (Integer), dando como resultado un número
entero.
Function SumarDosEnteros(A As Integer, B As Integer) As Integer
SumarDosEnteros = A + B
End Function
Las subrutinas con argumentos no pueden ejecutarse desde el selector de
macros, deben ser llamadas desde otros procedimientos.
En el siguiente ejemplo se define una subrutina con un argumento tipo texto, que
muestra un mensaje con el texto del argumento entre exclamaciones. Se utiliza el
operador & para concatenar textos.
Sub MensajeEntreExclamaciones(TextoDelMensaje As String)
www.necesitomas.com
242
Ya sé Excel, pero necesito más
MsgBox "¡¡¡ " & TextoDelMensaje & " !!!"
End Sub
Para llamar a una subrutina desde dentro de otro procedimiento utilizaremos la
instrucción Call seguida del nombre del procedimiento. La utilización de Call es
optativa, puesto que VBA entiende también que se llame a una subrutina
escribiendo su nombre directamente.
Para utilizar una función dentro de una expresión de un procedimiento o de una
hoja de cálculo, basta con escribir su nombre.
En el siguiente ejemplo se define una subrutina que utiliza la función definida
anteriormente para realizar la suma de 3 más 15 y realiza una llamada al
procedimiento que muestra un texto entre exclamaciones para mostrar el resultado.
Sub SubrutinaQueUtilizaOtrosProcedimientos()
Call MensajeEntreExclamaciones("Resultado = " & SumarDosEnteros(3, 15))
End Sub
Cuando un procedimiento o un método tiene argumentos, éstos se introducen en el
mismo orden en que se definieron, entre paréntesis, separados por comas. Cuando
se utilizan como una instrucción independiente, no se escriben los paréntesis,
aunque se separan los argumentos por comas. También es posible introducir los
argumentos con su nombre, separando el nombre del argumento de su valor con
dos puntos seguido del signo igual := sin paréntesis, separados los distintos
argumentos por comas, y en este caso no importa el orden.
MensajeEntreExclamaciones TextoDelMensaje:="Cálculo Terminado"
La utilización de los nombres de los argumentos facilita la lectura del código,
comparado con una relación de argumentos separados por comas, aunque supone
escribir más y arriesgarse a cometer erratas, pues no está disponible la opción de
autocompletar para los nombres de los argumentos. Comprobarás que en las
macros grabadas se utiliza este sistema para facilitarte el trabajo de entender qué se
ha grabado.
Al definir un procedimiento, podemos establecer cómo se va a comportar cuando
se utilizan variables como argumentos: la variable puede pasarse al procedimiento
como una referencia a dicha variable, para lo que se antepondrá ByRef al nombre
del argumento (es la opción por defecto si no indicamos nada), con lo que si
modificamos el valor del argumento estaremos modificando la variable original.
Como alternativa, puede pasarse como argumento únicamente el valor de la
www.necesitomas.com
243
Ya sé Excel, pero necesito más
variable, anteponiendo al nombre del argumento ByVal, en este caso el argumento
será una copia de la variable y los cambios hechos al argumento no se realizarán en
el original.
En los siguientes ejemplos se define una misma subrutina, en el primer caso
utilizando argumentos por referencia y en el segundo caso por valor.
Sub ArgumentoPorReferencia(ByRef i As Integer)
i = i + 1
End Sub
Sub ArgumentoPorValor(ByVal i As Integer)
i = i + 1
End Sub
El siguiente procedimiento define una variable y la utiliza como argumento
realizando llamadas a las dos subrutinas anteriores. Tras cada llamada se escribe en
la ventana inmediato el valor de la variable.
Sub DiferenciaPorValorPorReferencia()
Dim Variable As Integer
Variable = 7
Call ArgumentoPorReferencia(Variable)
Debug.Print Variable
Call ArgumentoPorValor(Variable)
Debug.Print Variable
End Sub
Es posible definir también argumentos opcionales para el procedimiento. Esto se
consigue anteponiendo la palabra Optional al nombre del argumento. Los
argumentos opcionales deben ser los últimos argumentos de la lista de argumentos
del procedimiento.
La función IsMissing permite saber si falta un argumento en la llamada al
procedimiento, lo que permite, por ejemplo, asignar los valores por defecto a los
parámetros opcionales que no hayan sido introducidos.
En el siguiente ejemplo se define una función que divide dos números, definidos
como tipo precisión simple (Single). Serán necesarios dos argumentos, el
dividendo y el divisor. Si no se especifica el divisor se considerará igual a 1. Se
www.necesitomas.com
244
Ya sé Excel, pero necesito más
emplea la instrucción condicional If, junto con IsMissing para asignar el valor
por defecto.
Function Dividir(Dividendo As Single, Optional Divisor As Single) _
As Single
If IsMissing(Divisor) Then Divisor = 1
Dividir = Dividendo / Divisor
End Function
Cuando una línea de código es demasiado larga, lo que dificulta su lectura,
puedes indicar mediante un guión bajo _ que continúe en la línea siguiente. Se
interpretará como una única línea.
Finalmente, como último argumento puede utilizarse una matriz de valores. Es útil
cuando no sabemos cuántos valores vamos a tener. Por ejemplo, si queremos crear
una función que sume números, todos los que sea necesario, lo mejor es que utilice
como único argumento una matriz que contenga todos los números que queramos
sumar.
Esto se define anteponiendo al nombre del argumento la palabra ParamArray.
Sólo puede haber un argumento de este tipo en un procedimiento, y siempre tiene
que ser el último de los argumentos.
Variables
Todos los lenguajes de programación utilizan variables para almacenar valores y
poder operar posteriormente con ellos. Durante la ejecución del programa se
podrán modificar los valores de las variables. En cualquier operación, función,
instrucción podemos utilizar tanto un valor escrito a mano, como una variable (o
una constante), de la que se tomará el valor para operar.
En Visual Basic disponemos de los siguientes tipos de variables.
Booleano
Verdadero(-1) o Falso (0).
Byte
número entero entre 0 y 255.
Currency
15 dígitos de parte entera y 4 dígitos de parte decimal.
Date
para almacenar fechas, la parte entera es el día, desde el 1 de
enero del año 100 al 31 de diciembre de 9999, mientras que la
www.necesitomas.com
245
Ya sé Excel, pero necesito más
parte decimal es la hora. Para asignar valores de fecha, utiliza
almohadillas, por ejemplo fecha=#18 January 2007# (en
inglés).
Single
números de coma flotante, precisión simple (4 bytes).
Double
números de coma flotante, precisión doble (8 bytes).
Integer
número entero con signo (2 bytes).
Long
número entero con signo (4 bytes).
Decimal
número con 29 cifras significativas (12 bytes).
Object
una referencia a un objeto.
String
cadena de texto.
Variant
tipo de variable genérica que puede trabajar como cualquier
otro tipo de variable. Si no declaramos una variable, o en la
declaración no indicamos el tipo explícitamente, pertenecerá a
este grupo.
Aparte de estos tipos de funciones, podemos definir tipos de datos personalizados
mediante la instrucción Type. Estos tipos de variable personalizados agrupan
varios datos de los tipos predefinidos o de otros tipos definidos por el usuario
previamente.
A continuación se define como ejemplo el tipo personalizado Punto, que contiene
cuatro datos: un texto para el nombre, y tres valores numéricos para las
coordenadas. A la derecha se muestra cómo declarar una variable de este tipo
personalizado y cómo asignar los valores.
Type Punto
Dim Origen As Punto
Nombre as String
Origen.Nombre= "Estación 1"
X As Single
Origen.X = 0
Y As Single
Origen.Y = 0
Z As Single
Origen.Z = 703.42
End Type
www.necesitomas.com
246
Ya sé Excel, pero necesito más
La declaración de variables se realiza mediante la instrucción Dim, seguida del
nombre de la variable, luego la palabra As y finalmente el tipo. En el caso de
variables de módulo, si queremos que sean públicas (ver página 274272)
emplearemos Public en vez de Dim.
Al escribir la declaración, tras la palabra As, se desplegará un listado con todos los
tipos de variables y de objetos disponibles.
La asignación de un valor a una variable se realiza mediante el signo igual. A la
izquierda del signo se pone el nombre de la variable y a la derecha el valor o una
expresión que devuelva como resultado el valor que queremos que tome dicha
variable.
A = 7*25+3^2
Es posible incluir la propia variable en la expresión que se calcula para dar un
nuevo valor a esa misma variable. La expresión se calcula con el valor actual,
asignándole como nuevo valor el resultado de la expresión.
A = A + 1
En el caso de variables de tipo objeto, la asignación se realiza mediante la
instrucción Set seguida del nombre de la variable, un signo igual y a continuación
el nombre de un objeto, o una función o método que produzcan como resultado un
objeto del mismo tipo del que se ha definido la variable.
Para liberar una variable de objeto cuando deje de ser necesaria, asignaremos al
objeto el valor Nothing, también con la instrucción Set. La variable se libera,
deja de estar asociada al objeto, pero el objeto sigue existiendo.
En el siguiente ejemplo, se declara la variable Libro como un objeto tipo
Workbook, luego se asocia a un nuevo libro que se crea mediante el método Add
de la colección Workbooks. Se muestra la propiedad nombre de la variable Libro
www.necesitomas.com
247
Ya sé Excel, pero necesito más
(que será el nombre del libro que se acaba de crear) y finalmente se libera la
variable Libro. El libro que se ha creado se queda abierto después de terminado el
procedimiento.
Sub TrabajandoConObjetos()
Dim Libro As Workbook
Set Libro = Application.Workbooks.Add
MsgBox Libro.Name
Set Libro = Nothing
End Sub
Utilizando este tipo de variables, resulta más cómodo en el código referirse a los
distintos objetos. Por ejemplo si trabajamos continuamente con una hoja llamada
“Resumen” de un libro llamado “Data2007.xlsx”, en vez de tener que seguir la
jerarquía de objetos de Excel cada vez que hagamos referencia a esta hoja, si
definimos una variable de objeto y le asociamos esta hoja, bastará con utilizar el
nombre de la variable.
Si declaramos esta variable de objeto:
Dim HojaReferencia As Worksheet
Set HojaReferencia = Workbooks("Data2007.xlsx").Worksheets("Resumen")
En vez de escribir esto:
Workbooks("Data2007.xlsx").Worksheets("Resumen").Range("A1")="Encabezado"
Se puede escribir esto otro:
HojaReferencia.Range("A1") = "Encabezado"
Las variables, en Visual Basic, también pueden ser matriciales, esto es, una
variable puede tener varias dimensiones y almacenar diferentes valores. El modo
en que se define una variable matricial es similar a cómo se define una variable
convencional, pero indicando entre paréntesis las dimensiones de la matriz. Para
cada dimensión podemos definir el límite inferior y el límite superior. Si sólo
indicamos un valor, se interpreta como el límite superior en esa dimensión.
Dim MatrizConLímites(1 To 7, 5 To 9) As Integer
Dim MatrizSóloLímiteSuperior(3, 10, 2, 8) As Integer
Dim MatrizConYSinLímiteInferior(2 To 5, 3) As Integer
www.necesitomas.com
248
Ya sé Excel, pero necesito más
Todos los elementos de la matriz serán del mismo tipo, del definido al declarar
la variable.
Si escribimos los paréntesis, pero no indicamos dimensiones, la variable se declara
como matricial, aunque aún no tiene asignado su tamaño, que se podrá definir más
adelante mediante la instrucción ReDim. A este tipo de matrices declaradas
inicialmente sin dimensiones se les llama dinámicas.
Dim MatrizDinámica() As Integer
...
ReDim MatrizDinámica(2, 2, 10)
A una matriz dinámica a la que ya se le asignaron dimensiones, se le pueden volver
a cambiar tanto el número de dimensiones como los límites de dichas dimensiones
mediante una nueva instrucción ReDim. En principio, al redimensionar la matriz, se
perderán los datos almacenados en la misma, salvo que agreguemos la palabra
Preserve, aunque en este caso no podremos cambiar las dimensiones a nuestro
antojo, tan solo podremos modificar la última de las dimensiones de la matriz. Por
ejemplo, con la misma matriz de antes, podríamos redimensionarla de la siguiente
manera
ReDim MatrizDinámica(5, 4)
...
ReDim MatrizDinámica(3, 6, 1)
...
ReDim Preserve MatrizDinámica(3, 6, 8) 'sólo la última dimensión
Constantes
Si vamos a utilizar en los procedimientos valores que no van a cambiar durante la
ejecución de los mismos, podemos definirlos como constantes mediante la
instrucción Const. La declaración es similar a la de las variables, pero además hay
que asignarle el valor en esa misma instrucción. Por ejemplo, vamos a declarar una
constante de tipo texto que emplearemos posteriormente como título en los
mensajes que mostremos al usuario:
Const Título As String = "Ya sé Excel, pero necesito más"
La declaración de constantes puede facilitar la adaptación posterior del código del
programa a una nueva situación. Supón, por ejemplo, que tienes un programa para
www.necesitomas.com
249
Ya sé Excel, pero necesito más
tratar unos libros con datos que te envían periódicamente, y que entre otras cosas
lee los datos situados a partir de la fila 7 de una hoja llamada “datos” y realiza
varias operaciones con ellos en las celdas vacías que hay a partir de la columna 12
en esa misma hoja. Si posteriormente se modifica la estructura de los libros, y la
hoja con los datos se llama “registros”, la primera fila de datos es la 3, y las
columnas vacías comienzan a partir de la 14, tendrás que retocar todas y cada una
de las instrucciones de tus procedimientos en que hicieses referencia a alguno de
estos valores para cambiarlos por los nuevos (apostaría a que olvidas cambiar
alguno). Si hubieses creado constantes para estos valores, tan solo tendrías que
modificar dichos valores en las sentencias de declaración; el resto del programa,
que utiliza esas constantes, seguiría siendo válido.
Si en el ejemplo de los títulos para los mensajes quisiese añadir un punto al final,
tan solo tendré que modificar la declaración de la constante y no todos las
instrucciones que muestran un mensaje.
Al igual que con las variables, las constantes de módulo, que por defecto están
disponibles para los procedimientos de ese módulo, pueden declararse como
públicas para ser accesibles desde fuera del módulo, para lo cual antepondremos la
palabra Public a la declaración:
Public Const Título As String = "Ya sé Excel, pero necesito más."
Pueden definirse varias constantes numéricas que estén relacionadas como una
enumeración , mediante la instrucción Enum seguida del nombre que queramos
asignar a esa enumeración (puede anteponerse Private o Public para indicar el
alcance de la enumeración. La opción predeterminada es Public). En las líneas
siguientes definimos las constantes que forman parte de la enumeración, indicando
su nombre y el valor de la misma con un signo igual. Para concluir la definición de
la enumeración debe escribirse End Enum.
En el siguiente ejemplo se define una enumeración con las constantes que definen
las filas y columnas donde están los datos que deseo procesar.
Enum EnumeraciónEjemplo
FilaInicial = 2
FilaFinal = 5
ColumnaInicial = 2
ColumnaFinal = 15
End Enum
www.necesitomas.com
250
Ya sé Excel, pero necesito más
Dentro de un procedimiento se podrá hacer uso de estas constantes como si de
cualquier otra constante se tratase.
Rows(FilaInicial).Select
Sin embargo, puede darse el caso de que dos enumeraciones diferentes tengan
constantes con el mismo nombre. En nuestro ejemplo, podríamos tener una
enumeración con filas y columnas para la hoja de datos y otra enumeración con las
filas y columnas de la hoja de resultados. En este caso, para evitar ambigüedades
en el código, habrá que referirse a la constante indicando a qué enumeración
pertenece, y esto se hace escribiendo el nombre de la enumeración, un punto y el
nombre de la constante.
Rows(EnumeraciónEjemplo.FilaInicial).Select
Las enumeraciones deben definirse a nivel de módulo y sólo admiten para sus
constantes valores numéricos.
www.necesitomas.com
251
Ya sé Excel, pero necesito más
Bucles
A menudo, en los procedimientos suele resultar necesario repetir las mismas
instrucciones varias veces, en lo que se denomina un bucle. VBA ofrece tres tipos
de bucles:
For
permite repetir las instrucciones un número determinado de
veces
Do
repite las instrucciones según se cumpla o no una condición
que indiquemos.
For Each
repite las instrucciones para cada elemento de un conjunto de
elementos.
A continuación se explica un poco más en detalle cada uno de ellos.
For
Mediante la instrucción For, y empleando una variable que hace de contador,
podemos repetir varias veces las mismas instrucciones. La estructura de esta
instrucción es la siguiente:
For variablecontador = valorinicial To valorfinal
Optativamente podremos añadir también el valor en que se incrementará la variable
contador en cada ejecución del bucle, mediante la palabra Step seguida del valor
del incremento (puede ser positivo o negativo). Si no se indica nada, el incremento
por defecto es uno.
El bucle asigna valores a la variable contador empezando por el valor inicial,
aumentándolo en cada ciclo. El bucle se repite mientras el contador sea menor o
igual que el valor final (igual o mayor en el caso de incremento negativo).
Al final de las instrucciones que queremos repetir, terminaremos el bucle con la
palabra Next, a la que podremos añadir a continuación (no es obligatorio) el
nombre de la variable contador, para facilitar la lectura del código.
Si en alguna situación queremos terminar el bucle antes de llegar al final, dentro de
las instrucciones del bucle podemos incluir Exit For, para salir del mismo.
En este ejemplo escribimos en la ventana inmediato los valores del contador i, que
toma los valores desde 1 hasta 10, con un incremento de dos. El contador adopta
los valores 1, 3, 5, 7, 9, tras éste último, el contador toma el valor 11, que al
www.necesitomas.com
252
Ya sé Excel, pero necesito más
sobrepasar el límite superior finaliza el bucle, ya no se ejecutan más las
instrucciones del bloque For, continuando el programa a partir del Next. Tras la
terminación del bucle, i es igual a 11, el valor que superó el límite.
Sub BucleFor()
Dim i as Integer ' contador para el bucle
For i = 1 To 10 Step 2
Debug.Print i 'escribimos el valor de i en la ventana inmediato
Next
Debug.Print “Valor de i después del bucle: “ & i
End Sub
Do
Se repiten las instrucciones contenidas en el bucle hasta (Until) que se cumpla
una condición, o mientras (While) se cumpla una condición. El inicio del bucle se
indica con la instrucción Do, y el final del bucle con la instrucción Loop.
La condición se puede poner bien en el Do de inicio del bucle, bien en el Loop del
final del bucle (pero no en los dos sitios a la vez), dependiendo de si queremos que
la condición se evalúe antes de haber comenzado el bucle, o después de haber
realizado las instrucciones contenidas en el mismo.
Si hubiera que salir del bucle desde el interior del mismo, antes de terminar, se
puede emplear la instrucción Exit Do.
En el siguiente ejemplo se van activando las celdas desde la posición actual de la
celda activa hacia abajo, hasta encontrar una celda vacía. En este caso, la condición
la pondremos al inicio del bucle, puesto que si partimos de una celda vacía no hay
que comenzar a desplazarse hacia las celdas de abajo, ya hemos terminado.
Para saber si la celda está vacía emplearemos la función IsEmpty. Al terminar el
bucle, se muestra un mensaje informando de la posición de la celda activa. Se
utiliza la constante vbOkOnly para indicar que aparezca en el mensaje únicamente
el botón Ok. Se utiliza también la constante Título como título para este mensaje.
www.necesitomas.com
253
Ya sé Excel, pero necesito más
Sub DesplazarHaciaAbajoHastaVacia()
Do Until IsEmpty(ActiveCell)
' Activamos la celda de abajo
ActiveCell.Offset(1, 0).Activate
Loop
MsgBox "Celda vacia: " & ActiveCell.Address, vbOKOnly, Título
End Sub
En el siguiente ejemplo se pide al usuario que introduzca un número menor que
diez, si el número introducido es mayor, se vuelve a pedir el valor, así hasta que se
introduzca un valor correcto. Esta vez se utilizará la condición al final del bucle,
puesto que nos interesa que se ejecute al menos una vez.
Se utiliza la función de conversión CSng para convertir el texto introducido por el
usuario mediante InputBox a un número de tipo Single, para poder almacenarlo
en la variable i.
Sub PreguntarHastaValorCorrecto()
Dim i As Single
Do
i = CSng(InputBox("Introduzca un valor menor que 10", Título))
Loop While i >= 10
End Sub
En la definición de la condición vemos que Until es lo contrario de While, es
decir, empleando el operador de negación antes de la condición, Until es igual
que While Not y al contrario, While es lo mismo que Until Not. En los
ejemplos anteriores se podrían haber escrito las condiciones de la siguiente manera:
Do While Not IsEmpty(ActiveCell)
Y para el segundo caso:
Loop Until Not i >= 10
www.necesitomas.com
254
Ya sé Excel, pero necesito más
For Each
Una colección es un objeto que engloba a varios objetos de un mismo tipo. Por
ejemplo, la colección Worksheets de un libro, contiene todos los objetos
Worksheet de ese libro (ya dije que VBA está en inglés). Traduciendo todas las
palabras: la colección Hojas (plural) de un libro, contiene todos los objetos Hoja
(singular) de ese libro.
Podemos referirnos a un elemento concreto de la colección por su número de
índice Worksheets(1), o bien por su nombre si lo tiene, Worksheets(“nombre
de la hoja”).
Podemos recorrer todos los elementos de una colección con un bucle For Each,
con el que le decimos al programa, en el ejemplo de las hojas, algo así como: para
cada hoja en la colección de las hojas de este libro repite las siguientes
instrucciones …
Al igual que ocurre con los bucles For convencionales, el bucle For Each utiliza
una variable contador que va representando a cada uno de los objetos de la
colección. Este contador, por tanto, tiene que ser del mismo tipo que los objetos
que forman la colección. En el ejemplo, se declara la variable Hoja como un objeto
Worksheet.
Se ha utilizado la constante predefinida vbCrLf (visual basic Carriage return Line
feed, retorno de carro línea siguiente) para insertar un salto de línea en el mensaje
que se muestra al usuario para cada hoja del libro. Este mensaje incluye el nombre
de la hoja y el número de índice de la misma dentro de la colección.
Se emplea la constante predefinida vbInformation, añadida a vbOkOnly, para
indicar que en el mensaje se muestre el símbolo de información. Como en todos los
ejemplos con mensajes, se utiliza la constante Título.
Sub RecorrerHojasDelLibro()
Dim Hoja As Worksheet
For Each Hoja In ThisWorkbook.Worksheets
MsgBox "nombre: " & Hoja.Name & vbCrLf & _
"índice: " & Hoja.Index, vbOKOnly + vbInformation, Título
Next
End Sub
www.necesitomas.com
255
Ya sé Excel, pero necesito más
Varias instrucciones con un mismo objeto
En muchas ocasiones debemos realizar varias instrucciones seguidas aplicadas
sobre un mismo objeto. Mediante el uso de bloques With se puede simplificar la
escritura del código, indicando algo así como: con este objeto realiza los siguientes
pasos.
Ejemplo sin With:
Sub SinBloqueWith()
ThisWorkbook.Worksheets("resumen").Range("A1").Value = 3
ThisWorkbook.Worksheets("resumen").Range("A1").Borders(xlEdgeBottom). _
Color = vbBlack
ThisWorkbook.Worksheets("resumen").Range("A1").Font.Italic = True
End Sub
Dentro del bloque With, en vez de tener que volver a escribir la descripción del
objeto, escribiremos un punto y a continuación la propiedad o el método que
queramos de ese objeto. Cuantas más cosas tengamos que hacer con un mismo
objeto, mayor será la ventaja de utilizar With.
El mismo ejemplo con With:
Sub ConBloqueWith()
With ThisWorkbook.Worksheets("resumen").Range("A1")
.Value = 3
.Borders(xlEdgeBottom).Color = vbBlack
.Font.Italic = True
End With
End Sub
Condicionales
Mediante las instrucciones condicionales indicamos al procedimiento cómo debe
comportarse, qué instrucciones debe llevar a cabo, según se cumplan ciertos
criterios o no, adaptando así la ejecución del programa a las diferentes situaciones
que pueden presentarse.
www.necesitomas.com
256
Ya sé Excel, pero necesito más
VBA ofrece dos instrucciones condicionales: If, que permite evaluar diferentes
condiciones, y Select, que permite establecer diferentes instrucciones para
diferentes valores de una misma variable.
If
El funcionamiento de esta instrucción es como decirle al programa: Si se cumple
(If) la siguiente condición, entonces (Then) haz esto. En el siguiente ejemplo, si
se supera el valor 6, se sale del bucle.
Sub CondicionUnaLinea()
Dim i As Integer ' contador para el bucle
For i = 1 To 10 Step 2
Debug.Print i 'escribimos el valor de i en la ventana inmediato
If i > 6 Then Exit For
Next
Debug.Print "Valor de i después del bucle: " & i
End Sub
Lo habitual es que queramos realizar más de una única orden si se cumple la
condición. En este caso, repartimos la instrucción If del siguiente modo
If condición Then
' instrucciones a ejecutar si se cumple la condición.
End If
Si no se cumple la condición, pero queremos comprobar otra condición distinta,
emplearemos ElseIf seguido de la nueva condición que queremos evaluar,
seguido a su vez de Then. Pueden añadirse tantas condiciones alternativas como
queramos. En el momento que una condición se cumple, se ejecutan las
instrucciones correspondientes y no se sigue comprobando el resto de condiciones.
Si queremos que en el caso de no haber cumplido ninguna condición se ejecute otro
grupo de instrucciones, lo indicaremos al final de todas las condiciones mediante la
palabra Else.
Por último, el conjunto se cierra mediante End If.
En el siguiente ejemplo se comprueba si el valor de la variable i es negativo, si es
menor que cinco, si es menor o igual que diez, y en caso de no cumplir ninguna
www.necesitomas.com
257
Ya sé Excel, pero necesito más
condición querría decir que es mayor que 10. En cada caso se muestra un mensaje
con el intervalo a que pertenece la variable.
Un valor negativo cumpliría la condición de ser menor que cero, y también la de
ser menor que 5 y menor que 10, pero sólo se ejecutarán las instrucciones de la
primera condición que se cumpla según el orden en que se han escrito, en este
ejemplo la condición de ser menor que cero.
Se utiliza la función de conversión CInt para convertir a entero el valor
introducido por el usuario mediante InputBox. Se utilizan también diferentes
constantes predefinidas en los mensajes (vbOkOnly, vbCritical,
vbInformation, vbExclamation, vbQuestion) además de la constante Título
para los títulos de los mismos.
Sub BloqueIf()
Dim i As Integer
i = CInt(InputBox("Introduzca un valor entero", Título))
If i < 0 Then
MsgBox "valor negativo", vbOKOnly + vbCritical, Título
ElseIf i < 5 Then
MsgBox "menor que cinco", vbOKOnly + vbQuestion, Título
ElseIf i < 10 Then
MsgBox "menor que diez", vbOKOnly + vbInformation, Título
Else
MsgBox "mayor o igual que diez", vbOKOnly + vbExclamation, Título
End If
End Sub
Select Case
Esta instrucción condicional permite elegir qué parte del programa se ejecutará a
partir del valor de una variable o de una expresión que devuelva como resultado un
número o una cadena de texto.
En primer lugar indicaremos qué variable o expresión es la que vamos a evaluar
mediante la instrucción Select Case. A continuación estableceremos, mediante la
palabra Case, los diferentes casos que pueden darse, seguido cada uno de ellos de
las instrucciones a realizar si nos encontramos en el citado caso.
www.necesitomas.com
258
Ya sé Excel, pero necesito más
Podemos añadir una última posibilidad, para el caso de que la variable o expresión
no se encuentre en ninguno de los casos contemplados. Este sería el último caso y
se especificaría mediante Case Else.
El bloque de opciones se debe concluir con la instrucción End Select.
Los casos pueden definirse con un valor
Case 5
Con una lista de valores separados por comas
Case 5, 6, 10
Con un intervalo de valores (valor menor To valor mayor):
Case 5 To 7
Con un operador de comparación, en este caso se utilizará la palabra Is:
Case Is < 5
O con una lista que mezcle de todo un poco
Case 5, 6, 9 to 10, Is > 15
Una vez que se cumple uno de los casos, no se siguen comprobando el resto de
casos, es decir, sólo se ejecutarán las instrucciones del primer caso que sea
satisfecho por el valor de la variable o la expresión que se está comparando.
A continuación se repite el mismo ejemplo realizado antes mediante If, pero ahora
utilizando Select Case.
www.necesitomas.com
259
Ya sé Excel, pero necesito más
Sub BloqueSelect()
Dim i As Integer
i = CInt(InputBox("Introduzca un valor entero", Título))
Select Case i
Case Is < 0
MsgBox "valor negativo", vbOKOnly + vbCritical, Título
Case Is < 5
MsgBox "menor que cinco", vbOKOnly + vbQuestion, Título
Case Is < 10
MsgBox "menor que diez", vbOKOnly + vbInformation, Título
Case Else
MsgBox "mayor o igual que diez", vbOKOnly + vbExclamation, Título
End Select
End Sub
Interactuar
Hay programas que no necesitan más que ejecutarse y ya está, pero en otros casos,
puede que la mayoría, es necesario cierto grado de interactividad con el usuario,
para preguntarle cierta información, mostrarle un resultado, preguntar si llegado a
determinado punto se quiere continuar o no, etc.
Preguntar e informar al usuario
Para obtener información del usuario durante la ejecución de una macro, lo más
sencillo es emplear InputBox. Con este método del objeto Application,
aparecerá en pantalla una ventana en la que el usuario podrá introducir la
información solicitada.
Uno de los argumentos opcionales de InputBox permite facilitar un valor por
defecto en la ventana que pregunta. También es posible indicar la posición
(horizontal y vertical) en que aparecerá el cuadro de diálogo en la pantalla.
Asimismo puede indicarse una referencia al archivo de ayuda que hayas creado
para tu aplicación.
En el siguiente ejemplo se almacena dentro de la variable Respuesta el valor
introducido por el usuario mediante InputBox. Se emplea la constante Título para
el título del cuadro de diálogo, y se proporciona como valor por defecto 7.
www.necesitomas.com
260
Ya sé Excel, pero necesito más
Respuesta = InputBox("Introduzca un número", Título, 7)
La información recopilada por InputBox es de tipo Texto, si lo que necesitas es
un número habrá que convertir el valor introducido mediante una función de
conversión de tipo de datos (ver página 271).
Si se pulsa el botón cancelar, el resultado de InputBox será el valor lógico False
(Falso). Si almacenas el resultado de InputBox en una variable tipo texto, se
guardará la cadena “Falso” (traducida), no el valor lógico False, así que ten
cuidado si empleas la hoja con una versión de Excel en otro idioma.
Si almacenas el resultado de InputBox en una variable Variant, almacenarás un
texto cuando haya una respuesta válida, pero almacenarás un valor booleano
False si se pulsa el botón cancelar.
Para evitar errores porque no coinciden los tipos de datos, puedes emplear
Cstr(False) convierte el valor booleano False en texto traducido al idioma de
la versión de Excel instalada (en nuestro caso lo convierte en “Falso”), para
comparar con el texto obtenido de InputBox y detectar si se canceló la
introducción.
Si lo que necesitas es mostrar mensajes informativos al usuario mediante un cuadro
de diálogo, dispones del comando MsgBox.
MsgBox "Hola", , Título
www.necesitomas.com
261
Ya sé Excel, pero necesito más
Es posible utilizar estos cuadros de mensajes para recibir información mediante
botones del tipo Sí/No, Aceptar/Cancelar, …, pues utilizando MsgBox como una
función, produce como resultado un número entero correspondiente al código de
Visual Basic para el botón pulsado. No te preocupes, no hay que aprenderse estos
códigos, puedes emplear las constantes predefinidas de la enumeración
VbMsgBoxResult: vbOk, vbCancel, vbYes, vbNo, vbRetry, etc.
(empiezan por vb, de Visual Basic, seguidos del texto del botón en inglés).
La variable donde vamos a almacenar el resultado puede definirse de la siguiente
manera:
Dim Respuesta As VbMsgBoxResult
Aparte de los botones, podemos añadir un icono al mensaje mediante las constantes
vbCritical, vbExclamation, vbInformation, vbQuestion, así como
establecer un comportamiento para el mismo, por ejemplo vbApplicationModal
para que no se pueda continuar trabajando hasta que no se conteste pulsando un
botón.
Mediante las constantes vbDefaultButton, podemos especificar qué botón, de
los mostrados en el mensaje, es la opción por defecto.
El modo de añadir todas estas opciones es sumando las constantes correspondientes
en el argumento Buttons.
Caso de que dispongas de un archivo de ayuda para tu aplicación, podrás hacer
también una referencia a un tema del mismo con los argumentos HelpFile y
Context. Para mostrar el botón de ayuda deberás añadir la constante
vbMsgBoxHelpButton a la lista de botones.
En el siguiente ejemplo se almacena en la variable Respuesta la contestación del
usuario a la pregunta sobre si desea continuar. Se muestran los botones Sí y No, en
una ventana modal, esto es, que no permite continuar trabajando con Excel hasta
que se conteste, con un icono de exclamación, y estableciendo como respuesta
predeterminada el primer botón.
www.necesitomas.com
262
Ya sé Excel, pero necesito más
Respuesta = MsgBox("¿desea continuar?", vbYesNo + vbApplicationModal _
+ vbExclamation + vbDefaultButton1, Título)
Elegir archivos
En muchas ocasiones resulta necesario que nuestro programa permita al usuario
seleccionar un archivo para abrirlo y operar con él, o permitirle elegir con qué
nombre y en qué directorio quiere guardarlo.
Desde
el
código
de un procedimiento podemos utilizar el método
GetOpenFilename, del objeto Application, que muestra el cuadro de diálogo
abrir archivo. El resultado de este método es una cadena de texto con la ruta hasta
el archivo que el usuario seleccione.
No se abre ningún archivo ni se hace nada con ellos, simplemente se toma nota.
Es posible habilitar la selección de varios archivos simultáneamente, en cuyo caso
el resultado de este método será una matriz con los nombres de los archivos
seleccionados.
Devuelve False si el usuario cancela la selección de archivos, tanto si pulsa el
botón cancelar como si cierra el cuadro de diálogo.
Se pueden especificar filtros de archivos para que sólo aparezcan los que tengan
determinadas extensiones o determinado nombre. El modo de hacerlo es mediante
una cadena de texto formada por un nombre que se mostrará para el filtro y la
definición del filtro, separados por una coma. Si se quieren especificar varios
filtros, se escribirán en la misma cadena de texto, “nombre, filtro, nombre,
filtro,…” uno tras otro, separados por comas.
En el siguiente ejemplo se pide al usuario que seleccione un único archivo de tipo
Excel, o de tipo texto y se almacena el nombre del archivo en la variable
NombreDelArchivo. El filtro predeterminado se fija en el primero de ellos,
archivos Excel. Se utiliza la constante Título para mostrarla como título del cuadro
de diálogo.
www.necesitomas.com
263
Ya sé Excel, pero necesito más
NombreDelArchivo = Application.GetOpenFilename( _
"archivos Excel,*.xl*,archivos texto,*.txt", 1, Título, , False)
Para aquellos casos en que queramos obtener el nombre de un archivo que aún no
exista, por ejemplo porque aún no se ha guardado, o en el caso en que se quiera
proponer un nombre de archivo predeterminado, puede utilizarse el método
GetSaveAsFilename, también del objeto Application. Este método muestra el
cuadro de diálogo guardar como de Excel y su resultado es la ruta hasta el archivo
especificado (aunque no exista). Lógicamente, sólo se puede elegir un archivo.
No se guarda el libro, ni se crea ningún archivo, simplemente se toma nota.
La definición de los filtros es igual que en el caso anterior, una cadena de texto
separando los nombres y los filtros por comas. Si no indicamos la extensión en el
nombre del archivo, se añadirá la del filtro que se haya seleccionado. Presta
atención si en la definición del filtro utilizas caracteres comodín también para la
extensión, porque se añadirán al nombre.
Si se cancela la introducción del nombre del archivo, se obtiene como resultado
False.
En el siguiente ejemplo se muestra el cuadro guardar como para indicar un nombre
de archivo, que se guardará dentro de la variable NombreDelArchivo. Se propone
www.necesitomas.com
264
Ya sé Excel, pero necesito más
como nombre por defecto “Mi Archivo”, y como extensión por defecto la del
segundo de los filtros indicados, txt.
NombreDelArchivo = Application.GetSaveAsFilename("Mi Archivo", _
"archivos excel, *.xl*, archivo texto,*.txt", 2, Título)
Formularios personalizados
Para ciertas aplicaciones puede que lo más indicado sea crear un formulario desde
el que introducir la información necesaria para la ejecución del programa. Tal vez
en Excel, donde la cuadrícula de las hojas se presta a la creación de formularios,
pueda emplearse para muchos casos una hoja que haga las veces de formulario,
donde se anoten los datos necesarios en celdas que luego leerá el programa
(recuerda la validación de datos en las celdas para evitar errores). Con unos
botones añadidos a la hoja para ejecutar los programas, resolveremos casi todas
nuestras necesidades.
Aparte de emplear una hoja como si fuera un formulario, podemos crear un
formulario personalizado para recopilar datos o intercambiar información con el
usuario durante la ejecución de un procedimiento.
Para agregar un formulario, seleccionaremos nuestro proyecto y bien desde el
menú contextual en el explorador de proyectos, bien desde la barra de menús,
elegiremos la opción Insertar>UserForm.
www.necesitomas.com
265
Ya sé Excel, pero necesito más
Sobre el formulario iremos colocando, como si de un collage se tratase, los
controles que elijamos de la lista de controles disponibles. Para utilizar otros
controles
instalados
en
tu
equipo,
debes
seleccionarlos
desde
Herramientas>Controles adicionales.
Es conveniente dar nombres significativos a los controles, para luego no
confundirse. Por defecto se asigna un nombre formado por la descripción del
control y un número correlativo siguiendo el orden en que se han insertado en el
formulario, que no aclaran gran cosa. Si no vas a hacer referencia al control, el
nombre por defecto es suficiente, pero si vas a necesitar acudir posteriormente a
algún control, es mejor un nombre más explícito.
Para cada control, desde la ventana propiedades podrás configurar su apariencia, su
nombre, su aspecto y algunas cosas más. Para definir el comportamiento frente a
un evento, deberás acceder al código del mismo, para lo que debes mostrar el
código asociado al formulario con la opción Mostrar código que aparece en el
menú contextual del formulario o de cualquiera de los controles. En el editor elige
en la lista desplegable el objeto para el que vayas a definir el comportamiento y en
la lista de la derecha el evento en que vas a agregar código.
El propio formulario también tiene eventos asociados en los que podrás añadir
código.
Si desde un procedimiento quieres mostrar un formulario debes emplear el método
Show del mismo. La ejecución del programa se detendrá hasta que se cierre el
www.necesitomas.com
266
Ya sé Excel, pero necesito más
formulario, continuando el programa con la siguiente instrucción. Para cerrar el
formulario se empleará el método Hide del mismo.
En el siguiente ejemplo, desde una macro se muestra el formulario al que hemos
llamado FormConfiguracionInicial, para que el usuario establezca las condiciones
para la ejecución del procedimiento principal del programa.
Sub MostrarFormulario()
FormConfiguracionInicial.Show
Call ProcedimientoPrincipal
End Sub
En el siguiente ejemplo se muestra el código situado en el evento al hacer clic del
botón llamado BotónIniciar, que simplemente oculta el formulario para que
continúe la ejecución de la macro. Se utiliza la palabra clave Me para hacer
referencia al propio formulario, ya que este código está almacenado en el
formulario.
Private Sub BotónIniciar_Click()
Me.Hide
End Sub
Tratamiento de errores
Las cosas no siempre salen como las habíamos pensado y puede que durante la
ejecución se produzcan errores en nuestros procedimientos, bien porque los datos
introducidos no son correctos, bien porque no tuvimos en cuenta alguna
posibilidad, bien porque nos equivocamos con los tipos de variables; el caso es
que, casi con toda probabilidad, cuando pruebes tus procedimientos te encontrarás
que durante la ejecución se producen errores.
Que se produzca un error no quiere decir que la ejecución del programa se tenga
que detener sin más. Podemos interceptar esos errores y tomar las medidas
oportunas desde el propio programa para corregirlos o evitarlos. Solamente hay que
prever qué situaciones pueden producirse durante el uso de los procedimientos,
para programar anticipándonos al problema (corrigiendo valores, validando los
datos introducidos antes de operar con ellos), o programar esperando que se
produzca un error y, una vez producido, corregir la situación para reconducirla
hacia el buen camino.
www.necesitomas.com
267
Ya sé Excel, pero necesito más
Para interceptar los errores de ejecución, hay que decir al principio de nuestro
procedimiento que en caso de que se produzca un error, debe realizar una
determinada acción, y esto se le indica a Visual Basic mediante la instrucción On
Error.
Las alternativas que tenemos son o continuar la ejecución del programa en la
siguiente instrucción (On Error Resume Next) como si no hubiera pasado nada,
o dirigir la ejecución del programa a una rutina de tratamiento de errores
identificada con un número de línea o con una etiqueta (On Error GoTo …).
Una etiqueta sirve para identificar con un nombre una parte del código. Se
define en una línea con un texto para el nombre, sin espacios ni caracteres
especiales, seguido de dos puntos :
Cuando se produce un error, la información acerca del mismo, como el código
asociado al error, una descripción, o una referencia a la ayuda relacionada con el
error, se almacena en el objeto Err. Es posible generar un error deliberadamente en
nuestro programa a través del método Raise de este objeto Err.
Lo más sencillo para una rutina de tratamiento de errores es utilizar la instrucción
Select Case aplicada al número del error Err.Number, para identificarlo y dar
los pasos oportunos para solventarlo.
Una vez hayamos corregido el problema, para continuar la ejecución desde donde
se produjo el error, se debe utilizar la instrucción Resume. Sin ningún argumento
adicional, la ejecución vuelve otra vez a la línea en que se generó el error. Si
queremos que vuelva a la siguiente instrucción a la que generó el error se utilizará
Resume Next. Si queremos dirigir la ejecución a otra parte del código, se puede
utilizar un número de línea o una etiqueta que identifique desde dónde queremos
continuar la ejecución del código.
Normalmente el código de tratamiento de errores se sitúa al final del
procedimiento. Para evitar que se ejecute el tratamiento de errores sin que se haya
producido ningún error, antes de la etiqueta que identifica este bloque de código,
indicaremos que debe salirse del procedimiento, mediante Exit Sub o Exit
Function, según el caso.
En el siguiente ejemplo se muestra un procedimiento con control de errores. En
caso de error se dirige la ejecución a la línea etiquetada como ControlDeErrores,
www.necesitomas.com
268
Ya sé Excel, pero necesito más
donde se corrige el valor de la variable Resultado en el caso de que se produzca un
error de desbordamiento, error número 6. Tras corregir este valor se continúa en la
siguiente instrucción a la que generó el error.
Si se produce cualquier otro error, se mostrará un mensaje indicando el número de
error, su descripción Err.Description, y con posibilidad de acceder a la ayuda
relacionada con el mismo, mediante Err.HelpFile y Err.HelpContext.
Sub EjemploTratamientoErrores()
On Error GoTo ControlDeErrores
Dim Resultado As Integer
'
' ...código del procedimiento ...
'
Exit Sub
ControlDeErrores:
Select Case Err.Number
Case 6 'Desbordamiento
Resultado = 0
Resume Next
Case Else
' En otro caso se muestra un mensaje descriptivo del error
MsgBox "Error número " & Err.Number & vbCrLf & Err.Description, _
vbOKOnly + vbMsgBoxHelpButton, Título, Err.HelpFile, _
Err.HelpContext
End Select
End Sub
Cuando tu proyecto esté aparentemente terminado ponte en el lugar del futuro
usuario, que desconoce por completo lo que has programado, y prueba el programa
tratando de hacer que se equivoque. Toma nota si se produce algún error, para
incluir en el tratamiento de errores los pasos necesarios para corregirlo. Cuanto
mejor terminado quede el programa ahora que aún lo tienes fresco en la cabeza,
menos errores surgirán con el uso y menos tiempo perderás más adelante tratando
de recordar su funcionamiento para poder corregirlos.
www.necesitomas.com
269
Ya sé Excel, pero necesito más
Funciones disponibles en VBA
Visual Basic incorpora muchas funciones que permiten realizar operaciones
matemáticas, trabajar con textos, realizar comparaciones, convertir tipos de datos,
operar con fechas, …
No pretendo incluir una relación exhaustiva de estas funciones, pues para eso ya
cuentas con el archivo de ayuda de Visual Basic (dentro del tema Referencia del
lenguaje de Visual Basic, Funciones), pero sí he querido destacar algunas de ellas,
las más simples y puede que a la vez las más útiles.
Dentro del código del programa se pueden emplear funciones de la hoja de
cálculo, no todas, pero sí la mayor parte de ellas. Esto se hace a través de
Application.Worksheetfunction
Matemáticas
+ - * / ^
operadores matemáticos básicos.
Sqr
raíz cuadrada.
Sin, Cos, Tan, Atn funciones trigonométricas.
Abs, Sgn
valor absoluto y signo.
Int, Fix, Round
para redondear números.
Exp, Log
exponenciación y logaritmos, ambos en base e.
Rnd
generación de números aleatorios.
www.necesitomas.com
270
Ya sé Excel, pero necesito más
Texto
operador para concatenar cadenas de texto.
&
Trim, Ltrim, Rtrim
para eliminar espacios.
Chr
carácter a partir de su código ASCII.
Len
número de caracteres del texto.
Left, Right, Mid extraer caracteres de un texto.
Instr, Instrrev, Replace
buscar y reemplazar un texto dentro de otro.
Ucase, Lcase
convertir a mayúsculas y minúsculas.
Val
convertir una cadena en número.
Información
En muchas ocasiones es útil conocer no el valor de una variable, sino el tipo de
dato que contiene, principalmente si estás trabajando con variables tipo Variant.
También puede interesarnos conocer si se ha proporcionado un argumento o no, o
si una variable contiene un valor nulo o un número, o si una expresión produce un
error. Con las funciones de información, que comienzan por Is, obtendremos un
valor verdadero o falso según el argumento se corresponda o no con el tipo
buscado.
IsArray
Matriz
IsError
error
IsNumeric
número
IsDate
Fecha
IsMissing
falta
IsObject
objeto
IsEmpty
Vacío
IsNull
nulo
Si necesitamos conocer con qué tipo de variable estamos trabajando, la función
TypeName, cuyo argumento es el nombre de una variable, da como resultado un
texto con el nombre del tipo a que pertenece el argumento. También disponemos de
la función VarType, que devuelve un entero según el tipo de variable (podemos
emplear constantes predefinidas vbString, vbInteger, vbNull, …).
www.necesitomas.com
271
Ya sé Excel, pero necesito más
Funciones de conversión
Es frecuente tener que convertir unos tipos de datos en otros, por ejemplo para
poder compararlos entre sí, ya que si no son del mismo tipo de datos la
comparación no es posible. Todas estas funciones comienzan por la letra C de
convertir seguida de una abreviatura del tipo de dato al que se convertirá el
argumento de dicha función.
CBool
Booleano
CInt
Integer
CByte
Byte
CLng
Long
CCur
Currency
CSng
Single
CDate
Date
CStr
String
CDbl
Double
CVar
Variant
CDec
Decimal
Las ideas claras
Organización
Los que saben de programación, bueno, sólo los más organizados, recomiendan
seguir ciertas normas a la hora de nombrar las variables para facilitar la
comprensión posterior del código, como anteponer un prefijo al nombre que
indique de qué tipo de variable se trata (str para las tipo String, int para las tipo
Integer, etc.) aunque ni siquiera en todos los ejemplos de la ayuda de Visual
Basic se utilizan estos prefijos. Particularmente creo que es mucho más importante,
desde el punto de vista de la comprensión, utilizar nombres descriptivos de la
utilización o la finalidad de las variables, así como declararlas siempre,
comentando las declaraciones para explicar todo lo que sea necesario.
Facilita la lectura de tu código sangrando las instrucciones de un mismo bloque. A
medida que tu código va creciendo es fácil despistarse y no saber muy bien dónde
estás escribiendo, así que toda ayuda para clarificar tu programa es de agradecer.
www.necesitomas.com
272
Ya sé Excel, pero necesito más
Sub BuclesEjemploSinSangría()
Dim i, j, k
'contadores
For i = 1 To 3
For j = 1 To 5
For k = 15 To 23
Sub BuclesEjemploConSangría()
Dim i, j, k
For i = 1 To 3
For j = 1 To 5
For k = 15 To 23
'código a repetir
Next
Next
Next
End Sub
'contadores
'código a repetir
Next
Next
Next
End Sub
Opciones del módulo
Al principio de un módulo se pueden establecer una serie de opciones que definirán
algunos aspectos del comportamiento del programa.
Option Explicit activa que la declaración de variables sea obligatoria.
Eligiendo esta opción, solamente podrás emplear en los procedimientos variables
que hayan sido definidas previamente, produciéndose un error en caso contrario al
tratar de compilar el programa. Exigiendo la declaración explícita de los nombres
de las variables garantizamos que no haya erratas al escribir sus nombres y que
todas las variables que se utilizan se hayan pensado antes, al menos una vez.
Option Base establece el límite inferior por defecto de las variables matriciales,
que se aplicará a aquellas matrices para las que al definirlas no se fije un valor para
el límite inferior. Option Base 1 hace que el primer elemento de una matriz sea
el 1. Si queremos que las matrices comiencen en el elemento 0, tendremos que
escribir en nuestro módulo Option Base 0, esta última opción es la
predeterminada si no indicamos nada. Sólo se puede establecer la base en 0 o en 1,
en ningún otro valor.
Option Private Module. Si definimos esta opción para nuestro módulo
impediremos que sean visibles los procedimientos del mismo desde fuera del
proyecto. Tiene su interés en los casos en que desde un proyecto hacemos
referencia a otro. Si no indicamos nada, por defecto, nuestros procedimientos
públicos estarán disponibles en otros proyectos que hagan referencia al nuestro.
www.necesitomas.com
273
Ya sé Excel, pero necesito más
Option Compare establece el modo en que se compararán las cadenas de texto en
nuestro procedimiento, pudiendo elegir entre modo texto y modo binario. Si
elegimos la opción texto, Option Compare Text, se considerarán iguales las
mayúsculas y las minúsculas y, para una misma letra, se ordenará primero la letra
sin acentuar y luego la acentuada. Si elegimos la opción binaria, Option
Compare Binary, se ordenan primero todas las letras mayúsculas, luego todas las
minúsculas y luego las letras acentuadas. Si no decimos nada, la opción por defecto
es realizar la comparación en modo binario.
Alcance
Si definimos una variable dentro de un procedimiento, el ámbito de esa variable
será únicamente el procedimiento, es decir, que no podremos acceder a esa variable
desde otro procedimiento. La variable se crea al empezar el procedimiento y se
elimina al terminar el procedimiento.
Si definimos una variable al inicio del módulo, antes que cualquier procedimiento,
esa variable estará disponible para todos los procedimientos de ese mismo módulo,
pero no será accesible desde otros módulos. A esto se le conoce como variable de
ámbito privado. Al ser ésta la opción por defecto para las variables de módulo, es
lo mismo declarar una variable con Dim:
Dim nombre_variable_de_módulo As Tipo_de_variable
que declararla mediante Private:
Private nombre_variable_de_módulo As Tipo_de_variable
Si queremos declarar una variable de módulo para que sea accesible desde el resto
del proyecto, emplearemos Public.
Public nombre_variable_de_módulo As Tipo_de_variable
Al definir un procedimiento, Sub o Function, también podemos anteponer
Public o Private, según queramos que el procedimiento sea accesible
respectivamente desde fuera del módulo, o sólo desde otros procedimientos del
mismo módulo. En el caso de los procedimientos, al contrario que con las
variables, la opción por defecto si no indicamos nada es Public.
Sub ProcedimientoPúblico1()
' procedimiento accesible desde fuera del módulo
End Sub
www.necesitomas.com
274
Ya sé Excel, pero necesito más
Public Sub ProcedimientoPúblico2()
'procedimiento accesible desde fuera del módulo
End Sub
Private Sub ProcedimientoPrivado()
' procedimiento accesible sólo desde este mismo módulo
End Sub
Desplazarse por las hojas
Trabajando a mano, sólo podemos modificar la celda activa, sólo podemos aplicar
un formato al rango seleccionado, sólo podemos eliminar una hoja seleccionándola
previamente, pero mediante un procedimiento programado no hace falta activar o
seleccionar un objeto para interactuar con él y, por ejemplo, leer o asignar un valor
a una de sus propiedades.
No hay que confundir seleccionado con activo. Podemos tener varias celdas
seleccionadas, pero sólo una de ellas será la celda activa; podemos tener
varias hojas seleccionadas, pero sólo una de ellas será la hoja activa.
Por ejemplo, cuando de rangos se trata, podemos tener seleccionada una celda y
asignar valor a otra, sin que por esto se active esa segunda celda.
Sub AsignarValoresSinSeleccionar()
' macro que selecciona una celda y asigna valor a otras celdas distintas
Range("A1").Select
Range("C3:D6").Value = 7
End Sub
Para los rangos, nos referiremos a las celdas de dentro del mismo de manera
similar a como lo hacemos con las celdas de la hoja, que no deja de ser otro rango,
el mayor de todos. Por ejemplo, si tenemos un rango seleccionado, con la siguiente
instrucción coloreamos de amarillo la celda de la segunda columna (B) y primera
fila (1) de ese rango:
Selection.Range("B1").Interior.Color=vbYellow
Lo mismo, esta vez con color azul, puede conseguirse, por ejemplo, de la siguiente
manera:
Selection.Cells(1,2).Interior.Color=vbBlue
www.necesitomas.com
275
Ya sé Excel, pero necesito más
Esto es válido aunque la referencia de filas y columnas se salga de la selección.
Estas referencias se empiezan a contar, en filas y columnas, desde la esquina
superior izquierda de la selección.
En tu código puedes emplear las constantes predefinidas por VBA o por
Excel (como vbYellow, vbBlue para los colores de los ejemplos anteriores)
para no tener que memorizar sus valores numéricos.
Otra manera de referirse a rangos es mediante un desplazamiento relativo a otro
rango, para lo que se emplea la propiedad Offset del rango, con la que se hace
referencia a otro rango de las mismas dimensiones, pero desplazado el número de
filas y columnas que se indique como argumentos.
Por ejemplo, para que el contenido de las celdas seleccionadas sea igual al
contenido de las celdas situadas dos columnas a la izquierda, escribiríamos:
Selection.Value = Selection.Offset(0,-2).Value
Desde luego que el rango que desplacemos puede ser una única celda, en cuyo caso
el rango desplazado sería también una celda a tantas filas y columnas de la inicial
como queramos. Los valores de desplazamiento de filas y columnas tienen el cero
en la celda y son positivos hacia la derecha y hacia abajo, y negativos hacia la
izquierda y hacia arriba.
ActiveCell.Offset(-1, 0).Value = "La celda de encima de la Activa"
También es posible acceder a rangos en otras hojas, o en otros libros, sin tener que
activarlos previamente. Por ejemplo, si tenemos dos hojas en nuestro libro,
llamadas “datos” y “resumen”:
Sub AsignarValoresOtraHoja()
' macro que asigna valores a una celda que se encuentra en otra hoja
Worksheets("datos").Activate
' y ahora, sin cambiar de hoja activa
Worksheets("resumen").Range("A1").Value = _
"escrito sin estar activa la hoja"
End Sub
Si tenemos dos libros, llamados “original.xlsx” y “copia.xlsx”, vamos a asignar
valores a celdas de la hoja “datos” del libro “copia”, manteniendo activo el libro
“original”:
www.necesitomas.com
276
Ya sé Excel, pero necesito más
Sub AsignarValoresOtroLibro()
' macro que asigna valores a una celda en otro libro, sin activarlo
Workbooks("original.xlsx").Activate
' libro original activado
Workbooks("copia.xlsx").Worksheets("resumen").Range("A1").Value = _
"escrito en copia sin estar activo el libro"
End Sub
Nomenclatura útil
No está de más conocer cierta nomenclatura para poder referirnos en nuestros
procedimientos a los elementos activos en cada momento.
ActiveCell
celda activa
ActiveChart
gráfico activo
ActivePrinter
impresora activa
ActiveSheet
hoja activa
ActiveWindow
ventana activa
ActiveWorkbook libro activo
ThisWorkbook
para referirnos al libro en que se encuentra el código.
ThisCell
empleada en funciones personalizadas, para hacer referencia a
la celda en la que está escrita dicha función.
Todos ellos son propiedades del objeto Application.
SelectedSheets hojas seleccionadas, pertenece al objeto ventana (Window).
Selection
Se refiere al objeto seleccionado en cada momento.
Dependiendo de donde se aplique se referirá a un rango, a un
gráfico, un eje, una línea, una forma,… Son muchos los
objetos que tienen esta propiedad.
Me
Se refiere al objeto donde se encuentra el código, que puede
ser un formulario, una hoja, o un libro. No es aplicable a los
módulos.
www.necesitomas.com
277
Ya sé Excel, pero necesito más
Configuración regional
Los caracteres para el separador decimal y el separador de listas en VBA no son
configurables y es independiente de la configuración del ordenador. Cuando
escribas código de programación debes tener en cuenta lo siguiente:
El separador decimal es el punto. No hay separador de miles.
El separador de listas es la coma. Esto se emplea por ejemplo para separar los
argumentos de las funciones.
El delimitador de textos es la comilla doble ".
En comparaciones de cadenas de texto, el carácter comodín para cualquier texto es
el asterisco *. Para un único carácter el comodín es la interrogación ?. Para un
dígito se emplea como comodín la almohadilla #.
Para indicar un carácter de entre una lista, se incluirán los caracteres entre
corchetes separados por comas [a,k,f]. Para considerar un carácter no incluido en la
lista, se antepondrá a la lista una exclamación[!a,k,f].
Para indicar un intervalo de caracteres, se incluirán entre corchetes el primer y el
último carácter del intervalo separados por un guión [a-f]. Para un carácter no
incluido en el intervalo se antepone una exclamación [!a-f].
Si con tus macros escribes funciones en las celdas del libro, utiliza las fórmulas
originales de Excel en inglés mediante las propiedades Formula o FormulaR1C1
del rango o celda donde vayas a escribir la fórmula para garantizar que funcionen
correctamente en cualquier equipo aunque tenga Excel instalado en otro idioma
diferente al tuyo. No utilices FormulaLocal ni FormulaR1C1Local para escribir
las fórmulas traducidas, tal como las escribirías directamente en una celda. No es
necesario que aprendas las funciones de Excel en Inglés, el grabador de macros
graba las funciones en versión original, así que puedes grabar una macro auxiliar
en la que introduzcas la fórmula que te interese en una celda, para luego comprobar
el código que ha generado el grabador.
Bien está lo que bien acaba
El ordenador no da nada por supuesto así que, salvo las sentencias que ocupan una
única línea, debes indicar el inicio y el fin de tus instrucciones para que Visual
Basic sepa dónde empiezan y dónde acaban las órdenes.
www.necesitomas.com
278
Ya sé Excel, pero necesito más
Todo Sub tiene su End Sub, todo Function tiene su End Function, todo For
tiene su Next, todo Do tiene su Loop, todo If tiene su End If, todo Select tiene
su End Select, todo With tiene su End With.
Guarda tus procedimientos
Puedes exportar los módulos de programación que has creado a un archivo de texto
que, además de poder editarse con cualquier programa de edición de texto, facilita
la copia de seguridad de tus macros.
Puedes crear un complemento con las funciones personalizadas que vayas a utilizar
en varios libros. Esto se hace guardando el libro donde se encuentra el proyecto
como complemento, con extensión .xlam (.xla en versiones anteriores); este
archivo no tiene por qué guardarse en una ubicación específica.
Para que las funciones del complemento estén disponibles, hay que dar de alta el
complemento (ver página 35) y activarlo para que Excel lo cargue al iniciarse.
Añadir una descripción y categoría al procedimiento
Al grabar una macro, en el formulario para asignar un nombre a la misma e indicar
dónde queremos grabarla, tenemos la posibilidad de agregar una descripción a la
macro, descripción que luego aparecerá en la ventana de selección de macros. Este
comentario se almacena en unas líneas que anteceden al procedimiento, pero que el
editor de VBA oculta a la vista. Si exportamos el módulo como archivo de texto y
lo editamos, vemos el contenido de estas líneas.
No se pueden añadir estas líneas, para modificar o agregar una descripción para
nuestra macro, escribiéndolas directamente en el editor de VBA. Si queremos
añadir una descripción a una macro o función existente, seleccionaremos la macro
en la lista de macros disponibles (ver página 57) y luego pulsaremos el botón
Opciones. Si se quiere agregar una descripción a una función personalizada,
aunque no aparezca en la lista de macros, se puede escribir su nombre
manualmente en el espacio habilitado para el nombre de la macro, para luego
acceder a sus opciones.
Otra cosa que podemos hacer es exportar el módulo de código a un archivo de
texto (.bas), para poder editarlo. Para agregar comentarios a procedimientos que no
los tengan, basta con añadir una línea como la siguiente, al principio del
procedimiento, indicando el nombre del procedimiento.
www.necesitomas.com
279
Ya sé Excel, pero necesito más
Attribute nombredelprocedimiento.VB_Description = "Texto descriptivo"
Esto es válido tanto para macros (Sub) como para funciones (Function). Para las
primeras, la descripción aparece en el formulario de selección de macros para
ejecutar, mientras que para las segundas, la descripción aparece en el asistente para
insertar funciones.
Mediante el método Application.MacroOptions, podemos establecer toda una
serie de propiedades asociadas a un procedimiento, como su descripción o la
categoría a la que pertenece una función (una categoría existente o una
personalizada). Si has creado un archivo de ayuda para tus procedimientos, con
este método se puede establecer la relación entre el procedimiento y su tema de
ayuda.
Este método se encarga de añadir al módulo las líneas no visibles Attribute, con
lo que no sería necesario recurrir a editar el archivo .bas del código.
Dado que las descripciones se almacenan en líneas ocultas dentro del código, no es
necesario ejecutar estas instrucciones cada vez que se abra Excel o el libro, basta
con haberlo ejecutado una vez, ya sea mediante un procedimiento o directamente
en la ventana inmediato, para que al cargar el proyecto Excel lea estas propiedades
de los procedimientos y estén disponibles en los formularios de selección de
macros o de insertar funciones.
www.necesitomas.com
280
Ya sé Excel, pero necesito más
Por ejemplo, para que la función del ejemplo anterior aparezca dentro de la
categoría de funciones “Ya sé Excel, pero necesito más” (definido en la constante
Título) con una descripción de su contenido, deberíamos ejecutar la siguiente
instrucción.
Application.MacroOptions Macro:="SumarDosEnteros", Category:=Título
Para agregar una descripción utilizaríamos el argumento Description.
Expresando la instrucción sin los nombres de los argumentos:
Application.MacroOptions "SumarDosEnteros",_
"Función de ejemplo para sumar don números enteros", , , , , Título
www.necesitomas.com
281
Ya sé Excel, pero necesito más
Proteger el código
Si vas a compartir con otras personas los procedimientos que has programado, tal
vez te interese proteger con una contraseña la visualización del código, no sólo
para que no copien tu programa, sino para evitar que accidentalmente alguien
curioso pueda alterar lo programado y deje de funcionar correctamente.
En las propiedades del proyecto, accesibles desde el menú herramientas o desde el
menú contextual en el explorador de proyectos, disponemos de una pestaña con
opciones generales del proyecto, como el nombre y descripción del mismo o el
archivo de ayuda asociado.
En la segunda pestaña, denominada Protección, es donde podremos bloquear el
proyecto para que no sea visible el código si no se introduce la contraseña
adecuada. Si se establece una contraseña pero no se activa la opción de bloquear el
código para visualización, simplemente impediremos que se acceda a las
propiedades del proyecto, pero sí se podrá modificar el código.
Algunos bucles y ejemplos útiles
Normalmente grabaremos una macro para realizar con un solo paso una tarea
repetitiva. También normalmente la macro tiene que ejecutarse muchas veces, con
lo que volvemos a tener otra tarea repetitiva: la ejecución de la macro. Si
envolvemos con un bucle la macro que hemos grabado, resolvemos la tarea
repetitiva de tener que ejecutarla una y otra vez.
A continuación se explican una serie de bucles útiles a la hora de repetir una macro
grabada, o unas instrucciones programadas. Se mostrará cómo recorrer todas las
hojas del libro, todos los objetos de gráfico dentro una hoja, todas las hojas de
gráficos del libro, todos los libros abiertos, todas las celdas que contienen datos en
una lista, todos los escenarios de una hoja, todas las vistas personalizadas de un
libro, …
Todos estos ejemplos que se incluyen a continuación son dobles: además del
bucle en sí mismo se han incluido unas instrucciones de ejemplo, también
útiles, para ilustrar esa tarea elemental, la que podemos haber grabado con el
grabador de macros y luego haber retocado ligeramente.
www.necesitomas.com
282
Ya sé Excel, pero necesito más
Recorrer todos los libros abiertos
Si normalmente trabajas con varios libros simultáneamente, puede resultarte de
utilidad un procedimiento que permita guardar todos los libros abiertos, en vez de
tener que guardarlos uno a uno.
Recorreremos con un bucle For Each todos los libros que se encuentren abiertos,
es decir, recorreremos la colección Workbooks y los iremos guardando con el
método Save.
Sub GuardarTodosLosLibrosAbiertos()
Dim Libro As Workbook
For Each Libro In Workbooks
Libro.Save
Next
End Sub
Recorrer todos los escenarios
Si has creado varios escenarios en una hoja de tu libro, puede que tengas que
imprimir todos, pero tener que ir mostrando cada uno de ellos para imprimir la hoja
particularizada para cada grupo de valores puede resultar lento, aburrido y tal vez
olvides alguno.
Vamos a recorrer todos los escenarios definidos en la hoja activa, los mostraremos
e imprimiremos la hoja particularizada para el conjunto de valores del escenario.
Para esto utilizamos la colección Scenarios de la hoja. Para mostrar el escenario
se utiliza el método Show del escenario. Por último, para imprimir la hoja se utiliza
el método PrintOut.
Sub ImprimirEscenarios()
' Bucle para imprimir todos los escenarios de la hoja activa
Dim Escenario As Scenario
For Each Escenario In ActiveSheet.Scenarios
Escenario.Show
' mostramos el escenario
ActiveSheet.PrintOut
' imprimimos la hoja
Next
End Sub
www.necesitomas.com
283
Ya sé Excel, pero necesito más
Recorrer todas las vistas personalizadas
Supongamos que un libro contiene vistas personalizadas, con diferentes columnas
ocultas, diferentes filtros aplicados a los datos y distintas configuraciones de
impresión. Si queremos imprimir cada una de las vistas personalizadas definidas,
habrá que mostrar cada una de las vistas e imprimir la hoja activa en cada una de
ellas.
Vamos a crear una macro que realice este trabajo por nosotros, recorriendo todas
las vistas definidas (colección CustomViews del libro), mostrándolas (método
Show) e imprimiendo la hoja activa (método PrintOut).
Sub ImprimirVistasPersonalizadas()
' Bucle que imprime todas las vistas del libro activo
Dim Vista As CustomView
For Each Vista In ActiveWorkbook.CustomViews
Vista.Show
ActiveSheet.PrintOut
Next
End Sub
Recorrer todas las celdas del rango seleccionado
Supongamos que tenemos que lidiar periódicamente con datos procedentes de otras
aplicaciones, en cuyas cadenas de texto aparecen sistemáticamente espacios antes y
después del texto que realmente interesa.
Vamos a definir un procedimiento que elimine todos los espacios al principio y al
final de los textos contenidos en cada una de las celdas seleccionadas.
Definiremos una variable de tipo Range a la que llamaremos Celda, para
representar una celda. Utilizaremos el objeto Selection, que representa a la
selección actual. Mediante un bucle recorreremos cada celda que hay en la
selección (For Each Celda in Selection … ). Para eliminar los espacios
emplearemos la función Trim, que incorpora Visual Basic entre otras funciones
para operar con textos.
Para concluir, mostraremos un mensaje mediante MsgBox para avisar que se ha
completado la macro. Como título para estos cuadros de mensaje emplearemos la
www.necesitomas.com
284
Ya sé Excel, pero necesito más
constante Título, que definimos al principio del módulo, para que esté disponible
en todos los procedimientos del mismo.
Option Explicit
Const Título As String = "Ya sé Excel, pero Necesito Más"
Sub EliminarEspaciosCeldasSeleccionadas()
' macro que eliminará los espacios de las celdas seleccionadas
' antes de ejecutarla seleccionar las celdas sobre las que actuar
Dim Celda As Range
For Each Celda In Selection
Celda.Value = Trim(Celda.Value)
Next
MsgBox "Espacios eliminados con éxito", vbOKOnly, Título
End Sub
Recorrer todas las hojas del libro
Supongamos que tenemos que realizar las mismas tareas en todas las hojas de un
libro. Nos interesaría disponer de una macro con los pasos a dar en cada hoja, para
luego envolver estos pasos con un bucle que los repitiera en todas las hojas
existentes.
Vamos a recorrer todas las hojas de cálculo del libro activo, escribiremos en la
celda B2 de cada hoja su nombre. Para almacenar el nombre de esta celda B2 se
definirá una constante.
Definiremos una variable de tipo Worksheet para referirnos a cada hoja, y a la
que llamaremos Hoja. Luego recorreremos la colección Worksheets del objeto
ActiveWorkbook, realizando las tareas en cada uno de los elementos de la
colección.
www.necesitomas.com
285
Ya sé Excel, pero necesito más
Sub ObtenerNombresTodasLasHojas()
' macro que recorre todas las hojas del libro
' anotamos en la celda B2 de cada hoja el nombre de la misma
Const CeldaNombre As String = "B2"
Dim Hoja As Worksheet
For Each Hoja In ActiveWorkbook.Worksheets
Hoja.Range(CeldaNombre) = Hoja.Name
Next
MsgBox "Todas las Hojas recorridas con éxito", vbOKOnly, Título
End Sub
Recorrer las hojas seleccionadas
Supongamos que tenemos una serie de hojas similares, cada una de las cuales tiene
un código en la celda B2 que identifica el contenido de la hoja. Vamos a recorrer
las hojas de cálculo seleccionadas para llamar a cada hoja con el código que figura
en esa celda.
Emplearemos, como en el ejemplo anterior, una variable de tipo Worksheet, para
recorrer con ella la colección SelectedSheets. Esta colección de hojas
seleccionadas no es una propiedad del libro, puesto que un mismo libro puede tener
varias ventanas con hojas seleccionadas diferentes, se trata de una colección que
pertenece a la ventana, que a su vez pertenece a la colección Windows del libro
activo.
De las ventanas del libro activo, la ventana activa es la número 1.
Sub NombrarHojasSeleccionadas()
' macro que recorre las hojas Seleccionadas
' llamaremos a la hoja con el valor de la celda B2
Const CeldaNombre As String = "B2"
Dim Hoja As Worksheet
For Each Hoja In ActiveWorkbook.Windows(1).SelectedSheets
Hoja.Name = Hoja.Range(CeldaNombre)
Next
MsgBox "Todas las Hojas renombradas con éxito", vbOKOnly, Título
End Sub
www.necesitomas.com
286
Ya sé Excel, pero necesito más
Recorrer una lista de datos
Supongamos que un aparato electrónico de medida genera unos archivos de texto
separados por comas con la información que está midiendo, pero con la
particularidad de que cada registro no está en una única fila, sino que ocupa dos
filas: en la primera fila de cada registro figuran los datos identificativos del punto
leído y en la segunda fila aparecen tres datos de los parámetros medidos.
Con esta estructura del archivo, Excel no es capaz de tratar adecuadamente los
datos, puesto que se necesitaría que cada registro ocupase sólo una fila.
Vamos a resolver este problema de la siguiente manera: Abriremos el archivo de
texto con Excel, nos situaremos en la primera celda con datos y grabaremos una
macro, activando la opción de referencias relativas, que consistirá en mover los tres
datos de las lecturas que se encuentran en la fila de debajo de la actual para
colocarlos a la derecha de los datos de la fila actual. Como la segunda fila, la que
tenía las lecturas, ahora está vacía, la eliminamos. Con la intención de prepararnos
para repetir el proceso con el siguiente dato, activamos la celda de debajo de la
anterior. Detenemos la grabación. Esta macro que acabamos de grabar la vamos a
repetir ahora en todas las filas que tengan datos, y esto lo podemos saber porque en
todos los datos hay un valor en la primera columna, que es la celda activa en cada
paso de la macro, así que lo repetiremos hasta que la celda activa, que va
avanzando en cada ciclo del bucle, esté vacía Do
Until
IsEmpty(ActiveCell) ¿había dicho antes que esto se parece mucho al inglés?
Sub ConvertirArchivoLecturas()
' macro que convertirá un listado con registros en dos filas
' a un listado con cada registro en una sola fila
' constante para definir la primera celda que contiene datos
Const PrimeraCeldaConDatos As String = "A1"
' seleccionamos la primera celda
Range(PrimeraCeldaConDatos).Select
' Bucle que se repite hasta que la celda activa esté vacía
Do Until IsEmpty(ActiveCell)
' Instrucciones generadas automáticamente al grabar la macro
ActiveCell.Offset(1, 1).Range("A1:C1").Select
Selection.Cut Destination:=ActiveCell.Offset(-1, 3).Range("A1:C1")
www.necesitomas.com
287
Ya sé Excel, pero necesito más
ActiveCell.Rows("1:1").EntireRow.Select
Selection.Delete Shift:=xlUp
ActiveCell.Select
' Fin de las instrucciones grabadas
Loop
MsgBox "Datos convertidos con éxito", vbOKOnly, Título
End Sub
Recorrer todas las hojas de gráfico
Cuando tenemos muchos gráficos es fácil que tengamos escalas diferentes entre
ellos, pues por defecto se adaptan automáticamente a los valores representados.
Vistos de uno en uno no pasa nada, pero si pretendemos comparar entre sí varios
gráficos, facilitaría mucho las cosas que todos ellos dispusiesen de la misma escala
vertical.
Vamos a recorrer todas las hojas de gráfico del libro activo, colección Charts,
para igualar la escala vertical de todos los gráficos, para ello preguntaremos al
usuario mediante InputBox los valores máximo y mínimo a aplicar.
Sub IgualarEscalaTodosGráficos()
' Macro que iguala las escalas de los gráficos de las hojas de gráfico
' Se preguntarán al usuario los valores mínimo y máximo
Dim HojaGráfico As Chart
Dim ValorMínimo As Single, ValorMáximo As Single
' preguntamos por los valores máximo y mínimo
ValorMínimo = CSng(InputBox("valor MÍNimo", Título))
ValorMáximo = CSng(InputBox("valor MAXimo", Título))
' recorremos las hojas de gráfico seleccionadas
For Each HojaGráfico In ActiveWorkbook.Charts
' aplicamos los valores al eje de valores
With HojaGráfico.Axes(xlValue)
.MinimumScale = ValorMínimo
.MaximumScale = ValorMáximo
End With
Next
www.necesitomas.com
288
Ya sé Excel, pero necesito más
MsgBox "Escalas igualadas en las hojas de gráfico", vbOKOnly, Título
End Sub
Recorrer las hojas de gráfico seleccionadas
Un gráfico en Excel está muy bien, pero para verlo necesitamos tener Excel
instalado. Podemos copiar el gráfico y pegarlo en nuestro programa de edición de
texto como una imagen, pero sería muy útil poder exportar los gráficos de Excel a
un archivo de imagen para poder emplearlos más adelante con el programa de
maquetación que prefieras, o para emplearlos en una página web.
Vamos a recorrer los gráficos de las hojas de gráfico seleccionadas, exportándolos
a archivo de imagen gif con el método Export del gráfico. Para cada gráfico se
preguntará al usuario dónde guardar el archivo de imagen, empleando como
nombre por defecto para el archivo el nombre de la hoja.
Se añade también una comprobación, para no exportar el gráfico si el usuario
cancela el cuadro de diálogo donde se le pregunta el nombre del archivo.
No se comprueba si ya existe un archivo con el mismo nombre, en cuyo caso se
sobrescribirá sin preguntar.
Sub ExportarImagenGráficosSeleccionados()
' Macro que exportará a archivos gif los gráficos seleccionados
Dim HojaGráfico As Chart
Dim NombreArchivo
For Each HojaGráfico In ActiveWorkbook.Windows(1).SelectedSheets
With HojaGráfico
.Select ' lo seleccionamos para que se muestre en pantalla
NombreArchivo = Application.GetSaveAsFilename(.Name & ".gif", _
"Imagen Gif, *.gif", , "Elija el nombre del archivo. " & Título)
' si no se cancela la introducción
If TypeName(NombreArchivo) = "String" Then
.Export NombreArchivo, "gif"
End If
End With
Next
MsgBox "Gráficos seleccionados exportados a imagenes", vbOKOnly, Título
www.necesitomas.com
289
Ya sé Excel, pero necesito más
End Sub
Recorrer todos los gráficos de una hoja
Si en una hoja tenemos varios gráficos con la intención de imprimirlos a la vez,
junto con más datos presentes en las celdas de la hoja, podemos mejorar el aspecto
y facilitar la lectura y comparación de los gráficos si todos están alineados y tienen
el mismo tamaño.
Vamos a recorrer todos los gráficos presentes en una hoja, e igualaremos su altura,
su anchura y su posición en horizontal para que queden alineados en la hoja,
tomando como referencia los valores del primero de ellos (el primero de la
colección ChartObjects).
Sub IgualarTamañoyPosiciónGráficosEnHoja()
' Macro que iguala el tamaño y la posición horizontal de todos _
los gráficos de la hoja activa
Dim Gráfico As ChartObject
Dim PosHorizontal, Alto, Ancho
' tomamos como referencia el primer gráfico
With ActiveSheet.ChartObjects(1)
Alto = .Height
Ancho = .Width
PosHorizontal = .Left
End With
For Each Gráfico In ActiveSheet.ChartObjects
With Gráfico
.Height = Alto
.Width = Ancho
.Left = PosHorizontal
End With
Next
MsgBox "Tamaño y posición igualados con éxito", vbOKOnly, Título
End Sub
www.necesitomas.com
290
Ya sé Excel, pero necesito más
Abrir y cerrar libros
Vamos a suponer que, por circunstancias de la vida, han llegado hasta tus manos
muchísimos libros (dos o tres, o incluso cien o más) procedentes de una campaña
de toma de datos realizada por diferentes personas. Ahora tu misión es agrupar en
un único archivo todos esos datos que se encuentran en estos libros con estructura
similar.
Vamos a preguntar al usuario de esta macro qué archivos contienen los datos que
quiere importar, los iremos abriendo uno a uno, y copiaremos la hoja que contiene
los datos, de nombre Datos, al libro activo en el momento de ejecutar la macro.
Los nombres de los archivos seleccionados por el usuario se almacenarán en una
matriz. Se realizará un bucle por los elementos de la matriz, para lo cual se
emplean las funciones LBound y UBound (lower bound y upper bound) para
obtener los límites inferior y superior de la misma. Se abre cada libro en modo sólo
lectura, se copia la hoja de datos al libro inicial y se cierra sin guardar los cambios.
Se realiza una comprobación con la función VarType, para terminar la ejecución
de la macro si el usuario cancela el cuadro de diálogo de selección de archivos.
Se utilizan dos objetos, HojaInicial para referirse a la hoja activa al ejecutar la
macro y LibroDatos, que se referirá a cada uno de los libros de datos que se vayan
abriendo. Al final de la macro se liberan estos objetos asignándoles el valor
Nothing.
Sub ImportarHojasDeVariosLibros()
' macro que permite elegir varios libros, para importar hojas de datos
Const NombreHojaDatos As String = "Datos"
Dim HojaInicial As Worksheet, LibroDatos As Workbook
Dim Selección
'variable para almacenar los nombres de los archivos
Dim i As Integer
' contador auxiliar
Set HojaInicial = ActiveSheet
' empleamos el método GetOpenFilename para elegir los archivos
' con argumento multiselect=True para poder elegir varios archivos
Selección = Application.GetOpenFilename("Archivos Excel,*.xl*", , _
"Elija archivos a Importar. " & Título, , True)
' Si cancelo el cuadro de diálogo termina la ejecución
If VarType(Selección) = vbBoolean Then Exit Sub
www.necesitomas.com
291
Ya sé Excel, pero necesito más
' Bucle que recorre los elementos de la matriz
For i = LBound(Selección) To UBound(Selección)
Workbooks.Open Selección(i), , True
' Al abrir un libro, éste se convierte en el libro activo.
Set LibroDatos = ActiveWorkbook
LibroDatos.Worksheets(NombreHojaDatos).Copy after:=HojaInicial
LibroDatos.Close False
Next
Set HojaInicial = Nothing
Set LibroDatos = Nothing
End Sub
Generar escenarios
Los escenarios son muy útiles para evaluar diferentes situaciones en las que
cambiamos los datos de partida.
Cuando sólo vamos a evaluar unos pocos casos no cuesta nada introducirlos a
mano, pero si lo que queremos es tener una casuística más amplia con muchas
combinaciones de datos iniciales, la introducción de los mismos mediante el cuadro
de diálogo de creación de escenarios puede resultar tediosa, y como consecuencia
de ello, sujeta a despistes, olvidos y errores tipográficos.
Vamos a generar automáticamente escenarios cambiando los valores de los datos
de partida mediante bucles que asignen valores a las celdas cambiantes a intervalos
regulares definidos por el usuario.
Para facilitar la introducción de los datos se crea un formulario, al que llamaremos
frmDefinirCeldas, donde se definirá para cada celda cambiante el valor inferior, el
valor superior y el incremento a dar en cada paso.
Se definen unas variables públicas para que sean accesibles tanto desde el
procedimiento, como desde el formulario. En concreto unas variables que nos
indiquen qué botón se ha pulsado en el formulario, y unas variables para almacenar
las celdas cambiantes y sus valores, que serán accesibles desde el procedimiento
principal y desde un procedimiento auxiliar para generar los escenarios.
www.necesitomas.com
292
Ya sé Excel, pero necesito más
Las opciones y declaraciones en el módulo principal son las siguientes:
Option Explicit
Option Base 1 ' para que las matrices empiecen en el 1
Const Título As String = "Ya sé Excel, pero necesito más."
Public MásCeldas As Boolean, Cancelar As Boolean ' botones formulario
Dim NúmeroCeldasCambiantes As Integer
Dim NúmeroEscenario As Integer
' contador para los escenarios
Dim ValorInicial() As Single, ValorFinal() As Single, Paso() As Single
Dim ValorCelda() As Single
'Almacenaremos los valores de las celdas
Dim CeldasCambiantes As Range
El procedimiento principal comprueba si ya hay escenarios definidos en la hoja
activa, y en caso afirmativo pregunta al usuario si se quieren eliminar antes de
crear los nuevos escenarios. Se realiza una llamada al formulario de introducción
de datos, para que se vayan definiendo las celdas cambiantes y los valores que
definirán el bucle para cada celda, esta operación se repite dentro de un bucle hasta
que se pulse la tecla terminar en el formulario.
Los valores inicial, final y el paso para cada celda cambiante, se almacenan en
matrices, que se redimensionan con un elemento más al agregar una nueva celda
cambiante.
Una vez definidas las celdas y los valores, se llama al procedimiento de nombre
CrearCombinación, que genera las combinaciones de valores que definirán cada
escenario.
www.necesitomas.com
293
Ya sé Excel, pero necesito más
Sub CrearEscenarios()
' procedimiento para generar escenarios con combinaciones de parámetros.
Dim Respuesta As Integer, i As Integer
Dim Escenario As Scenario
'si ya hay escenarios creados
If ActiveSheet.Scenarios.Count <> 0 Then
Respuesta = MsgBox("Esta hoja contiene escenarios." & vbCrLf & _
"¿Desea eliminarlos antes de crear los nuevos escenarios?", _
vbExclamation + vbYesNo + vbDefaultButton1, Título)
If Respuesta = vbYes Then
For Each Escenario In ActiveSheet.Scenarios
Escenario.Delete
Next
End If
End If
'iniciamos contadores
NúmeroEscenario = 0
NúmeroCeldasCambiantes = 0
Do
' abrimos el formulario para ir definiendo las celdas
frmDefinirCeldas.Show
' Al cerrar el formulario, leemos los datos
If Cancelar Then Exit Do
'por si cancelamos la introducción
NúmeroCeldasCambiantes = NúmeroCeldasCambiantes + 1
If NúmeroCeldasCambiantes = 1 Then 'primera celda
Set CeldasCambiantes = Range(frmDefinirCeldas.txtCeldas.Text)
Else ' segunda y sucesivas celdas Unimos la celda a las existentes
Set CeldasCambiantes = Union(CeldasCambiantes, _
Range(frmDefinirCeldas.txtCeldas.Text))
End If
'redimensionamos matrices para almacenar un valor más
ReDim Preserve ValorInicial(NúmeroCeldasCambiantes)
ReDim Preserve ValorFinal(NúmeroCeldasCambiantes)
www.necesitomas.com
294
Ya sé Excel, pero necesito más
ReDim Preserve Paso(NúmeroCeldasCambiantes)
'leemos valores
ValorInicial(NúmeroCeldasCambiantes) = frmDefinirCeldas.TxtDesde
ValorFinal(NúmeroCeldasCambiantes) = frmDefinirCeldas.TxtHasta
Paso(NúmeroCeldasCambiantes) = frmDefinirCeldas.txtPaso
'Borramos los datos del formulario
With frmDefinirCeldas
.TxtCeldas = ""
.TxtDesde = ""
.TxtHasta = ""
.TxtPaso = ""
End With
Loop While MásCeldas
ReDim ValorCelda(NúmeroCeldasCambiantes)
Call CrearCombinación
MsgBox "Se crearon " & NúmeroEscenario & " escenarios.", _
vbOKOnly, Título
End Sub
El código para responder a los eventos del formulario es el que se muestra a
continuación. Se utiliza la variable global “MásCeldas” para saber que se desea
añadir una celda cambiante más, se utiliza la variable “Cancelar” para conocer en
el procedimiento principal que se ha cancelado la introducción.
Private Sub CmdAgregar_Click()
MásCeldas = True
Me.Hide
End Sub
Private Sub CmdCancelar_Click()
Cancelar = True
MásCeldas = False
Me.Hide
End Sub
Private Sub CmdSalir_Click()
MásCeldas = False
www.necesitomas.com
295
Ya sé Excel, pero necesito más
Me.Hide
End Sub
Private Sub UserForm_Terminate()
' al cerrar el formulario con el botón de la barra de título
Cancelar = True
MásCeldas = False
End Sub
El procedimiento para crear las combinaciones de valores que forman el escenario
es un procedimiento recursivo, esto es, se llama a sí mismo. En principio no
sabemos cuántas celdas cambiantes se van a definir, con lo que no podemos anidar
un bucle con tantas variables como celdas cambiantes. Lo que se emplea en este
caso es un procedimiento que crea un bucle para una variable, y si hay más celdas
cambiantes se llama a sí mismo desde dentro del bucle para asignar valores a la
siguiente celda, así hasta que se llega a la última celda cambiante.
Cuando se llega a la última celda cambiante, se crean los escenarios, se asigna un
nombre indicando el número de escenario así como la hora de creación y se añade
un comentario.
Private Sub CrearCombinación(Optional Parámetro As Integer)
If IsMissing(Parámetro) Then Parámetro = 1
Dim sngAuxiliar As Single
For sngAuxiliar = ValorInicial(Parámetro) To ValorFinal(Parámetro) _
Step Paso(Parámetro)
ValorCelda(Parámetro) = sngAuxiliar
If Parámetro < NúmeroCeldasCambiantes Then
Call CrearCombinación(Parámetro + 1)
Else
' ya están todos los valores definidos, creamos el escenario
NúmeroEscenario = NúmeroEscenario + 1 ' contador de escenarios
ActiveSheet.Scenarios.Add Name:="Escenario " & NúmeroEscenario & _
Format(Time(), " hh:mm:ss"), ChangingCells:=CeldasCambiantes, _
Values:=ValorCelda, Comment:= "Creado automáticamente." & vbLf & _
Título, Locked:=True, Hidden:=False
End If
www.necesitomas.com
296
Ya sé Excel, pero necesito más
Next
End Sub
Ganando tiempo al tiempo
Habrás comprobado que, mientras se ejecuta una macro, en la pantalla se muestran
todos los pasos que va dando el ordenador. Esta actualización de la pantalla
también consume recursos del equipo que, en general, no supone mucho problema
desde el punto de vista del tiempo de ejecución, e incluso puede servir para
impresionar a tus amigos al enseñarles cómo el ordenador trabaja solo bajo tu
control.
Cuando el procedimiento requiere de mucho tiempo de cálculo y trabaja mucho
activando y desactivando libros, cambiando de ventana activas, escribiendo valores
en celdas, etc., desactivar la opción de actualizar la pantalla puede ahorrarnos un
precioso tiempo. Claro que los ordenadores cada vez van más rápido y el ahorro tal
vez no sea significativo, pero se nota la diferencia.
Esta opción se controla con la propiedad ScreenUpdating del objeto
Application, así que para desactivar la actualización de pantalla, al inicio de
nuestras macros (dentro de la macro) escribiremos lo siguiente:
Application.ScreenUpdating = False
Si no tienes que impresionar a nadie y una vez que hayas comprobado que tu
macro funciona correctamente, no dudes en incluir esta línea en tu código.
www.necesitomas.com
297
Ya sé Excel, pero necesito más
Epílogo
En el trabajo existen dos tipos de personas, los que se creen imprescindibles y los
que sabemos que no lo somos. Los expedientes de regulación de empleo se
encargan de demostrar a los primeros que estaban equivocados, mientras los
segundos dejan todo organizado para que durante sus vacaciones cualquiera pueda
entender lo que han estado haciendo y no tengan que molestarles por una
trivialidad.
Merece la pena dedicar un tiempo a facilitar la comprensión de las hojas de cálculo
que tú has creado (sería aplicable a todo en la vida), para que cuando otra persona
tenga que utilizarlas no requiera estar horas tratando de entender qué hiciste.
Muchas veces ese otro eres tú mismo, un par de años después, cuando has olvidado
por completo en qué celdas debes introducir los datos o qué había que hacer para
que la aplicación calculara correctamente.
Haz tus hojas limpias, sin trampas ocultas, diferencia claramente qué son los datos
que hay que introducir y qué son los resultados. Añade todos los comentarios que
estimes oportunos a la hoja, siempre serán de utilidad. No viene mal incluir una
hoja en el libro con una breve descripción de la finalidad y del funcionamiento del
mismo. Siempre que sea posible, agrupa todas las hojas de una misma aplicación
en un mismo libro, para evitar que en un traslado se pierda algún archivo.
Comprueba que tu modelo de cálculo funciona adecuadamente con diferentes
datos, no sólo para un conjunto limitado de valores. Presta especial atención a
posibles valores negativos, combinaciones de valores que no tiene sentido que
existan en la realidad, etc., con ello evitarás errores o resultados equivocados cuya
causa puede no ser fácilmente localizable. Siempre que sea aplicable, añade reglas
de validación para evitar la introducción de datos incoherentes o erróneos.
Antes de empezar a teclear como un loco, detente un momento a pensar cómo
quieres que sea el resultado final, para luego poder dirigirte hacia él por el
camino más corto.
www.necesitomas.com
298
www.necesitomas.com
299
Índice alfabético
A
acceso rápido
personalizar, 42, 232
Access, 155, 159, 175
actualizar pantalla
desactivar, 297
C
calcular
precisión, 210
precisión en pantalla, 80, 86
cálculo paramétrico, 200
cálculos iterativos, 210
agrupar, 122, 128
cámara, 59
análisis Y si, 200
cambiar filas por columnas, 40
área de trabajo, 56
celdas
autoesquema, 129
alineación, 95
autofiltro, 117
comentarios, 45
automatizar tareas, 228
estilo, 60
ayudante de Office, 22
imprimir cuadrícula, 66
nombre, 31
B
ocultas y visibles, 42, 121
banda de opciones, 21
rellenar automáticamente, 28
barra de estado, 49, 50
seleccionar especial, 42
barra de herramientas, 21
personalizar, 42, 60, 232
centrar en la página, 65
centro de confianza, 144
bordes, 97
cifrar documento, 227
botones, 221
coma flotante, 210, 246
bucles, 282
combinaciones de teclas, 37, 231
buscar objetivo, 212
combinar celdas, 96
combinar escenarios, 206
www.necesitomas.com
300
comentarios, 45
imprimir, 66
validación, 123
datos externos
comodín, 74, 176, 278
actualización, 166
comparar alternativas, 200
conexión, 170
complementos, 35, 69
modificar origen, 171
búsquedas, 71
propiedades, 166
crear, 279
romper vínculo, 177
solver, 215
ventajas, 144
suma condicional, 84
configurar página, 64
consolidar datos, 134
contraseñas, 224, 226, 282
controles de formulario, 221
convenciones, 17
convertir texto en tabla, 151
copia de seguridad, 227
criterios de convergencia, 210, 217
criterios de filtrado, 73
D
datos
agrupar, 128
algunos consejos, 114
filtrar, 117
ordenar, 122
resumir, 133, 179
diestros, 17
E
editor de código, 234
eliminar duplicados, 120, 141
encabezado, 66
encriptar, 227
enlaces, 24
errores
2+2=5, 80
funciones, 76
imprimir, 66
investigar causa, 110
localizar, 43
prevención, 112, 123, 225
escenarios, 204
generar automáticamente, 292
imprimir todos, 283
esquema, 128
www.necesitomas.com
301
estilo
de celda, 24, 60, 129
inspección, 111
ver, 57
de tabla, 22, 138
fracciones, 91
temas, 62
funciones
estudio paramétrico, 200
asistente, 68
euro, 35
base de datos, 72
eventos, 234
buscar, 69
F
complejos, 79
condicionales, 82
F1C1, 47
convertir unidades, 75
fechas, 78, 92
estadísticas, 108
filas y columnas, 22
fecha y hora, 78
filtros, 117
información, 75
avanzados, 120
matriciales, 81
avanzados criterios, 73
redondeo, 79
formato
referencia a celdas, 70
alineación de celda, 95
texto, 77
condicional, 22, 98, 113, 119, 123
tratamiento de errores, 76
ejemplos, 88
fechas, 92
personalizado, 86
formularios, 221
fórmulas
auditoría, 110
evaluar paso a paso, 110
extender, 27, 121
extender automáticamente, 139, 168
www.necesitomas.com
funciones personalizadas, 242
G
Google, 21
gráfico
abscisa proporcional valores, 101
añadir más datos, 40
celdas ocultas, 104
exportar archivo imagen, 289
302
igualar escalas, 288
igualar propiedades, 290
línea de tendencia, 107
valores nulos, 104
gráfico dinámico, 199
guardar todos, 283
listas, 22, 137
M
Macintosh, 92
macros, 228
H
editor, 58, 234
habilitar contenido externo, 144
ejecutar, 57, 232
hoja por defecto, 24
grabar, 230
horas, 93
habilitar, 229
MathCad, 75
I
importar archivo texto, 147
imprimir
configurar página, 64
inecuaciones, 215
información duplicada, 120, 141
inicio, 24
ir a, 42
iterar, 210
matrices, 81
maximizar, 215
menús, 21
métodos, 234
Microsoft, 22
minimizar, 215
mínimos cuadrados, 31, 82, 107, 220
modelo de objetos, 233
mostrar ventana, 55
J
Justificar texto, 43
N
nombres
L
ámbito, 32
L1C1, 47
aplicar, 34
libro por defecto, 24
definir, 31, 166
libros abiertos
ver en la hoja, 57
www.necesitomas.com
303
novedades, 21
múltiple, 70
números complejos, 79
nombre, 31
O
objetivo, 212, 215
ocultar ventana, 55
redondear, 79, 86
referencia
3D, 133
absoluta, 26
ODBC, 159
circular, 210
ordenar, 22
externa, 24
orígenes de datos, 145
funciones, 70
P
parámetros, 173, 200
pdf, 22
pegado especial, 39
modo de visualización, 47
nombres, 31
relativa, 26
rellenar, 28
personalizar, 42, 60, 232
resolución de ecuaciones, 82, 210,
212, 215
pie de página, 66
resumir alternativas, 204
plantillas por defecto, 24
resumir escenarios, 207
programación, 228
programación lineal, 215
propiedades, 234
proteger libro, 224
S
salto de página, 50
seguridad, 224
seleccionar, 42
Q
Query, 161
R
rango
separador decimal, 18, 149, 278
series, 28
sólo lectura, 227
solucionar problemas, 210, 212, 215
solver, 215
www.necesitomas.com
304
SQL, 175
vínculos, 25
subtotales automáticos, 130
vista diseño, 50
suma condicional, 35, 84
vistas personalizadas, 55
T
tabla de datos, 201
tabla dinámica, 179
tablas, 137
estilo, 22, 138
imprimir todas, 284
Visual Basic, 228
bucles, 252, 282
colección, 255
condicionales, 256
constantes, 249
tareas repetitivas, 228
depuración, 239
teclas, 37
editor, 234
temas, 62
funciones disponibles, 270
tendencia, 31, 109
interactividad, 260
tiempo, 92
matrices, 248
transponer, 40
proteger código, 282
V
variables, 245, 274
visualización, 50
VBA, 228
ventana
dividir, 52
inmovilizar paneles, 51
nueva, 53
ver, 47
www.necesitomas.com
Y
y si..., 200
Z
zoom, 49
zurdos, 17, 37
305

Documentos relacionados