Ya sé 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

0 downloads 8 Views 4MB Size

Recommend Stories


Si necesito... Alimentos
Si necesito... Alimentos Programa de Asistencia Nutricional Suplementaria/SNAP (Anteriormente cupones de alimentos o LINK) Departamento de Servicios H

GLOSARIO DE EXCEL. Excel:
Computer Data Systems. Líder en Enseñanza. GLOSARIO DE EXCEL Excel: Es un programa de aplicación para manejar Libros con hojas de cálculo. Es simila

Story Transcript

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

Get in touch

Social

© Copyright 2013 - 2024 MYDOKUMENT.COM - All rights reserved.