Manual Excel Avanzado.pdf

Anuncio
MANUAL EXCEL AVANZADO BIOS Manual Excel Avanzado BIOS Módulo Funciones Avanzadas Primer Ejemplo – Funciones simples Dada la siguiente planilla: Supongamos que la nota final se calculará basándonos en el promedio de notas que obtuvo cada estudiante en sus parciales. Por lo tanto aplicaremos la función promedio: =PROMEDIO (B2:D2) Recordemos que cualquier función que vayamos a aplicar debemos posicionarnos sobre la celda, y comenzar con el signo = o en su defecto el signo +. Por otro lado si hubiéramos querido tomar en cuenta solo dos de los parciales dentro del promedio tendríamos que: =PROMEDIO (B2; D2) En el caso de que queramos tomar rangos discontinuos esto se aplicaría de la siguiente forma: =PROMEDIO (B2:D2; H2:J2) La planilla hasta ahora quedaría así: Además en el caso de copiar esta fórmula, podríamos realizarlo mediante la opción clásica de dar sobre el botón derecho sobre la celda, seleccionar la opción copiar, y luego marcar el rango (en este caso de E3:E8) y darle pegar. Mas allá de esta clásica opción también se podría copiar la formula de forma simple dando DOBLE CLIC en el borde inferior derecho de la celda que contiene la formula a copiar. En la siguiente columna, se hará un breve repaso de la formula condicional SI. De acuerdo a esta formula deberá aplicarse: =SI (prueba _ lógica; valor verdadero; valor falso) En el caso de la planilla que manejamos anteriormente, esta quedaría de esta manera: =SI (E2<5; “Reprobado”; “Aprobado”) Si tuviéramos más de una función SI para establecer, recordar que siempre vamos a tener que evaluar el conjunto de opciones de nuestro problema (conviene comenzar desde el nivel mas bajo) y haremos una función menos que opciones de nuestro caso. =SI (E2<5; “Reprobado”; SI (E2<=7; “Parcial”; “Aprobado”) No debemos perder de vista que la función SI puede ser utilizada en este tipo de casos, y concatenar hasta 7 funciones SI (tenemos este límite). De la misma manera que anteriormente lo hicimos, podemos copiar la fórmula sin problemas. No olvidemos que hasta ahora hemos dejado de lado el tema de Referencias Relativas y Absolutas ya que no hizo falta fijar ninguna de las celdas a copiar. Vamos a armar un cuadro adicional anexo a la planilla para implementar otras funciones: En este cuadro calcularemos cuantos fueron los alumnos que obtuvieron como calificación Aprobado, Parcial y Reprobado. A su vez calcularemos con respecto al total de alumnos, el porcentaje que obtuvo cada calificación. Lo haremos aplicando la función CONTAR.SI, de la siguiente manera: =CONTAR.SI (F2:F8; “Aprobado”) También podríamos haber escrito: =CONTAR.SI (F2:F8; A12) Veamos a su vez que si pensáramos en copiar esta fórmula debería quedar: =CONTAR.SI($F$2:$F$8;A12) La razón del signo $ es el hecho de fijar el rango F2:F8 ya que las calificaciones son fijas, mientras que la celda A12 es relativa ya que cambiará de fila al copiar. En la función CONTAR.SI tenemos en cuenta el rango a evaluar, y como segundo argumento tenemos el criterio a tomar en cuenta para copiar. Si aplicamos la funcion CONTAR, o también CONTARA, podremos saber cuantos alumnos tendremos. =CONTAR (E2:E8) En este caso la función CONTAR aplica perfectamente para este caso puesto que las celdas que se evaluan tienen contenido numérico. En el caso de querer hacer un recuento por apellidos: =CONTARA(A2:A8) Aquí aplica perfectamente ya que esta función nos permite evaluar celdas no vacías. Pasando a otro tema veremos a continuación alguna aplicación adicional de la función SI. En la siguiente planilla se evaluará la calidad de los productos según su diámetro. Si el diámetro está comprendido entre 10 y 20 su calidad será A, y de lo contrario será B. Vemos que en este caso no solo se aplicó la función SI, sino que se combinó con la opción Y (también podriamos haber aplicado la opción O), de la siguiente manera: =SI(Y(opcion 1; opcion 2;…..); valor verdadero; valor falso) =SI(O(opcion 1; opcion 2;…..); valor verdadero; valor falso) En el caso de combinar con la opción Y, recordemos que estaríamos hablando de que si se cumplen UNA Y CADA UNA DE LAS OPCIONES EN FORMA SIMULTANEA se aplicaría la opción verdadera, y en el caso que no fuera así se aplica la opción falsa. Mientras que en el caso de las opciones que damos mediante el O, con que una de las opciones fuere verdadera, ya se aplicaría la opción del valor verdadero en la condición, y solo si no se cumple ninguna de las opciones se aplicaría el valor falso. Pasemos ahora a un nuevo ejemplo y continuamos en la aplicación de funciones: En este caso aplicamos una función de búsqueda, que se denomina BUSCARV. Recordemos que la forma de utilizar esta función de búsqueda es la que se demuestra a continuación: =BUSCARV(valor buscado; matriz; número de columna; [ordenamiento]) En el caso particular de la planilla =BUSCARV(A13; A2:C8; 3; FALSO) Vemos aquí que el valor buscado hace referencia a la celda donde el usuario cargará el dato en el que se basará la búsqueda. Este dato no debe ser parte de la matriz de búsqueda (A2:C8) si no, esto no tendría sentido en la búsqueda. Luego se carga la matriz, al hacer referencia a la matriz no cargamos los títulos de la misma, solo el contenido (registros de la misma), luego cargamos la referencia al número de columna que se va a extraer, en este caso la columna 3 ya que es la del stock (columna con dato a extraer) y por último como argumento OPCIONAL el orden dentro de la matriz, en este caso falso ya que la primera columna de la matriz no está ordenada en forma ascendente. Además en el caso del argumento opcional de ORDEN esto tambien es realmente significativo al momento de aplicar la coincidencia en la búsqueda. Si este argumento es FALSO y la busqueda no encuentra el dato preciso retorna un error. Por ejemplo: En este caso al no encontrar el Artículo A5565 devuelve un error del tipo #N/A, o dato NO DISPONIBLE (Not Available). En cambio veamos que pasa cuando el argumento de orden lo cambiamos a VERDADERO. En este caso, mas allá que el producto A5565 no se encontró de todas formas retornó el valor de stock del artículo cuya coincidencia no era exacta, sino aproximada. En muchos casos cuando la búsqueda no tiene porque ser exacta, este argumento VERDADERO puede ayudarnos a encontrar el dato más cercano que coincida con nuestra búsqueda. En cambio anteriormente cuando el argumento fue cambiado por FALSO, la búsqueda no nos retornaba ningún valor ya que el dato no lo encontraba (con coincidencia exacta) en la matriz de registros. En otro ambito también sería bueno en una planilla controlar los ingresos de información, y es por esto que vamos a introducir el tema VALIDACIÓN DE REGISTROS. VALIDACIÓN DE DATOS En el caso de la planilla que presentamos anteriormente, vamos a comenzar este tema de validación tratando de que el usuario se limite a agregar artículos con STOCK entre 0 y 300, y no pueda introducir un número menor a cero, ni mayor a 300. Veamos como operar: 1. Pintamos las celdas de stock (celdas en las que vamos a dar la regla de validación) 2. Luego vamos al menú de datos – validación 3. Establecemos la regla de validación a operar 4. Opcionalmente definimos mensaje entrante 5. Opcionalmente definimos mensaje de error Veamos el paso en cada pantalla: En este primer paso marcamos las celdas de Stock y luego nos dirigimos al menú de Datos – Validación En el segundo paso definimos la regla de validación: En este caso, definimos que lo que vamos a permitir es un número entero en dichas celdas y este número deberá estar comprendido entre 0 y 300. Tenemos otras opciones al desplegar el cuadro Permitir, que las usaremos en algunos ejemplos posteriores. Poniendo otro ejemplo: En este caso nos posicionamos en la celda donde la persona va a realizar la búsqueda del stock de determinado artículo (A13), y damos una regla de validación para que solo pueda ingresar códigos de artículos existentes en la matriz de datos: Veamos que sucede cuando aplicamos también el uso de la solapa de Mensaje Entrante Esto resultará cuando la persona se posicione sobre la celda A13 (en la cual se determinó la regla de validación). Veamos como en la pantalla que se muestra a continuación, se muestra el mensaje entrante: Aquí vemos el mensaje entrante al posicionarnos sobre la celda Un comentario con respecto a esto, es el hecho de poder trabajar en las reglas de validación, tanto con rangos dinámicos como también con rangos con un nombre determinado. Veamos como funciona: En este caso, al dar como origen de la lista la selección: =$A:$A (referencia a la columna A) La ventaja que se logra es el hecho de poder incorporar mas artículos con su respectivo stock a la matriz de esa manera integrarlos a la regla de validación de forma automática. Aplicando lo que comentabamos: En este caso agregamos un artículo a la lista, y luego vemos como el artículo se integra en forma automática al cuadro combinado en la celda que tiene la validación. DEFINIR NOMBRES A RANGOS En el siguiente ejemplo veremos como aplicamos en lugar de una referencia a una lista formada por determinadas celdas, a un rango con un nombre preasignado En primer término asignaremos al rango, un nombre como por ejemplo ARTICULOS En el área señalada asignamos el nombre al rango de artículos. O sea primero, señalamos el rango de artículos (A2:A9) y luego le designamos un nombre a este rango. De ahora en mas cuando yo quiera hacer referencia a las celdas A2:A9 ya podremos escribir simplemente ARTICULOS que Excel entenderá las direcciones a las que se hacer referencia. Otra manera de plantear las referencias de rangos a los que se le aplica un nombre sería: Mediante el menú Insertar – Nombre – Definir, también podremos tanto crear rangos con nombre, eliminar rangos con nombre, y también modificarlos. Veamos que en dicha pantalla podemos asignar el nombre, y en donde define Se refiere a: podremos determinar la dirección de las celdas que vamos a tener dentro del rango. En este sentido esta pantalla nos da mejor manipulación sobre los rangos, ya que no solo podremos asignarles nombres a determinadas celdas o rangos, sino modificar la dirección a la que hacen referencias, como también eliminar determinados nombres que ya no sean de aplicación para nuestra planilla. En el caso de querer asignar un rango con nombre, en una regla validación, esto quedaría: Vemos que aquí como origen de la lista determinamos el rango con nombre que denominamos ARTICULOS. (Nota: Recordar el signo = puesto que no queremos hacer referencia a un texto sino a un rango). FORMATO CONDICIONAL Este tema a tratar será interesante para aplicar dinamismo en cuanto al formato de celdas. También nos servirá como aviso en determinadas planillas en las que busquemos que la misma cambie cuando un factor se cumpla. Esto se trata de una combinación entre la función condicional SI y la aplicación de formatos (bordes, sombreados, subrayado) en celdas y rangos. Tenemos básicamente dos maneras de aplicar este tema: 1. Aplicación del formato condicional de acuerdo al valor de una celda 2. Aplicación del formato condicional vinculado a una formula. Aplicaremos en primer lugar un formato condicional de acuerdo al valor de una celda. Por ejemplo si queremos que la planilla nos señale todo artículo cuyo Stock este por debajo de las 70 unidades. Señalamos en primer lugar el rango al que le vamos a aplicar el formato condicional, en este caso el rango formado por las celdas que determinan el stock. En segundo lugar vamos al menú de formato – formato condicional. En el menú de formato condicional, en este caso la condición depende del Valor de la Celda, y a este valor lo podemos condicionar con operadores lógicos (<, >, <=, >=, =) por lo tanto podremos comparar los valores de las celdas con dichos operadores. En el caso que veíamos anteriormente determinamos que evalúe si el valor de la celda es menor a 70, y en caso de ser verdadera esta prueba lógica, aplicamos el formato, dándole una trama con color rojo, lo que señalará la celda de este color cuando se cumpla esta condición. En el caso que queramos aplicar más de una condición podremos agregar hasta 3 condiciones en el formato condicional, como se muestra en el ejemplo a continuación: La opción de agregar nos permitirá ir agregando condiciones, con dicho límite de 3 condiciones en esta herramienta. NOTA: La posibilidad de agregar más condiciones en formato condicional se podrá manejar desde Macros en VBA. En el ejemplo visto anteriormente estamos aplicando color rojo a los artículos cuyo stock este por debajo de las 70 unidades, aplicaremos color azul a los artículos entre 70 y 99 unidades y por último si el artículo tiene 100 o mas unidades en su stock la celda se pintará de color de fondo verde. En caso de que queramos aplicar dicho formato condicional con estas mismas condiciones pero deseamos marcar toda la fila cuando se de las condiciones propuestas, esto lo haremos seleccionando en primer lugar toda la matriz de datos (desde A2:C9). Veamos que aquí comenzamos señalando el área (A2:C9), luego fuimos al menú formato – formato condicional, y dentro del área de definición de formato, aplicamos como condición la dependencia de una Fórmula, y dentro del rango donde se evalúa la fórmula, establecimos una referencia a la celda C2. Nótese que la celda C2 la reverenciamos aplicando en forma fija la columna y variable para la fila ($C2) ya que el formato condicional lo aplicará para cada una de las filas marcadas (desde fila 2 a fila 9) pero lo aplicará siempre basándose en el valor de la columna C. A su vez es importante notar que la celda a la que refiere toda formula del formato condicional DEBERÁ SER SEÑALADA CON EL MOUSE PARA QUE NO LO TOME EN FORMATO TEXTO Y AGREGUE AUTOMATICAMENTE COMILLAS A LA SINTAXIS. De la misma manera que la vista anteriormente podríamos aplicar varias condicionales en este formato, pero siempre con la limitación de hasta 3 condiciones aplicadas. Como vemos a continuación: Un comentario adicional es el hecho de que para eliminar alguna de las condiciones propuestas en el formato condicional, simplemente volvemos a seleccionar el área a la que le queremos quitar en este caso el formato (A2:C9) y luego nos dirigimos nuevamente al menú de formato – formato condicional, y seleccionamos sobre el botón eliminar: Como vemos tenemos la opción de eliminar una de las condiciones propuestas, solo 2, o todas las condiciones que hayamos determinado. Es importante señalar el rango de antemano ya que si no, Excel no encontraría en que celdas se aplicó el formato condicional. En el siguiente ejemplo se mostrará esta herramienta aplicada con fórmulas de Excel, y la idea será que automáticamente queden marcados los cheques vencidos a la fecha actual (la fecha actual se calculará mediante la función HOY()). En este caso seleccionamos en primer lugar la matriz (A2:D5) y luego lo que hicimos fue aplicar el formato condicional, donde la condición depende de una fórmula y en la misma definimos la celda C2 en la cual fijamos la columna y dejamos como variable la fila ($C2) y comparamos con el operador menor o igual al resultado de la función HOY(), la cual nos obtendrá en forma automática la fecha actual del sistema. BÚSQUEDAS DE INFORMACIÓN Mencionamos en un ejemplo anterior que mediante la función BUSCARV podiamos realizar búsquedas en matrices, y extraer de las mismas un dato de determinada columna en particular. En este ejemplo veremos no solamente la aplicación de BUSCARV, sino también la función BUSCARH y las limitaciones que tenemos en el uso de dichas funciones. En este caso vemos la función BUSCARV, aplicada para buscar en base al código del artículo el stock del mismo. Mediante el pegado especial realizaremos un trasporte de dicha matriz, de la siguiente manera: 1.
2.
3.
4.
5.
Seleccionaremos mediante el Mouse toda la matriz de datos (A1:C9) Botón Derecho – Copiar Seleccionaremos la celda E1 Botón Derecho – Pegado Especial En las opciones seleccionaremos – Trasponer (como lo vemos en la pantalla a continuación) Veamos como queda transpuesta la matriz original: El tema de transponer la matriz también nos servirá para ver la aplicación de la función BUSCARH que nos permitirá extraer el contenido de una FILA en particular de la matriz. En este caso en la celda E6, utilizaremos la función BUSCARH, para que al digitar un código de artículo, nos obtenga la descripción del mismo (fila 2 de la matriz). Por otro lado, una de las restricciones importantes que hay que destacar tanto en el BUSCARV como en el BUSCARH es el hecho de no contar con la posibilidad de basarme en un dato buscado y querer obtener una columna a la izquierda en el orden de la matriz, o una fila hacia arriba del dato buscado en el caso de BUSCARH. Por ejemplo si en el ejemplo anterior yo me baso en la descripción (como dato buscado) y en base a la descripción pretendo obtener el código de dicho artículo. Veamos por lo tanto la aplicación de dos funciones que nos permitirán solucionar este tema. Las funciones son INDICE y COINCIDIR. La aplicación es la siguiente: El resultado será 5 (Nro de índice) En este caso aplicamos la función COINCIDIR, y dentro de sus argumentos colocamos, el valor buscado, en dicho ejemplo la celda A13, donde el usuario ingresó la descripción del artículo, como segundo argumento indicamos la columna B (rango B2:B9) que es donde realizaremos la búsqueda de dicha descripción, y por último como tercer argumento el número 0 que está indicando que la coincidencia debe ser exacta con el dato buscado. El resultado de la función COINCIDIR será 5, que es la posición del dato buscado en la lista de valores. O sea la devolución siempre me la da en el número de índice del dato buscado en la nomina de valores. Por otro lado si yo aplico la función INDICE de la siguiente forma: En cuanto a la función INDICE los argumentos son, la matriz de búsqueda, donde aquí señale la nomina de códigos de artículos, y como segundo argumento el número de fila del índice que debe buscar, en este caso 5. Este número 5 lo obtuve viendo el resultado obtenido por la función COINCIDIR en el dato anterior. Por lo tanto, y resumiendo, esto podría ser simplificado en una sola celda, de la siguiente forma: La función INDICE, me extrae el dato de una matriz de acuerdo a la ubicación de este dato en dicha matriz. Mientras tanto la función COINCIDIR lo que está haciendo es buscando el dato en una matriz de información, y buscando la posición de este dato, con una coincidencia exacta. FUNCIONES DE FECHA Y HORA Aplicaremos en este ejemplo las funciones de fecha y hora que nos provee Excel. Para comenzar, si yo quisiera obtener los días corridos en que se implementó cada una de las tareas, tenemos que entender que TODA fecha que ingresemos en Excel, esta fecha la lectura que tendrá será en número de días, comenzando con el número 1 correspondiente al 01/01/1900. Por lo tanto si en una celda yo coloco la función =HOY() y esta me devuelve la fecha actual, supongamos 17/10/2007, en realidad el contenido REAL de la celda será el número 39372. Basta con cambiar el formato de la celda, a un formato numérico y vemos el resultado. Entonces, si yo necesito saber los días que tomó cada tarea simplemente puedo restar las celdas de columna C y columna B, y tengo el resultado esperado. (NO OLVIDAR ASIGNAR FORMATO NUMÉRICO A LA COLUMNA D, para obtener en cantidad de días). Hasta aquí no hemos aplicado ninguna función en particular. El tema se da cuando tengo que calcular días habiles entre la fecha de inicio y fecha de fin. Para utilizar este tipo de funciones, Excel nos provee de COMPLEMENTOS. En este caso debemos habilitar el COMPLEMENTO de HERRAMIENTAS PARA ANÁLISIS, de la siguiente manera: En el menú de Herramientas – Complementos tendremos la posibilidad de ver los complementos que tenemos y podremos marcar los que necesitemos. Recordar que todos los complementos que marquemos quedarán habilitados de ahora en más en TODAS las sesiones que iniciemos con Excel, dentro de dicha PC. En este caso habilitamos el COMPLEMENTO de HERRAMIENTAS PARA ANÁLISIS, que es el que nos proveerá de las funciones necesarias a aplicar. Para el cálculo de días hábiles utilizaremos la función DIAS.LAB En dicha función los argumentos serán =DIAS.LAB (FECHA INICIO; FECHA FIN; [FERIADOS]) El argumento de FERIADOS es opcional, ya que podríamos omitirlo y la función de todas maneras me realizaría el cálculo. La idea es que al tener el argumento de FERIADOS, no solo excluya de los días hábiles sábados y domingos sino también los feriados que aparecen en la nómina. Podríamos comprender dentro de esta nómina feriados no laborables, y laborables, eso lo seleccionará quien esté a cargo del desarrollo de la planilla. No olvidemos fijar el rango donde dispusimos los FERIADOS ya que al copiar la fórmula se debe contemplar este rango como FIJO. En el siguiente ejemplo vamos contemplar los días para la entrega de determinados pedidos. Si los días fueran corridos simplemente digitamos: =B2+C2 Pero en el caso de que a partir de la fecha de pedido yo quiera agregar cierta cantidad de DIAS HÁBILES, aquí el tema cambia, y aplicaremos para esto la función: DIA.LAB(FECHA INICIO; DIAS LABORALES; [FERIADOS]) Lo que nos implementa dicha función es la posibilidad de que a cierta fecha se le agreguen o se le descuenten cierta cantidad de días hábiles, agregando como argumento opcional los feriados. Recordar que, para estos casos, también puede resultar común querer visualizar a partir de determinada fecha, el día de la semana a la que corresponde. Para ello tenemos la función DIASEM, que, a partir de una fecha nos dice qué día de la semana corresponde. Veamos que la función DIASEM, nos devuelve un número correspondiente al día de la semana que nos cae esa fecha, desde el 1 para domingo, hasta el 7 para sábado. Si quisiéramos que esto nos de exactamente en letras el día de la semana, basta con cambiar el formato de la celda para personalizarlo como vemos a continuación: Al dar botón derecho, formato sobre dichas celdas en las que aplicamos la función DIASEM, vamos a Personalizada, y en el Tipo, podremos optar por DDDD para que nos de en letras el día correspondiente de la semana. Nota: si hubiéramos escrito DDD, nos daría la abreviación del día de la semana. Trabajando con HORAS Veamos en la siguiente planilla en la que ingresamos los horarios de entrada y salida de un empleado a la empresa. No se presentan problemas, al restar en cada día de la semana las horas de salida y las de entrada. Ahora al momento de calcular el total de horas que este empleado realizó en toda la semana, veamos lo que sucede: En este caso aplicamos la función SUMA para tomar en cuenta el rango de horas, y poder obtener el total de horas. Pero Excel muestra un resultado que no es del todo correcto. En realidad el cálculo internamente lo realiza correctamente pero el resultado lo expresa en días, y por lo tanto esto sería 1 día, 19 horas, y 14 minutos. Lo único que hacemos es cambiar el formato de la celda, para que refleje el resultado en TOTAL de horas. Veamos como realizar este paso: Al momento de calcular el pago a realizar, tomo la celda del total de horas, multiplico por 24 para pasar el resultado a horas, y luego por el precio hora. Recordar que mas allá del cambio de formato que hicimos, internamente Excel sigue reconociendo dicha celda en termino de días y no en termino de horas. BUSCAR OBJETIVO Y SOLVER Estas dos herramientas nos servirán en determinadas ocasiones en las que queramos realizar previsiones o estimaciones en Excel. Pasemos al siguiente ejemplo: En este caso manejamos un ejemplo donde un restaurante que vende café, tiene su precio unitario en 30 pesos, y a través de la cantidad de tazas vendidas genera el total de la recaudación. Debemos tomar en cuenta que esta estructura se debe contemplar para la aplicación de BUSCAR OBJETIVO, donde una fórmula debe generar la dependencia de un conjunto de factores (celdas dependientes) que resuelven el esquema (en este caso la recaudación depende de la cantidad de tazas vendidas y del precio unitario). Para utilizar la herramienta, vamos a Menú Herramientas – Buscar Objetivo: En la pantalla de configuración: Definir la celda: en este caso B3, celda que contiene fórmula dentro de la planilla. Con el valor: vamos a definir como valor 6000 pesos (total de recaudación estimada, o previsión de recaudación). Para cambiar la celda: B2 (celda que actúa como variable del sistema, y que calculará automáticamente la herramienta) En este caso, yo podría haber resuelto el sistema perfectamente mediante una regla de tres simple, pero en casos más complejos como el que vemos a continuación el cálculo de la estimación sería posible con mayor esfuerzo: En este caso planteamos un ejemplo donde se otorga un préstamos de 20000 a una tasa anual del 8% y donde se pagarán 12 cuotas. La función pago como vemos nos calculará de forma automática la cuota a pagar, que en dicho caso será de 1739 (Nota: el valor resultante será negativo ya que las funciones financieras toman los egresos con este signo). Ahora, veamos que sucede si en este caso quisiéramos estimar cual sería el monto del préstamo que podríamos obtener si se mantienen las condiciones, pero sabemos que podemos pagar una cuota máxima de 1500. Para esto aplicamos la Herramienta Buscar Objetivo de la siguiente manera: El sistema nos resuelve y dirá que mediante el pago de una cuota de 1500 y manteniendo las condiciones, llegaremos a obtener un préstamo de 17243. La herramienta siempre trabaja con una variable a calcular y una fórmula cuyo resultado final será estimado por el operador. Veamos que en este último ejemplo nuestro supuesto es estimar un valor de cuota de 1500 (léase que debe ser negativo, por tomarse como un egreso financiero), y manteniendo las condiciones, se calculará el montó del préstamo al que la persona podrá acceder. En el caso de la herramienta SOLVER, actúa como COMPLEMENTO de Excel por lo tanto hay que habilitarlo, dentro del menú Herramientas – Complementos, y tildar la casilla de verificación en caso de que dicha herramienta no estuviere previamente instalada en la PC que estemos manejando. SOLVER Esta herramienta es similar a Buscar Objetivo con la salvedad de contar con la ventaja de resolver sistemas con determinada cantidad de variables, y con la posibilidad de establecer restricciones, que acerquen el sistema a una realidad planteada. Veamos el siguiente caso: En este caso establecimos una planilla similar a la planilla que trabajamos anteriormente. Se trata de un restaurante que vende varios tipos de Café, entre ellos Café común, Café Cortado, Café Capuchino. Aplicamos en el menú Herramientas – Solver la configuración de dicho sistema. Entonces: en Celda Objetivo establecemos la celda que vamos a estimar, en este caso la celda del total recaudado por el restaurante, luego establecemos el importe del valor estimado para dicha celda. En la referencia de cambiando las celdas establecemos las celdas que se van a calcular automáticamente por la resolución del sistema, en el caso nuestro marcaremos mediante la tecla CTRL cada una de las celdas que tiene la cantidad de tazas de cada tipo de café. Por último, en el área inferior izquierda de esta pantalla establecemos mediante el botón agregar, la/las restricciones del sistema, en este caso nuestra única restricción fue agregar a la celda B10 que contiene el total de tazas vendidas de café capuccino, que el limite es que dicha celda contenga un valor menor a 50. Podemos agregar múltiples restricciones ya que cada vez que queramos agregar una restricción mas, solo presionaremos en el botón agregar lo que nos permitirá ir agregando nuevas restricciones. También tenemos la posibilidad de cambiar, y eliminar restricciones mediante los botones asociados. Una vez que terminamos la definición de dicha pantalla mediante el botón RESOLVER, el sistema nos genera una solución para el esquema propuesto y nos muestra la siguiente pantalla: El esquema queda resuelto y vemos la solución final en la planilla. Podemos en esta pantalla marcar la opción de Utilizar la solución encontrada por SOLVER, o también podemos Restaurar valores originales para regresar al estado inicial de la planilla antes de resolver el esquema. Las aplicaciones de dicha herramientas son muchísimas, tanto en ámbitos de estadística, probabilidad, como también en materia de Matemáticas, Ingeniería y Economía. Podemos ver varios ejemplos aplicados si buscamos el archivo SOLVSAMP.xls que se encuentra en C:\Archivos de Programa\Microsoft Office\Office10\SAMPLES\ MÓDULO ANÁLISIS DE INFORMACIÓN Módulo: Análisis de Información En este módulo se verá la aplicación de herramientas volcadas al análisis de información dentro de Excel. En primer lugar, con un ejemplo se aplicará el uso de los diferentes tipos de filtros que nos provee la herramienta. Veamos el siguiente ejemplo: En esta planilla aplicaremos el primer tipo de filtro, que será el Autofiltro y que nos permitirá aplicar filtros automáticos en la planilla de una forma muy sencilla. Para aplicarlo bastará con posicionarnos en cualquier celda de nuestra base de datos y luego mediante el menú de Daots – Filtro – Autofiltro comenzaremos la aplicación del mismo. La planilla nos quedará de la siguiente manera: Veamos en primer lugar, que cuando nosotros marcamos en el menú de datos – filtros – autofiltro, este actúa como un subrayado, donde podemos tildar y destildar esta opción, en caso que queramos deja de utilizar el Autofiltro en algún momento. El autofiltro nos da esta opción del cuadro desplegable en el título de cada campo de la base de datos. Bastará con pinchar en el cuadro desplegable para poder seleccionar el criterio a aplicar para filtrar la información sobre dicho campo. Por ejemplo, si en esta planilla yo quisiera solo ver las ventas del vendedor Díaz, solo seleccionaré Díaz en las opciones del campo Vendedores, y esto me aplicará automáticamente el filtro con dicho criterio. A continuación se da el ejemplo de cómo aparece la planilla con el filtro aplicado: En el caso anterior el sistema en forma automática oculta las filas del resto de vendedores y deja solo visibles las ventas del vendedor seleccionado. Podemos a su vez aplicar otro filtro en forma simultanea sobre otro de los campos como por ejemplo el campo de Región, solo bastará con seleccionar de dicho campo la opción de la región que necesitaremos visualizar y la herramienta aplicará este filtro en forma totalmente dinámica. QUITAR AUTOFILTROS – RESTABLECER BASE DE DATOS En caso de que en algún momento, apliquemos varios filtros de acuerdo a varios campos y en algún momento queramos quitar dicho filtro, existen dos opciones: podemos quitar el autofiltro directamente yendo al menú de datos – filtros – autofiltro, o también mediante el menú de datos – filtros – mostrar todos (esto muestra nuevamente todos los datos originales de la base de datos pero mantiene el autofiltro. CRITERIOS PERSONALIZADOS También muchas veces se puede dar el caso de que el criterio para filtrar la información no este disponible en forma directa sobre el campo que queramos filtrar, y por lo tanto, del cuadro desplegable recurrimos a la opción de Personalizar, para este campo: Cuando seleccionamos la opción Personalizar, podremos aplicar criterios un poco mas avanzados para filtrar dicho campo: En este caso, como nos posicionamos sobre el campo Ventas 2005, y seleccionamos la opción de Personalizar, allí podemos ver que en nuestro caso aplicamos dos criterios que señalan que el filtro será tomar únicamente Ventas 2005 con valores mayores o iguales a 80000 y menores o iguales a 100000. Podemos ver a su vez que existen múltiples criterios que podemos aplicar sobre dicho campo. La planilla luego de aplicar dicho filtro ser verá de la siguiente manera: Un detalle sumamente importante a tomar en cuenta es el hecho de que si en dicha planilla quisiéramos en algún momento obtener la suma de ventas del 2005 pero únicamente de los datos visibles no podemos aplicar la función =SUMA (C2:C15), puesto que tomaría todas las filas (tanto visibles como no visibles). Para este tipo de casos aplicamos la función =SUBTOTALES (9;C2:C15) SUBTOTALES (núm_función; ref1, ref2,...) Núm_función Función 1 PROMEDIO 2 CONTAR 3 CONTARA 4 MAX 5 MIN 6 PRODUCTO 7 DESVEST 8 DESVESTP 9 SUMA 10 VAR 11 VARP Veamos en el ejemplo dado, los resultados de la función SUMA y SUBTOTALES aplicados para dicho rango de celdas (C2:C15). NOTA: También podríamos haber utilizado el botón ∑ Dicho botón aplica automáticamente la función correcta según encuentre celdas ocultas o no en ese rango (aplica función SUMA en caso de que no existan filas ocultas, y aplica en forma predeterminada SUBTOTALES cuando encuentra filas ocultas en el rango). El autofiltro también nos permite filtros personalizados en el caso de columnas con datos tipo TEXTO, por ejemplo si yo quisiera obtener los datos de ventas de aquellos vendedores cuyo apellido termine con letra S. En dicho ejemplo se aplica sobre el campo Vendedores, el criterio de personalización y luego el filtro que determina que dicho campo muestre únicamente registros que termina con letra s. Hay una limitación en la aplicación del autofiltro y es, justamente la consigna para pasar al siguiente tema. No podemos mediante el autofiltro aplicar criterios que comparen campos por ejemplo, en el siguiente caso, vamos a aplicar un filtro que nos exponga únicamente las ventas del 2005 superiores a las del 2006. Eso lo lograremos con el Filtro Avanzado: Recordemos que para poder aplicar el filtro avanzado debemos hacerlo sin tener la opción de autofiltro encendido. Por lo tanto si tenemos el autofiltro, debemos apagarlo yendo a Datos – Filtro – Autofiltro. Para aplicar el filtro avanzado vamos a Datos – Filtro – Filtro Avanzado, y luego: Veamos que como criterios aplicamos la comparación entre la celda C2 y D2, donde solo colocamos la fórmula =C2>D2 En el cuadro que nos aparece cuando aplicamos el filtro: Como Rango de la lista: A1:D19 (marcamos la base de datos completa) Rango de Criterios: F7:F7 (marcamos las dos celdas, el título del criterio, y la celda que contiene el criterio propiamente dicho) Veamos que en dicho cuadro en este caso aplicamos la opción que aparece por defecto que es: Filtrar la lista sin moverla a otro lugar, ya que lo que queríamos era aplicar el filtro directamente en la base de datos. En la siguiente pantalla se expone como el filtro aplica dicho criterio directo sobre la base de datos: Aquí volvemos a comentar el hecho de que si queremos obtener la sumatoria de ventas de 2005 o 2006, no debemos usar la función SUMA, puesto que deberíamos utilizar la función SUBTOTALES. Para restaurar la base de datos volvemos al menú Datos – Filtro – Mostrar Todo, como se presenta en la siguiente pantalla: En el caso de querer aplicar filtros en forma simultánea, tendremos que armar dichos criterios en la misma línea. En el siguiente ejemplo veremos la aplicación de un filtro donde vemos las ventas 2005 superiores a las del 2006, pero solo de la Región Sur, veamos no solo la aplicación del filtro, sino el armado de dichos criterios: Aquí veamos que como Rango de Criterios marcamos F6:G7, ya que los criterios en este caso son 2, uno que aplica sobre el campo Región, donde se extrae solo datos que coincidan con Región SUR, y por otro lado, el siguiente criterio (le dimos un título arbitrario, en este caso “Criterio”), donde hicimos la comparación de uno de los registros de ventas 2005 contra un dato de ventas 2006. Así nos quedarían los datos filtrados, de ventas de Región SUR, donde las Ventas 2005 superan a las del 2006: Veamos que sucede si los criterios son los mismos pero no respetamos el tema de que sean en la misma línea: Aquí se puede ver que aplicamos un filtro donde la Región es SUR, pero no hace al mismo tiempo comparativo de ventas entre el año 2005 y 2006, mientras que para el resto de ventas de otras Regiones SÍ aplica el criterio de comparar las ventas 2005, y que dichas ventas sean superiores a las del año 2006. Podemos seguir aplicando criterios, pero siempre que apliquemos varios criterios, tienen que estar armados diferenciando los campos de la base de datos, pero también en el mismo orden que aparecen dichos campos en la base de datos. Veamos ahora en un ejemplo donde apliquemos este mismo filtro pero con una extracción de una sub base de datos para no modificar la base original: En la pantalla que nos aparece en este caso marcamos la opción de Copiar a otro lugar, y nuevamente en: Rango de la lista: A1:D19 (nuevamente marcamos toda la base de datos) Rango de criterios: F6:G8 (aquí marcamos todos los criterios, en este caso los dos criterios) Copiar a: Aquí marcamos una celda cualquiera vacía ya que a partir de ahí se va a generar la sub base de datos con los datos que cumplan con los criterios pautados. Si en dicho ejemplo planteamos que la sub base de datos solo obtenga los campos de Vendedores, Ventas 2005 y Ventas 2006 excluyendo la Región, deberíamos armar a priori los títulos de los campos que van a formar dicha sub base de datos: Aquí marcamos en el cuadro, en el renglón Copiar a: F11:H11 (celdas donde se encuentran los títulos de la sub base de datos que se va a armar con los datos filtrados) A continuación vemos el resultado final de dicho filtro: Tablas Dinámicas Utilizando la base de datos del ejemplo anterior generaremos nuestra primera tabla dinámica. Esta herramienta nos permitirá cruzar de diversas formas información de una base de datos, tanto sea una base armada en Excel, como también en fuentes de datos externas (como archivos de texto, bases de Access, SQL, DBase, etc.) Para comenzar nos guiaremos mediante el Asistente, que encontramos en Datos – Informe de Tablas y Gráficos Dinámicos, como vemos en la siguiente pantalla: En la primera pantalla del asistente tendremos las opciones para elegir el origen de los datos que se van a tomar en la tabla dinámica, y en dicha pantalla en la parte inferior elegimos el tipo de informe a obtener, y que puede ser Tabla Dinámica o Gráfico Dinámico: En esta primera pantalla nosotros elegimos las opciones que vienen como predeterminadas ya que la base de datos nuestra proviene de una lista que armamos previamente en Excel y el informe de salida es efectivamente una tabla dinámica. Presionamos en el botón siguiente para pasar a la segunda pantalla: El Rango es el que se forma por toda nuestra base de datos, recordar que en el caso de querer tomar solo determinados campos, mediante la tecla control presionada podemos marcar solo dichos campos para que formen parte de nuestra tabla dinámica. Pasemos con el botón siguiente a la tercera pantalla de nuestro asistente En esta tercera pantalla del asistente, podremos elegir la ubicación de nuestra tabla dinámica, la cual podemos establecer en una hoja de cálculo nueva, o también en una hoja de cálculo existente. Tomemos en cuenta que en el caso de que marquemos hoja de cálculo existente, debemos marcar una celda que formará el ángulo superior izquierdo de nuestra tabla dinámica por lo tanto tener presente que desde esta celda hacia abajo y hacia la derecha exista lugar vacío y disponible en dicha planilla de cálculo. Veamos el resultado que obtenemos al dar finalizar (en este caso seleccionamos la opción de volcar la tabla dinámica en una hoja nueva): Toda tabla dinámica se formará por 4 cuadrantes que serán: • Campos de Fila • Campos de Columna • Campos de Datos • Campo de Página Podremos arrastrar cualquiera de nuestros campos de la base de datos que tenemos en la lista que aparece a la derecha hacia el área de nuestra tabla dinámica donde queramos disponer dicho campo. Es sumamente importante tener presente en un principio cual es el resultado que se desea obtener, para no perdernos entre tantas opciones que tenemos en los campos que tenemos en la base de datos. En este primer ejemplo vamos a pedir el total de ventas del 2005 para cada uno de los vendedores: Aquí lo que hicimos fue arrastrar (con el botón izquierdo presionado) el campo de vendedores al área de Fila (vemos que cada vendedor aparece en una fila diferente), y llevamos el campo de Ventas 2005 al área de Datos (vemos que las ventas de 2005 aparecen cada una en dicha área). Hay que tener presente que Excel es realmente sensible respecto a cada una de estas áreas por lo tanto tratemos siempre de trasladar cada campo hacia el área correspondiente en la forma mas exacta posible. En caso de que cambiemos de opinión y nos parezca mejor obtener el total de ventas 2005 pero de cada región y no de cada vendedor puedo trasladar el campo de vendedores de regreso a la Lista de campos de tabla dinámica, y trasladar a continuación, el campo de Región nuevamente al área de fila: Aquí vemos que quitamos el campo de vendedores, y ahora vamos a colocar el campo de Región, solo volvemos a arrastrar dicho campo al área de filas y nos queda como vemos a continuación: En dicho ejemplo vemos que lo que logramos en este último caso es totalizar las ventas del 2005 para cada una de las regiones. Pero volviendo al caso anterior podríamos querer obtener ambos resultados, o sea las ventas de 2005 de cada vendedor y también por región, como presentamos en la siguiente pantalla: En este caso trasladamos el campo de Vendedores al área de FILA y el campo de Regiones al área de COLUMNAS. El campo de ventas 2005 quedó dispuesto como antes en el área de DATOS. FILTROS EN TABLAS DINÁMICAS También tenemos la opción de aplicar filtros en la tabla dinámica, mediante el cuadro desplegable de los títulos del campo fila (en este caso vendedores) y también en el título del campo de columna (en este caso Región). En este caso al igual que como hacíamos en el autofiltro, elegimos los criterios de filtrado que vamos a aplicar sobre dicho campo. En el caso anterior filtramos para que solo despliegue las ventas de los vendedores Morales y Vega, que son los que dejamos tildados en el cuadro desplegable. Si quisiéramos obtener además de las ventas del 2005, también las del 2006, simplemente agregamos este último campo en el área de datos: Vemos que aquí obtenemos dos campos en el área de datos, y tenemos los totales tanto por vendedor como también por región de los años 2005 y 2006. Podemos aplicar también un filtro que nos muestre por ejemplo determinada región (SUR por ejemplo): Cada filtro aplicado se refleja inmediatamente en el resultado de nuestra tabla dinámica. ACTUALIZACIONES EN TABLAS DINÁMICAS Apliquemos en principio el primer tipo de actualización que se puede dar: ‐ Cambiando datos en la base de dato original. Tomemos algún dato de la base de datos original y modifiquemos este dato sustancialmente para que veamos reflejado este cambio en la tabla dinámica. Veamos que en este caso se modificó el primer registro de la base de datos, sin embargo cuando regresamos a la tabla dinámica, esta permanece exactamente igual que como estaba antes de realizar el cambio. Para que el cambio se realice y se vea reflejado en la tabla dinámica deberemos dar clic en el botón de actualizar (botón con el signo de !) en la barra de herramientas de tabla dinámica. En caso de no tener dicho botón disponible podremos recurrir al menú VER – BARRA DE HERRAMIENTAS – TABLAS DINÁMICAS, y luego dar clic sobre este botón pare ver el cambio realizado: Al presionar sobre el botón vemos que la tabla dinámica recalcula los valores y nos muestra el detalle que vemos a continuación: Hay un tema muy importante a destacar, y es el hecho de que la tabla dinámica no es sensible a la incorporación de nuevos registros (nuevas líneas) en la base de datos original, así como a la inserción de columnas en la base de datos original. A continuación haremos referencia al concepto y metodología a manejar cuando agregamos nuevos registros en la base de datos original. ACTUALIZACIÓN DE TABLAS DINÁMICAS (CON INSERCIÓN DE DATOS EN LA BASE DE DATOS ORIGINAL) En este ejemplo vamos a agregar una línea adicional en la base de datos, haremos referencia a una venta en una región que hasta ahora no habíamos cargado: El último registro fue agregado en la base de datos, sin embargo cuando regresamos a la tabla dinámica, ésta no refleja el cambio que realizamos en la base de datos. Pero nos encontramos que presionando el botón de actualizar en la barra de herramientas de tabla dinámica tampoco nos refleja el cambio. Para que el cambio se refleje en nuestra tabla dinámica realizaremos el siguiente procedimiento: 1. Vamos a la barra de herramientas tabla dinámica, mediante el menú VER – BARRA DE HERRAMIENTAS – TABLA DINÁMICA 2. Una vez que tenemos la barra de herramientas disponible, vamos al botón Tabla Dinámica, y allí elegimos Asistente: Cuando presionamos en la opción de asistente, este nos despliega la última pantalla del asistente de tablas dinámicas, al presionar el botón de atrás vemos que nos permite redimensionar la base de datos original: En este caso marcaremos el rango A1:D20, agregando de esta manera el nuevo registro a la base de datos, luego presionamos en el botón siguiente, pasando a la última pantalla del asistente y por último finalizar. Vemos a continuación la imagen de nuestra tabla dinámica actualizada mediante el asistente de tablas dinámicas: Agreguemos a continuación en nuestra base de datos original una nueva columna que nos refleje el país a donde se realizó cada una de las transacciones con lo que la base de datos quedará de la siguiente manera: Al presionar el botón de actualizar en la barra de herramientas de tabla dinámica, nos aparece en la lista de campos, el nuevo campo PAÍS que podremos utilizar para agregar en la tabla dinámica: Agreguemos dicho campo en el área de Página y veamos el efecto que resulta de esto: Al agregar dicho campo en el área de página podremos resumir la tabla dinámica de acuerdo a dicho campo. En el siguiente caso, al seleccionar un país (por ejemplo Argentina) veamos el efecto que produce sobre los datos de nuestra tabla dinámica: La tabla dinámica pasa ahora a mostrar las ventas de cada vendedor de los años 2005 y 2006, también con la posibilidad de ver la división por región pero UNICAMENTE DEL PAÍS ARGENTINA (que actúa como filtro de nuestra tabla dinámica). CAMBIOS SOBRE LAS OPERACIONES DE CAMPOS DE DATOS En este caso seguiremos trabajando con la base de datos de ejemplo pero vamos a aplicar otra operación sobre el campo de ventas 2005, en lugar de pedir el total de ventas 2005 (suma de ventas 2005) solicitaremos el promedio de ventas 2005. Para simplificar solo trabajaremos con los campos de vendedores y ventas 2005: Aquí por ahora solo vemos la operación simple donde nos muestra la suma de ventas 2005, veamos como hacemos para cambiar la operación predeterminada del campo de datos: 1. Nos posicionamos sobre cualquiera de los datos, de importes de nuestra tabla dinámica y presionamos el botón derecho del Mouse, y allí seleccionamos la opción de CONFIGURACIÓN DE CAMPO 2. En la pantalla que nos aparece podremos seleccionar el tipo de operación que aplicaremos sobre dicho campo: Vemos que podemos aplicar como operación la SUMA, CUENTA, PROMEDIO, MÁXIMO, MÍNIMO, PRODUCTO… En nuestro caso vamos a seleccionar como opción PROMEDIO, para que nos aplique dicha operación sobre el campo de Ventas 2005. También podremos en dicho cuadro, sobre la línea de Nombre, ajustar el nombre a reflejar de dicho campo. Tenemos la opción también de agregar el mismo campo un sin numero de veces para que este refleje operaciones diferentes. Por ejemplo, si necesito que la tabla dinámica refleje la suma de ventas 2005 pero además, nos provea del promedio de ventas 2005 para cada vendedor. Arrastramos dos veces el campo de ventas 2005 hacia el área de datos, y simplemente a uno de los campos le cambiamos la configuración de campo: También cuando realizamos la configuración de campo podremos tener mas opciones, como por ejemplo desplegar el % de ponderación de cada venta, con respecto al total de ventas del año como podemos ver a continuación: En la pantalla de configuración de campo: La tabla dinámica nos mostrará el siguiente resultado: No olvidemos que podríamos presentar los importes de ventas 2005, y luego arrastrar nuevamente el campo para realizar esta configuración para que además de los importes refleje también los porcentajes de ventas. TABLAS DINÁMICAS CON IMPORTACION DE DATOS DESDE ACCESS Veamos en un ejemplo los pasos que debemos cumplir si queremos armar una tabla dinámica para analizar información de una base de datos que la empresa tiene en Microsoft Access. Comenzamos el asistente de la misma manera que lo hicimos antes, mediante el menú de Datos – Informe de Tablas y Gráficos dinámicos En la primera pantalla del asistente, elegimos como opción FUENTE DE DATOS EXTERNA: Al presionar el botón siguiente, vemos que el asistente cambia con respecto al que veíamos en el capítulo anterior: Presionando el botón de Obtener Datos, seleccionamos el Origen de Datos (es el software donde está alojada la base de datos). Muchas veces se confunde esta pantalla con la elección directa de la base de datos. Seleccionamos en este caso MS Access Database, que es el software donde tenemos la base de datos, y al dar aceptar, podremos recorrer las carpetas hasta encontrar la base de datos, en este caso recorremos C:\Archivos de Programa\Microsoft Office\Office11\Samples Cuando seleccionamos la base de datos, en este caso NEPTUNO, nos aparece la siguiente pantalla: Aquí nos refleja las diferentes tablas de las que está compuesta la base de datos, y de la que podremos tomar determinadas tablas, completas, por ejemplo la de CLIENTES, o también podremos presionar en el signo + para desplegar los campos de los que está compuesta la tabla. En el siguiente ejemplo tomaremos determinados campos de las tablas de Clientes, Productos, Categorías, y Productos. Cada uno de los campos que queramos incorporar en la tabla dinámica lo pasaremos al área derecha de la pantalla, en el área de columnas en la consulta. Cuando presionamos el botón siguiente: En esta pantalla tendremos la posibilidad de filtrar la información de los campos de acuerdo a uno o varios criterios que seleccionemos. En la siguiente pantalla podremos seleccionar un orden determinado a establecer, de acuerdo a un campo que seleccionemos, en forma ascendente o descendente. En la última pantalla seleccionamos la opción que aparece en forma predeterminada, y devolvemos los datos directamente a Microsoft Excel, y le damos siguiente en la pantalla del asistente: Llegamos en esta etapa final, a la misma pantalla, que en el capítulo anterior donde tendremos el esqueleto de la tabla dinámica: Aquí podremos armar la tabla dinámica simplemente ajustando los campos y llevándolos al área de fila, área de columnas, y al área de datos. Recordemos que desde aquí podemos lograr lo mismo que ya realizamos en el capítulo anterior con datos de una base de datos de Excel: GRAFICOS DINÁMICOS Para generar una tabla dinámica, y a partir de la misma, reflejar un gráfico dinámico, simplemente nos posicionamos en cualquiera de los campos de la tabla dinámica y mediante el botón derecho del Mouse tendremos la opción de generar el gráfico. Veamos en el siguiente ejemplo: Mediante la opción de Gráfico dinámico, este nos generará en una nueva hoja el gráfico dinámico que se desprende de la tabla dinámica generada anteriormente. Dentro del Gráfico dinámico podremos ajustar y cambiar de posición cualquiera de los campos, pero siempre tomando en cuenta que al cambiar el gráfico dinámico, también cambiará en forma simultanea la tabla dinámica de la cual depende. El Gráfico dinámico tiene a su vez 4 áreas diferenciadas, y son: 1. Campos de categorías (en este caso vendedores) 2. Campos de serie (en este caso no tenemos) 3. Campos de página (en este caso no incluimos ninguno aún) 4. Campos de datos (en este caso el campo Ventas 2005) En el siguiente ejemplo vemos el caso de tener un campo en cada posición: MÓDULO GRÁFICOS PERSONALIZADOS Y FORMULARIOS Módulo de Gráficos Personalizados y Formularios Dentro de este módulo se verán diferentes opciones al momento de graficar en Excel así como opciones de gráficos poco utilizadas, y casos prácticos donde apliquemos usos de gráficos para diferentes actividades. Comencemos con un gráfico sencillo en el que se pretenda gráficas exportaciones de un producto a diversos países a través de 4 años. Nos basaremos en la siguiente planilla: Para comenzar nos posicionamos en cualquiera de los datos de nuestra planilla y vamos al asistente para gráficos mediante el menú Insertar – Gráfico En la primera pantalla que nos despliega el asistente para gráficos tendremos la posibilidad de seleccionar la categoría del gráfico que generaremos y dentro de cada categoría también podremos seleccionar la subcategoría de dicho gráfico, como vemos en la pantalla a continuación: Veamos que tenemos un botón de Presionar para ver muestra, que, dependiendo en que categoría nos posicionamos nos va a dar una imagen preliminar del gráfico que generaremos a través de la lista o base de datos que tenemos seleccionada. Al presionar siguiente, y pasando al segundo paso del asistente: Aquí se destacan dos puntos, en primer lugar, el hecho de que Excel tomó en forma automática como Rango de datos desde A1:E6, incluyendo aquí los títulos de ambos campos, pero tomando la fila 1 como si fuera una serie a graficar, y esto nos genera un error, ya que aparecerá una serie que no contiene información (veamos en la muestra). En este caso corrigiendo el área a graficar y tomando desde la fila 2, o sea marcando como Rango de datos de origen desde A2:E6, nos quedará la muestra correspondiente al área que efectivamente debemos graficar. Si vemos las opciones de graficar las series en: FILAS, COLUMNAS, en forma predeterminada Excel marca las serien como columnas, y por lo tanto cada año formará una serie de nuestro gráfico, en cambio si intercambiamos y pasamos a la opción de Series en FILAS, se verá de la siguiente manera: En este caso lo que estamos representando son las ventas de cada uno de los años (1, 2, 3,4) y dentro de cada año las series están representadas por las exportaciones a cada país. A su vez si damos clic en la solapa de SERIE en esta misma pantalla veremos lo siguiente: En esta pantalla podremos definir: • Nombre: El rango (o celda) donde encontramos el nombre de cada serie (en este caso de cada país) • Valores: El rango de celdas donde encontramos los valores correspondientes a dicha serie (valores de exportaciones a través de los años de dicho país) • Rótulos del eje de categorías (X): Aquí vamos a señalar el rango B1:E1 que es el rango donde encontramos los títulos de las categorías (en este caso los años) Presionamos en siguiente y pasamos al 3er paso del asistente: Aquí completamos en la solapa de Títulos los títulos de cada sector del gráfico, en primer lugar el Título General del gráfico, luego completamos el Título de Eje X, y por último el titulo de Eje Y. Pasamos a la solapa de EJE: Aquí podemos marcar o desmarcar las opciones que nos permitirán visualizar los ejes de valores y categorías, o también podremos dejarlo desmarcado en caso de que querer ocultar dichos ejes en el gráfico. Al pasar a la solapa de Líneas de División: El efecto que produce las casillas de verificación en esta solapa de categorías es el de agregar referencias para identificar los valores en el gráfico, en un gráfico de líneas, y a nivel estadístico esto es fundamental para tener una referencia mas precisa de los valores que vemos en el gráfico. Pasando a la solapa de Leyenda: Aquí seleccionamos la ubicación de la leyenda de referencia de series dentro del gráfico así como también podemos destildar la casilla de verificación en caso de querer ocultar la leyenda del gráfico. En la solapa de Rótulo de Datos, tendremos la posibilidad de reflejar en el gráfico los Nombres de la series (en este caso los países), Nombres de las categoría (años en este caso), y Valores (valores correspondientes a cada dato graficado). Debemos tener presente que marcar todas las opciones muchas veces puede resultar complejo para poder entender correctamente tanta sintaxis dentro del gráfico, y muchas veces hace que el grafico quede realmente complejo para un análisis posterior. En esta última solapa, si nosotros pretendemos, dentro de la pantalla del gráfico agregar la información de los datos graficados, ya sea porque los mismos se encuentran en otra ubicación, o porque queremos tenerlos disponibles dentro del gráfico, marcamos la opción de Mostrar Tabla de Datos, y de esa manera nos quedan los datos incrustados dentro del gráfico. Al presionar siguiente, pasamos al paso 4 del asistente donde seleccionamos entonces, la ubicación que le daremos al gráfico: Podemos ubicar el gráfico tanto en una hoja nueva, como también podemos ubicarlo como un objeto dentro de la hoja activa, o la hoja que seleccionemos. Finalmente, vemos el gráfico dentro de nuestra hoja, el cual podremos seleccionar, y desde los bordes, tal cual como si fuera una imagen cambiar sus dimensiones: AREAS DEL GRÁFICO El gráfico está formado básicamente por diversas áreas: • Área del gráfico (el fondo blanco que vemos dentro del gráfico) • Área de trazado (el fondo gris en el que posicionamos las series) • Título del gráfico (en nuestro caso exportaciones) • Series (en nuestro caso las columnas, que forman las exportaciones a cada país) • Eje de categorías (eje x) • Eje de valores (eje y) • Leyenda (cuadro que tiene la representación de la series) • Título del eje de categorías (Años en nuestro caso) • Título del eje de valores (Importes en nuestro caso) En el caso de querer cambiar cualquiera de las áreas del grafico recordar que simplemente nos posicionamos sobre dicha área y con el botón derecho nos desplegará las opciones propias del área marcada. Para poder recurrir a la modificación de cualquiera de los pasos que recorrimos mediante el asistente, nos posicionamos sobre el Área del Gráfico (área blanca) y con el botón derecho: • Tipo de gráfico (paso 1 del asistente – donde seleccionamos la categoría del gráfico) • Datos de origen (paso 2 del asistente – donde indicamos el rango de datos) • Opciones del gráfico (paso 3 del asistente – donde indicamos títulos, leyendas, ejes) • Ubicación (paso 4 del asistente – donde seleccionamos la ubicación deseada para el gráfico). Modificaciones de Gráficos Para modificar el área de gráfico simplemente damos doble clic sobre dicha área y nos aparecerá la siguiente pantalla: Aquí podremos indicar no solo los bordes del área, permitiendo seleccionar el color del borde, el estilo del mismo, así como también el grosor, sino que también podremos cambiar la fuente (junto con sus propiedades), así como también el fondo del gráfico (área). También podemos presionar sobre el botón de efecto de relleno para modificar los efectos que apliquemos sobre el fondo del gráfico, entre los que podemos: Aplicar degradado, con diferentes efectos del mismo, con un color, o dos, con efectos de transparencias, y además con diversos estilos de sombreado. Podemos aplicar también texturas: Así como también indicarle con el botón de Otra Textura, y buscar el archivo donde se encuentre la textura que queramos darle al área de gráfico. Podremos además de seleccionar un color, y efecto de degradado aplicar una trama en particular: Por último si nos parece conveniente, también podremos ubicar como fondo del gráfico una imagen, seleccionando la misma desde su ubicación en el disco: Este mismo tipo de efectos se puede aplicar sobre cualquier área del gráfico, por ejemplo también sobre las series, obteniendo entonces un gráfico como el que se refleja a continuación: Si bien no son los mismos datos que en el ejemplo visto anteriormente la idea es reflejar no solo los cambios del área de gráfico sino también del área de trazado, y a su vez del área de series, modificando cada serie y viendo como agregar la bandera del país como identificación de dicha serie. Gráficos Personalizados Generaremos en el siguiente ejemplo un Gráfico que denominaremos pirámide poblacional a partir de la siguiente planilla: En la misma encontramos un total de la muestra, en este caso del barrio MALVIN y separado por sexo (hombres, y mujeres) y a su vez el total dividido por grupo etario. La idea es graficar esto y que podamos representar las cantidades de personas de cada sexo y cada barra represente a un grupo etario diferente. El resultado final se muestra a continuación y luego veremos el paso a paso a seguir para obtener dicho gráfico: Para llegar a este resultado final, comenzaremos por generar con los datos un gráfico de barras seleccionando el rango a graficar (en este caso desde A1:K5). Allí vamos a Insertar – Gráfico: Seleccionamos el gráfico de tipo BARRAS – primer subtipo que es el de BARRA AGRUPADA, luego le damos clic en el botón siguiente: Notemos que aquí corregimos en primer lugar el Rango de datos (A4:K5) para tomar únicamente los sexos y los grupos de edades, que comprenden únicamente lo que vamos a graficar, pero además vamos a dar clic sobre la solapa series: Aquí lo que hicimos fue agregar en el Rótulo del eje de categorías X el rango que va desde B2:K2 donde indicamos los títulos de grupos de edades que formarán parte de nuestro gráfico. En nuestro siguiente paso: Aquí definimos los nombres tanto del gráfico general como también de los ejes. Este fue el resultado final que obtuvimos, ahora veamos los criterios que tenemos que utilizar para perfeccionar la pirámide poblacional. En primer lugar, para que un sexo tome valores a la derecha del corte de eje X y el otro sexo tome valores a la izquierda del corte de eje X debemos tomar en cuenta que lo logramos fácilmente cambiando el signo en la planilla original como vemos a continuación: Veamos que agregamos una línea donde simplemente le cambiamos el signo a los valores correspondientes al sexo femenino, e incluimos esta serie dentro del gráfico de la siguiente manera: Aquí incluimos dentro de la categoría mujeres, el rango B6:K6 en lugar del rango B5:K5 que tenía anteriormente valores negativos. Recordar para reasignar las direcciones de dicho rango accedemos clickeando con el botón derecho sobre el área de gráfico (fondo blanco del gráfico) y seleccionando como opción Datos de Origen, y allí presionamos sobre la pestaña de Serie. Ahora cambiaremos la posición de cada una de las barras para que se dispongan alineadas y sin espacio sin separación entre las mismas. Esto lo logramos presionando en una de las barras del gráfico (cualquiera de las series), y luego con el botón derecho del Mouse, seleccionamos la opción de Formato de Serie de Datos, y en la solapa Opciones veremos justamente dos opciones: En dichas opciones cambiaremos el dato de Superposición, el cual pasaremos a un valor de 100, para que las barras queden alineadas, y el ancho de rango a valor 0, para que cada barra ocupe el total de área de trazado, y no existan espacios intermedios entre una barra y otra. Veamos el efecto del mismo: En este siguiente paso vamos a quitar el rótulo de las leyendas en cada grupo de edad: Esto lo logramos presionando con el botón derecho del Mouse sobre el área de gráfico y luego vamos a Opciones de Gráfico y luego en la solapa de Eje desmarcamos la casilla de verificación correspondiente al Eje de Categorías X, como vemos a continuación: Vemos que el efecto inmediato de esta acción es quitar la referencia al eje X. En este siguiente paso vamos a cambiar el formato de Eje categorías con la posibilidad de que podamos ver siempre dígitos positivos, pero a ambos lados del cruce del eje. Esto lo logramos seleccionando en primer lugar el eje de categorías X, y luego con el botón derecho del Mouse damos clic en la opción de Formato de Ejes, y allí en la pestaña Número, aplicamos como Tipo (0;0) para que, tanto los valores positivos como negativos aparezcan sin signo (ni + ni ‐). Aplicando los retoques de Formato de área, degradados, vistos en el capítulo anterior, llegamos a una imagen similar del gráfico que debíamos generar: Gráficos con Doble Eje Dada la siguiente planilla, generaremos un gráfico de líneas que la represente: Generamos entonces el gráfico de líneas correspondiente, obteniendo el siguiente resultado: Veamos que mas allá de que graficamos ambas series, Ventas y Porcentajes, al tener ambas valores totalmente disímiles, esto nos genera un impacto visual ya que la serie de porcentaje contiene valores entre 0 y 1 y por lo tanto la línea queda pegada al eje de categorías. Para que la serie de Porcentaje tome como referencia un eje secundario, seleccionamos la serie dando clic sobre cualquiera de los valores de la línea que representa a dicha serie en el gráfico y con el botón derecho accedemos a la opción Formato Serie de Datos. En este punto damos clic sobre la pestaña Ejes, y allí agregamos o marcamos la opción de Eje Secundario. El impacto del mismo será el siguiente: Para separar ambas series y que los valores queden distanciados, y a su vez que cada una de las series haga referencia a un eje diferente, presionamos sobre el eje secundario agregado, y con el botón derecho seleccionamos la opción Formato de Ejes – en la pestaña de Escala – Cambiaremos la escala para que el valor máximo este dado en el 0,5 (o sea 50 %). Pasamos entonces a obtener el siguiente gráfico: De esta manera, a la persona que tenga que dar una lectura del gráfico le resultará mas facil analizar ambas series sabiendo que ambas toman escalas diferentes y hacen referencias a ejes diferentes del gráfico (una al eje primario, y otra al secundario). Gráficos de GANTT Dada la siguiente planilla, generaremos un gráfico de GANTT que nos muestre la duración de las tareas, y nos de la opción de adaptarse automáticamente ante cambios en fechas de inicio, o duración de las mismas. Este gráfico es muy usado, en proyectos para encontrar puntos críticos, así como también determinar atrasos en las entregas y evaluar decisiones a tomar ante desvíos en el cronograma propuesto. En la siguiente planilla vemos que tenemos fecha inicial de cada tarea, fecha de fin de cada tarea, y mediante una formula calculamos los días que demoramos en el desarrollo de cada tarea. A partir de allí generamos un gráfico de barras, y llegaremos al siguiente gráfico: Formularios Este conjunto de herramientas nos aportará en Excel, un estilo gráfico que nos permitirá manejar la planilla desde un entorno visual más ameno. En el siguiente ejemplo veremos como utilizar la barra de herramientas, personalizando varias opciones al respecto. En la planilla aplicaremos varias herramientas del tema formularios, para esto, el primer paso será dejar visible dicha barra de herramientas, y para eso vamos al menú Ver – Barra Herramientas – Formularios, como vemos a continuación: Esta opción nos desplegará la siguiente barra con la que trabajaremos en los siguientes pasos: La primera herramienta que aplicaremos será la de Cuadro Combinado para las propuestas de diferentes tipos de habitaciones con las que cuenta el hotel. Para esto, vamos a colocar una planilla auxiliar que nos provea de la siguiente información: Vamos a tomar entonces de la barra de herramientas, el Cuadro Combinado, y al seleccionar nos permitirá dibujar dicho cuadro sobre la planilla: Para que dicho cuadro despliegue las opciones, de tipos de habitaciones, daremos clic derecho sobre el cuadro combinado que dibujamos, y seleccionamos la opción de Formato de Control. Esto nos desplegará la siguiente pantalla: Aquí completaremos el Rango de Entrada: en nuestro caso formado por el rango E1:E3 (los distintos tipos de habitaciones que se desplegarán al presionar sobre el cuadro combinado). La vinculación con la celda la haremos con una celda arbitraria (H1), en ella mas adelante visualizaremos el número de índice o posición que el usuario seleccione del cuadro combinado. Por último en este cuadro las líneas de unión verticales representan la cantidad de datos que se van a visualizar por pantalla que se muestre en el cuadro combinado. Veamos que al seleccionar en este caso la habitación SINGLE, aparecerá el número 1 en la celda H1 que fue la celda con la que vinculamos el cuadro combinado. En caso que el usuario seleccione la habitación doble, se reflejará el número 2 en H1, y número 3 en caso de seleccionar la SUITE. Para que automáticamente podamos determinar el precio de la habitación por DIA, utilizaremos una función de Excel que será INDICE: =INDICE (F1:F3; H1) Con esto obtendremos del rango F1:F3, el número de posición que se determina en la celda H1. En este siguiente paso vamos a utilizar otro de los controles de la barra de formularios, que será el Control de Números: En esta pantalla controlaremos nuestro formulario. Aplicaremos un valor actual. El valor mínimo lo estableceremos en 1, y el valor máximo en 30, y el incremento en 1. Esto quiere decir que el mínimo de días de estadía será 1, y el máximo de días de estadía será 30. La celda con la cual vincularemos será la celda H2 (celda arbitraria). En la celda B5, aplicaremos como fórmula una referencia a la celda H2 ya que esta contendrá el valor seleccionado en el formulario. Para el caso de la elección de cochera optaremos por un control denominado Casilla de Verificación (de la misma barra de formularios). Esto nos dará un checkbox con valores de verdadero o falso, según la casilla este marcada o no. Estableceremos el valor de la cochera en base a la celda H3, por lo tanto en nuestra celda B6 aplicaremos la siguiente formula: =SI (H3; 5; 0) * B5 Esta formula nos presentará el valor 5 en caso de que la casilla de verificación este marcada y cero en caso de que no este marcada, basándose en el valor de la celda H3 que será verdadero o falso, y esto lo multiplicamos por la celda B5 que tiene la cantidad de días de estadía en el hotel. La idea es que mediante el ejemplo veamos el uso de diferentes formularios, pero también cada uno lo puede adaptar a las necesidades de la planilla que este implementando. En el siguiente caso para las formas de pago, dibujaremos un cuadro de lista, y entonces daremos como rango de entrada las celdas que contienen las diferentes opciones en cuanto a formas de pago. En el caso del porcentaje de interés nuevamente utilizaremos la función INDICE como aplicamos anteriormente. Veamos la planilla finalizada, e implementando los diferentes formularios: Existen diferentes botones de la barra de formularios que, si bien no fueron utilizados en este ejemplo son útiles en diferentes casos como son: • Etiqueta • Cuadro de grupo • Botón • Botón de opción • Barra desplazamiento MÓDULO MACROS EN EXCEL Módulo Macros en Excel Concepto General: Macro: Un programa escrito o grabado por el usuario que almacena una serie de comandos de Microsoft Excel que pueden utilizarse posteriormente como un único comando. Mediante las macros pueden automatizarse las tareas complejas y pueden reducirse el número de pasos necesarios para realizar las tareas que se ejecutan con más frecuencia. Las macros se graban en el lenguaje de programación de Visual Basic para Aplicaciones de Microsoft. También pueden escribirse las macros directamente en el Editor de Visual Basic. La idea de generar macros en Microsoft Excel radica en la automatización de tareas en la planilla electrónica. De esta manera quedará implementada una solución en Visual Basic para aplicaciones (VBA) que es el lenguaje de programación que se utiliza en la suite de Office para desarrollar Macros. Existen básicamente dos formas de desarrollar macros: • Mediante el uso de la Grabadora de Macros • Mediante el Editor de Visual Basic para aplicaciones Comencemos con el uso de la grabadora en un ejemplo donde apliquemos tres tareas, en primer lugar escribiremos Hola en la celda A1, luego pondremos Negrita y por último pintaremos de fondo amarillo dicha celda. Para esto, comenzaremos por encender la grabadora, para que capte cada una de las tareas que vamos realizando: La grabadora la encendemos mediante el menú de Herramientas – Macro – Grabar nueva macro, como vemos a continuación: Nos aparecerá la siguiente pantalla para configurar la grabación de dicho macro: A cada macro que grabemos le podemos asignar un nombre, en forma predeterminada la grabadora asignará Macro1, Macro2…. Luego podremos también asignar un Método Abreviado, para que el usuario que desee ejecutar rápidamente un macro pueda acudir a este atajo de teclado (por ejemplo ctrl. + T). Podremos grabar el macro en el mismo libro en el cual estamos trabajando, podremos grabarlo en un libro independiente, o también como opción adicional podremos grabarlo en el Libro Personal, que es algo así como una biblioteca de macros personales que podemos ejecutar en cualquier archivo de Excel que deseemos el día de mañana. En la descripción podemos dar pautas precisas de determinados detalles de las tareas que ejecutará nuestro macro. Cuando configuramos dicha pantalla, al presionar Aceptar, la grabadora de Macros generará un código VBA por cada una de las tareas que vayamos realizando de ahora en mas (no capta los movimientos del Mouse, ni del cursor que realicemos, pero si el ingreso a cualquiera de las opciones de Excel). Realizamos a continuación las tres tareas propuestas, y luego detenemos la grabación mediante el menú de Herramientas – Macro – Detener Grabación. Bueno, ahora veamos como repetimos las tareas ejecutando el macro grabado en esta etapa anterior. Una de las posibilidades que tenemos es ejecutar el macro mediante el menú de Herramientas – Macro – Macros Seleccionamos el macro a ejecutar y luego presionamos sobre el botón ejecutar tal cual aparece en la pantalla a continuación: En esta pantalla no solo podemos elegir el macro a ejecutar, y luego realizar la ejecución sino que también en caso que queramos dar un método abreviado bastará con seleccionar el macro y con el botón de opciones nos aparecerá el siguiente cuadro donde asignaremos el método abreviado que deseemos: En este caso el usuario que presione la combinación CTRL + t ejecutará el macro que desarrollamos anteriormente. No olvidemos que el macro no elimina el contenido de la celda para ejecutar, sino que lo hace sobrescribiendo el contenido anterior de dicha celda. Podríamos bien crear un macro que nos permita borrar para luego volver a ejecutar. En el caso que deseemos cambiar el método abreviado volveremos a repetir el procedimiento de ir al menú Herramientas – Macro – Macros (o mediante el acceso directo de ALT + F8), seleccionamos el Macro al que le queramos cambiar el método abreviado y con el botón opciones accedemos a la misma pantalla donde reasignaremos el abreviado. Ahora, si nosotros quisiéramos ejecutar el macro de una forma más simple y rápida también tenemos la posibilidad de insertar un botón desde la barra de formularios, y asignarle al mismo un macro. Esto lo haremos mediante el menú Ver – Barra Herramientas – Formularios, como vemos a continuación: En la barra de herramientas de formularios seleccionaremos el botón de comando y lo dibujaremos en la planilla con la que estamos trabajando. El botón de comando nos permitirá dibujarlo sobre cualquier lugar de la planilla con la cual estemos trabando. Es importante acotar que dicho botón quedará sobre la planilla y no formando parte de la misma en una celda en particular. Una vez que dibujemos dicho botón de comando, al soltar el Mouse nos permitirá asignarle un macro al mismo. En el caso de que hayamos soltado el Mouse y nos quedemos sin asignar un macro al mismo, podemos mediante el botón derecho sobre el botón dibujado seleccionar la opción de Asignar Macro. A dicho botón podremos cambiarle el nombre, modificarle el tamaño cambiar el texto que aparece dentro del botón. Recordar que para seleccionar el botón simplemente con el CTRL presionado damos clic sobre dicho botón y ya pasamos al modo edición donde aparecen los puntos de agarre sobre dicho botón. De ahora en mas, simplemente el usuario presionará dicho botón para ejecutar el macro asignado. NOTA: Si queremos asignar un macro a una imagen o a un macro podemos hacer el mismo procedimiento, o sea, insertar la imagen o el gráfico y con el botón derecho seleccionar la opción de asignar macro para indicar que macro asignaremos a dicha imagen. Por otro lado otra manera que tenemos de generar una forma rápida de ejecución de macros es generando un icono en la barra de herramientas de Excel. Para esto presionaremos sobre la barra de herramientas estándar con el BOTÓN DERECHO DEL MOUSE, y seleccionamos la opción PERSONALIZAR. Nos aparecerá la siguiente pantalla: En la solapa Comandos, buscaremos la categoría Macros y a la derecha en la lista de comandos veremos dos tipos que serán: Personalizar elemento de menú y Personalizar botón, esta última opción será la que utilicemos para arrastrar el icono (mediante el botón izquierdo del Mouse presionado) hacia un lugar de la barra de herramientas estándar de Excel. El botón nos quedó en la barra de herramientas y simplemente cuando presionemos por primera vez en dicho botón nos permitirá asignarle el macro correspondiente. En caso de que nosotros queramos modificar el macro y de ahora en más deseemos cambiar la estructura, para que lo aplique a un conjunto de celdas, o para que nos escriba diferentes palabras por cada celda, no nos quedará otra que acudir al editor de Visual Basic para Aplicaciones para cambiar la sintaxis de la grabación. Con la combinación ALT+F11 pasaremos rápidamente al entorno VBA, también podríamos pasar a dicha pantalla mediante el menú de Herramientas – Macros – Editor Visual Basic Nos desplegará la pantalla que vemos a continuación: En esta pantalla trabajaremos escribiendo nuestros propios macros. Como vemos sobre la parte izquierda de esta pantalla, tenemos una carpeta de Módulos donde encontraremos los diferentes macros que se hayan desarrollado. En nuestro caso solo contamos con el Módulo 1 que es donde se encuentra el macro grabado anteriormente. Al dar doble clic sobre el Módulo 1 veremos a la derecha de la pantalla el código que anteriormente la grabadora fue escribiendo automáticamente mientras nosotros realizábamos las tareas. CÓDIGO VBA El código VBA se maneja en idioma inglés. En general el lenguaje básicamente se maneja orientado a eventos. Cada objeto se separa mediante el . (Punto) de las diferentes propiedades que posee. Conceptos esenciales. Clase: Es una agrupación de objetos con las mismas características y propiedades. Objeto: Son elementos que se caracterizan por poseer propiedades en común. Método: Cualquier operación pasible de ser ejecutada sobre un objeto. Ejemplo: Clase: Medios de Transporte (generalización) Subclase: Autos (especialización) Variable: Un lugar de almacenamiento con nombre que puede contener cierto tipo de datos. Cada variable tiene un nombre único que la identifica. Nombres de variable deben comenzar con un carácter alfabético, deben ser únicos dentro del mismo ámbito, no deben contener más de 255 caracteres y no pueden contener un punto. Cada macro que vayamos escribiendo en el editor de visual Basic, debe comenzar con la sentencia Sub, y terminar con la sentencia End Sub. Veamos en nuestro primer ejemplo. Dentro de la carpeta Módulos tenemos nuestro Modulo 1 y dentro del mismo desarrollamos dos macros. Nuestro Macro1 fue grabado mediante el uso de la grabadora para macros y luego comenzamos mediante la orden Sub el macro denominado Primero que simplemente escribe la palabra HOLA en la celda A1. En forma predeterminada cuando hacemos referencia a la celda A1, Microsoft Excel lo tomará sobre la hoja activa (hoja en la que estamos posicionados al ejecutar el macro). Formas de referir a la hoja: ActiveSheet.Range(“A1”).value Aquí hacemos referencia a la celda A1 de la hoja activa Sheets(1).Range(“A1”).Value Aquí hacemos referencia a la hoja con índice 1, celda A1 del libro activo Sheets(“Hoja1”).Range(“A1”).Value Aquí hacemos referencia a la hoja denominada Hoja1, celda A1 Repetimos que en forma predeterminada Excel toma Activesheet cuando nos referimos a una celda determinada. Métodos. La mayoría de objetos tienen comportamientos o realizan acciones, por ejemplo, una acción evidente de un objeto coche es el de moverse o lo que es lo mismo, trasladarse de un punto inicial a un punto final. Cualquier proceso que implica una acción o pauta de comportamiento por parte de un objeto se define en su clase para que luego pueda manifestarse en cualquiera de sus objetos. Así, en la clase coche se definirían en el método mover todos los procesos necesarios para llevarlo a cabo (los procesos para desplazar de un punto inicial a un punto final), luego cada objeto de la clase coche simplemente tendría que invocar este método para trasladarse de un punto inicial a un punto final, cualesquiera que fueran esos puntos. Repasemos a continuación todos estos conceptos pero ahora desde el punto de vista de algunos de los objetos que nos encontraremos en Excel como WorkSheet (Objeto hoja de cálculo) o Range (Objeto casilla o rango de casillas). Un objeto Range está definido por una clase donde se definen sus propiedades, recordemos que una propiedad es una característica, modificable o no, de un objeto. Entre las propiedades de un objeto Range están Value , que contiene el valor de la casilla , Column y Row que contienen respectivamente la fila y la columna de la casilla, Font que contiene la fuente de los caracteres que muestra la casilla, etc. Range, como objeto, también tiene métodos, recordemos que los métodos sirven llevar a cabo una acción sobre un objeto. Por ejemplo el método Activate, hace activa una celda determinada, Clear, borra el contenido de una celda o rango de celdas, Copy, copia el contenido de la celda o rango de celdas en el portapapeles,... Conjuntos. Una conjunto es una colección de objetos del mismo tipo, para los que conozcan algún lenguaje de programación es un array de objetos. Por ejemplo, dentro de un libro de trabajo puede existir más de una hoja (WorkSheet), todas las hojas de un libro de trabajo forman un conjunto, el conjunto WorkSheets. Cada elemento individual de un conjunto se referencia por un índice, de esta forma, la primera, segunda y tercera hoja de un libro de trabajo, se referenciarán por WorkSheets(1), WorkSheets(2) y WorkSheets(3). Objetos de Objetos. Es muy habitual que una propiedad de un objeto sea otro objeto. Siguiendo con el coche, una de las propiedades del coche es el motor, y el motor es un objeto con propiedades como cubicaje, caballos, número de válvulas, etc. y métodos, como aumentar_revoluciones, cargar_combustible, mover_pistones, etc. En Excel, el objeto WorkSheets tiene la propiedad Range que es un objeto, Range tiene la propiedad Font que es también un objeto y Font tiene la propiedad Bold (negrita). Tenga esto muy presente ya que utilizaremos frecuentemente Propiedades de un objeto que serán también Objetos. Dicho de otra forma, hay propiedades que devuelven objetos, por ejemplo, la propiedad Range de un objeto WorkSheet devuelve un objeto de tipo Range. Insertar un nuevo módulo. Un módulo sirve para agrupar procedimientos y funciones. El procedimiento y la función son entidades de programación que sirven para agrupar instrucciones de código que realizan una acción concreta. Para insertar un módulo active opción del menú Insertar/ Módulo. Se activará una nueva ventana, si aparece demasiado pequeña, maximícela. Insertar un procedimiento. Ya hemos dicho que un procedimiento es un bloque de instrucciones de código que sirven para llevar a cabo alguna tarea específica. Un procedimiento empieza siempre con la instrucción Sub Nombre_Procedimiento Y termina con la instrucción End Sub. A continuación crearemos un procedimiento para poner el texto "Hola" en la casilla A1. Ejemplo 1 Sub Primero Range("A1").Value = "Hola" End Sub Observe el código. Range("A1").Value="Hola" En esta línea estamos indicando que trabajamos con un objeto Range. Para indicarle que nos referimos a la casilla A1, encerramos entre paréntesis esta referencia (más adelante verá otra forma de referirnos a las casillas). De este objeto, indicamos que queremos establecer un nuevo valor para la propiedad Value, observe que para separar el objeto de su propiedad utilizamos la notación punto. Recuerde que el conjunto Range es un objeto que pende del objeto WorkSheets, así por ejemplo el siguiente código haría lo mismo que el anterior. WorkSheets(1).Range("A1").Value = "Hola" Bueno, de hecho no hace lo mismo, en la primera opción, el texto "Hola" se pone dentro de la casilla A1 de la hoja activa, mientras que en el segundo es en la casilla A1 de primera hoja ( del conjunto de hojas). La segunda notación es más larga, pero también más recomendable ya que se especifican todos los objetos. En muchas ocasiones se pueden omitir algunos objetos precedentes, no le aconsejamos hacerlo, sus programas perderán claridad y concisión. Si desea hacer referencia a la hoja activa puede utilizar ActiveSheet, así, el primer ejemplo lo dejaremos de la manera siguiente. Sub Primero ActiveSheet.Range("A1").Value = "Hola" End Sub Si desea poner "Hola" (o cualquier valor) en la casilla activa, puede utilizar la propiedad (objeto) Activecell de WorkSheets. Así para poner "Hola" en la casilla activa de la hoja activa seria, Sub Primero ActiveSheet.ActiveCell.Value = "Hola" End Sub Para terminar con este primer ejemplo. WorkSheets están dentro del Objeto WorkBooks (libros de trabajo) y WorkBooks están dentro de Application. Application es el objeto superior, es el que representa la aplicación Excel. Así, el primer ejemplo, siguiendo toda la jerarquía de objetos quedaría de la forma siguiente. Sub Primero Application.WorkBooks(1).WorkSheets(1).Range("A1").Value = "Hola" End Sub Insistiendo con la nomenclatura, Application casi nunca es necesario especificarlo, piense que todos los objetos penden de este, WorkBooks será necesario implementarlo si en las macros se trabaja con diferentes libros de trabajo (diferentes archivos), a partir de WorkSheets, es aconsejable incluirlo en el código, sobre todo si se quiere trabajar con diferentes hojas, verá, sin embargo, que en muchas ocasiones no se aplica. Ejecutar un procedimiento o función. Pruebe ejecutar el primer procedimiento de ejemplo. 1. Sitúe el cursor dentro del procedimiento. 2. Active opción de la barra de menús Ejecutar/ Ejecutar Sub Userform. También puede hacer clic sobre el botón o pulsar la tecla F5. Para ejecutar el procedimiento desde la hoja de cálculo. Debe estar en una hoja, no en el editor de Visual Basic 1. Active opción de la barra de menús Herramientas/ Macro/ Macros. Se despliega una ventana que muestra una lista donde están todas las macros incluidas en el libro de trabajo. 2. Seleccione la macro de la lista y pulse sobre el botón Ejecutar. Ejemplo 2 En este segundo ejemplo simplemente ampliaremos la funcionalidad de la macro del ejemplo 1. Además de escribir "Hola" en la casilla A1 de la celda A1, la pondremos en negrita y le daremos color al texto. Para ello utilizaremos las propiedades Bold y Color del objeto Font. Sub Segundo ActiveSheet.Range("A1").Value = "Hola" ActiveSheet.Range("A1").Font.Bold = True ActiveSheet.Range("A1").Font.Color = RGB(255,0,0) End Sub True. True, que traducido es verdadero, simplemente indica que la propiedad Bold está activada. Si se deseara desactivar, bastaría con igualarla al valor False. La función RGB. Observe que para establecer el color de la propiedad se utiliza la función RGB(Red, Green, Blue), los tres argumentos para esta función son valores del 0 a 255 que corresponden a la intensidad de los colores Rojo, Verde y Azul respectivamente. Referenciar un rango de celdas. Sólo tiene que cambiar a la forma Casilla_Inicial:Casilla_Final. Por ejemplo aplicar el último ejemplo al rango de casillas que va de la A1 a la A8, ponga. Sub Segundo ActiveSheet.Range("A1:A8").Value = "Hola" ActiveSheet.Range("A1:A8").Font.Bold = True ActiveSheet.Range("A1:A8").Font.Color = RGB(255,0,0) End Sub Variables. A continuación vamos a repetir el programa Ejemplo1, pero en lugar de poner "Hola" en la casilla A1 de la hoja activa, dejaremos que el usuario entre un texto desde teclado y a continuación guardaremos ese valor en esa casilla. Observe que el valor que ingrese el usuario debe guardarse en algún lugar para poder ponerlo después en la casilla A1; pues bien, ese valor se guardará en una variable. Una variable es simplemente un trozo de memoria que la función o procedimiento se reserva para guardar datos, la forma general de declarar una variable es DIM variable AS tipo. Siendo variable el nombre que se asigna a la misma y Tipo el tipo de datos que se guardarán (números, texto, fecha, booleanos,...). En nuestro ejemplo, declararemos la variable de tipo String (tipo texto), y lo haremos de la forma siguiente. Dim Texto As String Con esto estamos indicando que se reserve un trozo de memoria (el que sea) , que se llama Texto y que el tipo de datos que se guardarán ahí serán caracteres. La Función InputBox. Esta función muestra una ventana para que el usuario pueda teclear datos. Cuando se pulsa sobre Aceptar, los datos entrados pasan a la variable a la que se ha igualado la función. Vea la línea siguiente. Texto = InputBox("Introduzca el texto", "Entrada de datos"). Si en la ventana que muestra InputBox pulsa sobre el botón Aceptar, los datos tecleados se guardarán en la variable Texto. Sintaxis de InputBox. InputBox(Mensaje, Título, Valor por defecto, Posición horizontal, Posición Vertical, Archivo Ayuda, Número de contexto para la ayuda). Mensaje: Es el mensaje que se muestra en la ventana. Si desea poner más de una línea ponga Chr(13) para cada nueva línea, vea el ejemplo siguiente. Título: Es el título para la ventana InputBox. Es un parámetro opcional. Valor por defecto: Es el valor que mostrará por defecto el cuadro donde el usuario entra el valor. Parámetro opcional. Posición Horizontal: La posición X de la pantalla donde se mostrará el cuadro, concretamente es la posición para la parte izquierda. Si se omite el cuadro se presenta horizontalmente centrado a la pantalla. Posición Vertical: La posición Y de la pantalla donde se mostrará el cuadro, concretamente es la Posición para la parte superior. Si se omite el cuadro se presenta verticalmente centrado a la Pantalla. Archivo Ayuda: Es el archivo que contiene la ayuda para el cuadro. Parámetro opcional. Número de contexto para la ayuda: Número asignado que corresponde al identificador del archivo de ayuda, sirve para localizar el texto que se debe mostrar. Si se especifica este parámetro, debe especificarse obligatoriamente el parámetro Archivo Ayuda. Ejemplo 3 Sub Entrar_Valor Dim Texto As String ' Chr(13) sirve para que el mensaje se muestre en dos Líneas Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla A1", "Entrada de datos") ActiveSheet.Range("A1").Value = Texto End Sub Este ejemplo también se puede hacer sin variables. Sub Entrar_Valor ActiveSheet.Range("A1").Value = InputBox("Introducir un texto " & Chr(13) & "Para la casilla A1", "Entrada de datos") End Sub Ejemplo 4 Repetiremos el ejemplo 3, pero en lugar de entrar los valores sobre la casilla A1, haremos que el usuario pueda elegir en que casilla quiere entrar los dat os, es decir, se le preguntará al usuario mediante un segundo Inputbox sobre que casilla quiere entrar el valor del primer Inputbox. Serán necesarias dos variables, una para guardar la casilla que escoja el usuario y otra para guardar el valor. Option Explicit Sub Entrar_Valor Dim Casilla As String Dim Texto As String Casilla = InputBox("En que casilla quiere entrar el valor", "Entrar Casilla") Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla " & Casilla , "Entrada de datos") ActiveSheet.Range(Casilla).Value = Texto End Sub La sentencia Option Explicit. En visual basic no es necesario declarar las variables, por ejemplo, en el programa anterior se hubiera podido prescindir de las líneas Dim Casilla As String Dim Texto As String A pesar de ello, le recomendamos que siempre declare las variables que va a utilizar, de esta forma sabrá cuales utiliza el procedimiento y qué tipo de datos guarda cada una, piense que a medida que vaya aprendiendo, creará procedimientos cada vez más complicados y que requerirán el uso de más variables, si no declara las variables al principio del procedimiento ocurrirán dos cosas. Primero, las variables no declaradas son asumidas como tipo Variant (este es un tipo de datos que puede almacenar cualquier valor, número, fechas, texto, etc. pero tenga en cuenta que ocupa 20 Bytes y para guardar una referencia a una casilla, la edad de alguien, etc. no son necesarios tantos bytes); segundo, reducirá considerablemente la legibilidad de sus procedimientos ya que las variables las irá colocando a medida que las necesite, esto, a la larga complicará la corrección o modificación del procedimiento. Bueno, pues toda la explicación anterior es para que declare todas las variables que va a utilizar. La sentencia Option Explicit al principio del módulo fuerza a que se declaren todas las variables. Si al ejecutar el programa, se encuentra alguna variable sin declarar se producirá un error y no se podrá ejecutar el programa hasta que se declare. Si todavía no se ha convencido sobre la conveniencia de declarar las variables y utilizar Option Explicit, pruebe el procedimiento siguiente, cópielo tal cual (Texto y Testo están puestos adrede simulando que nos hemos equivocado al teclear). Sub Entrar_Valor Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla A1", "Entrada de datos") ActiveSheet.Range("A1").Value = Testo End Sub Observe que el programa no hace lo que se pretendía que hiciera. Efectivamente, Texto y Testo son dos variables diferentes, como no se ha declarado ninguna ni se ha utilizado Option Explicit Visual Basic no da ningún tipo de error y ejecuta el programa. Pruebe el siguiente módulo e intente ejecutarlo. Option Explicit Sub Entrar_Valor Dim Texto As String Texto = InputBox("Introducir un texto " & Chr(13) & "Para la casilla A1", "Entrada de datos") ActiveSheet.Range("A1").Value = Testo End Sub Observe que el programa no se ejecuta, al poner Option Explicit, forzamos a que se declaren todas las variables. Visual Basic detecta que la variable Testo no ha sido declarada y así lo indica mostrando Error, entonces es cuando es más fácil darnos cuenta del error que hemos cometido al teclear y cambiamos Testo por Texto. Ahora imagine que el error se produce en un programa de cientos de líneas que necesita otras tantas variables. Tipos de datos en Visual Basic para Excel. (Tabla copiada de la ayuda en línea de Visual Basic para Excel). Tipo de datos Byte Boolean Integer Long(entero largo) Single (coma flotante/ precisión simple) Tamaño Almacenamiento 1 byte 2 bytes 2 bytes 4 bytes 4 bytes Double (coma flotante/ precisión doble) 8 bytes Currency (entero a escala) Decimal 8 bytes Date 8 bytes 14 bytes Intervalo 0 a 255 True o False ‐32.768 a 32.767 ‐2.147.483.648 a 2.147.483.647 ‐3,402823E38 a ‐1,401298E‐45 para valores negativos; 1,401298E‐45 a 3,402823E38 para valores positivos ‐1,79769313486232E308 a ‐
4,94065645841247E‐324 para valores negativos; 4,94065645841247E‐324 a 1,79769313486232E308 para valores positivos ‐922.337.203.685.477,5808 a 922.337.203.685.477,5807 +/‐
79.228.162.514.264.337.593.543.950.335 sin punto decimal; +/‐
7,9228162514264337593543950335 con 28 posiciones a la derecha del signo decimal; el número más pequeño distinto de cero es+/‐ 0,0000000000000000000000000001 1 de enero de 100 a 31 de diciembre de Object String (longitud variable) String(longitud fija) Variant(con números) 4 bytes 10 bytes + longitud de la cadena Longitud de la cadena 16 bytes Variant(con caracteres) 22 bytes + longitud de cadena 9999 Cualquier referencia a tipo Object Desde 0 a 2.000 millones Desde 1 a 65.400 aproximadamente Cualquier valor numérico hasta el intervalo de un tipo Double El mismo intervalo que para un tipo String de longitud variable El intervalo de cada elemento es el mismo que el intervalo de su tipo de datos. Definido por el Número requerido por usuario (utilizando los elementos Type) Conversión de Tipos de datos. Copie el siguiente Ejemplo. Simplemente se piden dos números, se suman y se guardan el la casilla A1 de la hoja activa. Ejemplo 5 Option Explicit Sub Sumar() Dim Numero1 As Integer Dim Numero2 As Integer Numero1 = InputBox("Entrar el primer valor", "Entrada de datos") Numero2 = InputBox("Entrar el primer valor", "Entrada de datos") ActiveSheet.Range("A1").Value = Numero1 + Numero2 End Sub Ejecute el procedimiento y ponga respectivamente los valores 25 y 25. Observe que todo ha ido correctamente y en la casilla A1 de la hoja activa aparece un 50. Ahora, vuelva a ejecutar el programa y cuando se le pide el primer valor teclee "Hola". Observe que el programa se detiene indicando un error en el tipo de datos. Efectivamente, observe que la función InputBox devuelve siempre datos tipo String, en el primer ejemplo no ha habido ningún problema, al entrar caracteres numéricos1, estos pueden asignarse a variables tipo Integer porque Visual Basic hace automáticamente la conversión, pero al entrar texto e intentarlo asignar a una variable Integer Visual Basic muestra un error indicando que la variable no es adecuada para los datos que se desean guardar. Para solucionar estos problemas se deben utilizar funciones de conversión de tipo. Estas funciones, como su nombre indica, convierten datos de un tipo a otro, de String a Integer, de Integer a String, de Date a String ,... Así el procedimiento anterior quedaría. Option Explicit Sub Sumar() Dim Numero1 As Integer Dim Numero2 As Integer Numero1 = Val(InputBox("Entrar el primer valor", "Entrada de datos")) Numero2 = Val(InputBox("Entrar el primer valor", "Entrada de datos")) ActiveSheet.Range("A1").Value = Numero1 + Numero2 End Sub La función Val(Dato String), convierte una cadena de caracteres a valor numérico. Si la cadena a convertir contiene algún carácter no numérico devuelve 0. Así, si al pedir un valor se teclea "Hola", la función Val, devolverá un cero. Funciones de conversión de tipos. (Tabla copiada de la ayuda en línea de Visual Basic para Excel). Val(Cadena). Convierte la cadena a un valor numérico. Str(Número). Convierte el número a una expresión cadena. CDate(Fecha). Convierte cualquier cadena a fecha. Objeto Cells(fila, columna). Sirve, como el objeto range, para referenciar una casilla o rango de casillas, pero en lugar de utilizar la referencia de la forma A1, B1, X320,... utiliza la fila y la columna que ocupa la casilla dentro de la hoja (o objeto WorkSheet). Por ejemplo, para poner hola en la casilla A1 de la hoja activa seria: ActiveSheet.Cells(1,1).Value="Hola" Utilizar Cells para referenciar un rango. Esto sería el equivalente a Range("Casilla_Inicial:Casilla_Final"). La forma que se obtiene utilizando Cells es un poco más larga, pero se verá que a veces resulta mucho más funcional que utilizando únicamente range. Para referirnos al rango A1:B8, pondremos: Range(Cells(1, 1), Cells(8, 2)).Value = "Hola" Otra forma interesante de Cells es la siguiente: Range("A5:B10").Cells(2, 1).Value = "Hola" Pondrá en la celda A6 el valor "Hola", observe que en este ejemplo Cells comienza a contar filas y columnas a partir del rango especificado en el objeto Range. Variables de Objetos. Una variable objeto sir ve para hacer referencia a un objeto, esto significa que podremos acceder a las propiedades de un objeto e invocar a sus métodos a través de la variable en lugar de hacerlo directamente a través del objeto. Posiblemente no se utilice demasiado esta clase de variables (está claro que esto dependerá de las preferencias del programador), pero hay casos en los que no hay más remedio que utilizarlas, por ejemplo en estructuras For Each ... Next como veremos, o cuando sea necesario construir funciones que devuelvan rangos, referencias a hojas, etc. Para declarar una variable objeto se utiliza también la palabra Dim de la forma siguiente, Dim Var_Objeto As Objeto Por Ejemplo: Dim R As Range Dim Hoja As WorkSheet Para asignar un objeto a una variable debe u tilizar la instrucción Set. Set Variable_Objeto = Objeto Por Ejemplo Set R= ActiveSheet.Range("A1:B10") Set Hoja = ActiveSheet Set Hoja = WorkSheets(1) Veamos a continuación un ejemplo de cómo utilizar este tipo de variables, Ejemplo 6. Algo muy simple, llenar el rango de A1 a B10 con la palabra "Hola" y después poner negrita, observe como se asigna una variable objeto al objeto y luego como se trabaja con esa variable de la misma forma que trabajaría directamente sobre el objeto. Sub obj() Dim R As Range Set R = ActiveSheet.Range("A10:B15") R.Value = "Hola" R.Font.Bold = True End Sub Estructuras condicionales. Ahora que ya ha experimentado con unos cuantos objetos y propiedades, nos detendremos a estudiar las estructuras condicionales. Las estructuras condicionales son instrucciones de programación que permiten controlar la ejecución de un fragmento de código en función de si se cumple o no una condición. Estudiaremos en primer lugar la instrucción if Condición then..End if (Si Condición Entonces...Fin Si) La estructura condicional que se construye con la instrucción Si Condición Entonces... Fin Si tiene la forma siguiente. Si Condición Entonces Senténcia1 Senténcia2 . . SenténciaN Fin Si . . Cuando el programa llega a la instrucción Si Condición Entonces , se evalúa la condición, si esta se cumple (es cierta), se ejecutan todas las sentencias que están encerradas en el bloque, si no se cumple la condición, se saltan estas sentencias. Esta estructura en Visual Basic tiene la sintaxis siguiente: If Condición Then Senténcia1 Senténcia2 . . SenténciaN End If Ejemplo 6 Entrar una cantidad que representa el precio de algo por el teclado con la instrucción InputBox y guardarlo en la celda A1 de la hoja activa. Si el valor entrado desde el teclado (y guardado en A1) es superior a 1000, pedir descuento con otro InputBox y guardarlo en la casilla A2 de la hoja activa. Calcular en A3, el precio de A1 menos el descuento de A2. Sub Condicional() ActiveSheet.Range("A1").Value = 0 ' Poner las casillas donde se guardan los valores 0. ActiveSheet.Range("A2").Value = 0 ActiveSheet.Range("A3").Value = 0 ActiveSheet.Range("A1").Value = Val(InputBox("Entrar el precio", "Entrar")) ' Si el valor de la casilla A1 es mayor que 1000, entonces, pedir descuento If ActiveSheet.Range("A1").Value > 1000 Then ActiveSheet.Range("A2").Value = Val(InputBox("Entrar Descuento", "Entrar")) End If ActiveSheet.Range("A3").Value = ActiveSheet.Range("A1").Value ‐ _ ActiveSheet.Range("A2").Value End Sub Ejemplo 7. El mismo que el anterior pero utilizando variables. Option Expl icit Sub Condicional() Dim Precio As Integer Dim Descuento As Integer Precio = 0 Descuento = 0 Precio = Val(InputBox("Entrar el precio", "Entrar")) ' Si el valor de la variable precio es mayor que 1000, entonces, pedir descuento If Precio > 1000 Then Descuento = Val(InputBox("Entrar Descuento", "Entrar")) End If ActiveSheet.Range("A1").Value = Precio ActiveSheet.Range("A2").Value = Descuento ActiveSheet.Range("A3").Value = Precio ‐ Descuento End Sub Viendo los dos programas anteriores puede que le surja la duda de si emplear variables o directamente valores almacenados en las celdas. La solución es fácil, lo que le parezca más conveniente en cada caso concreto que desee solucionar. Las variables, aunque muchas veces "innecesarias", quizás dejan los programas más legibles y claros. Y la legibilidad de un programa es lo más valioso del mundo para un programador (profesionalmente hablando), sobre todo si se da el caso (inevitable el 99,999...% de las ocasiones) que se tenga que modificar un programa para dotarle de más funcionalidades, facilitar su manejo, etc. En la mayoría de ejemplos que encontrará en este manual verá que se utilizan variables preferentemente. Aunque muchas veces su función sea simplemente recoger datos de las celdas para operarlas y dejarlas en otras celdas y, consecuentemente, aumente el número de operaciones, creemos que con ello se gana en legibilidad y flexibilidad. Ejemplo 8. Macro que compara los valores de las casillas A1 y A2 de la hoja activa. Si son iguales pone el color de la fuente de ambas en azul. Sub Condicional2() If ActiveSheet.Range("A1").Value = ActiveSheet.Range("A2").Value Then ActiveSheet.Range("A1").Font.Color = RGB(0, 0, 255) ActiveSheet.Range("A2").Font.Color = RGB(0, 0, 255) End If End Sub Estructura If..Else Esta estructura se utiliza cuando se requiere una respuesta alternativa a una condición. Su estructura es la siguiente. Si Condición Entonces Senténcia1 Senténcia2 . . SenténciaN Sino Senténcia1 Senténcia2 . . SenténciaN Fin Si Observe que, si se cumple la condición, se ejecuta el bloque de sentencias delimitado por Si Condición Entonces y Si no se cumple la condición se ejecuta el bloque delimitado por Sino y Fin Si. En Visual Basic la instrucción Si Condición Entonces ... Sino ... Fin Si se expresa con las instrucciones siguientes. If Condición Then Senténcia1 Senténcia2 . . SenténciaN Else Senténcia1 Senténcia2 . . SenténciaN End If Ejemplo 9. Entrar una cantidad que representa el precio de algo por el teclado con la instrucción InputBox y guardarlo en la celda A1 de la hoja activa. Si el valor entrado desde el teclado (y guardado en A1) es superior a 1000, se aplica un descuento del 10% si no se aplica un descuento del 5%, el descuento se guarda en la casilla A2 de la hoja activa. Colocar en A3, el total descuento y en A4 el total menos el descuento. Sub Condicional_Else() Dim Precio As Single Dim Descuento As Single Precio = 0 Precio = Val(InputBox("Entrar el precio", "Entrar")) ' Si el valor de la variable precio es mayor que 1000, entonces, aplicar descuento del 10% If Precio > 1000 Then Descuento = Precio * (10 / 100) ActiveSheet.Range("A2").Value = 0,1 Else ' Sino Aplicar descuento del 5% Descuento = Precio * (5 / 100) ActiveSheet.Range("A2").Value = 0,05 End If ActiveSheet.Range("A1").Value = Precio ActiveSheet.Range("A3").Value = Descuento ActiveSheet.Range("A4").Value = Precio ‐ Descuento End Sub Ejemplo 10. Restar los valores de las casillas A1 y A2. Guardar el resultado en A3. Si el resultado es positivo o 0, poner la fuente de A3 en azul, sino ponerla en rojo. Sub Condicional_Else2() ActiveSheet.Range("A3").Value = AvtiveSheet.Range("A1").Value ‐ _ ActiveSheet.Range("A2").Value If ActiveSheet("A3").Value < 0 Then ActiveSheet.Range("A3").Font.Color = RGB(255,0,0) Else ActiveSheet.Range("A3").Font.Color = RGB(0,0,255) End If End Sub ∙ Estructuras If anidadas. No tiene que sorprenderle, dentro de una estructura if puede ir otra, y dentro de esta otra, y otra... Vea el ejemplo siguiente. Ejemplo 11. Comparar los valores de las casillas A1 y A2 de la hoja activa. Si son iguales, escribir en A3 "Los valores de A1 y A2 son iguales", si el valor de A1 es mayor que A2, escribir "A1 mayor que A2", sino, escribir "A2 mayor que A1" . Sub Condicional() If ActiveSheet.Range("A1").Value = ActiveSheet.Range("A2").Value Then ActiveSheet.Range("A3").Value = "Los Valores de A1 y A2 son iguales" Else If ActiveSheet.Range("A1").Value > ActiveSheet.Range("A2").Value Then ActiveSheet.Range("A3").Value = "A1 mayor que A2" Else ActiveSheet.Range("A3").Value = "A2 mayor que A1" End If End If End Sub Observe que la segunda estructura If..Else..End If queda dentro del Else de la primera estructura. Esta es una regla general, cuando pone un End If, este cierra siempre el último If ( o Else) abierto. ∙ Operadores lógicos. Estos operadores se utilizan cuando se necesitan evaluar dos o más condiciones para decidir si se ejecutan o no determinadas acciones. Operador Lógico And (Y). Utilizaremos este operador cuando sea preciso que para ejecutar un bloque de instrucciones se cumpla más de una condición. Observe que deberán cumplirse todas las condiciones. Vea el ejemplo siguiente. Ejemplo 12. Entrar el Nombre, la cantidad y el precio de un producto desde el teclado y guardarlos respectivamente en A1, A2 y A3. Calcular el total y guardarlo en A4. Si el total es superior a 10.000 y el nombre del producto es "Patatas", pedir un descuento, calcularlo el total descuento y guardarlo en A5, luego restar el descuento del total y guardarlo en A6. Sub Ejemplo_12() Dim Producto As String Dim Cantidad As Integer Dim Precio As Single Dim Total As Single Dim Descuento As Single Dim Total_Descuento As Single Precio = 0 Producto = InputBox("Entrar Nombre del Producto","Entrar") Precio = Val(InputBox("Entrar el precio", "Entrar")) Precio = Val(InputBox("Entrar la cantidad", "Entrar")) Total = Precio * Cantidad ActiveSheet.Range("A1").Value = Producto ActiveSheet.Range("A2").Value = Precio ActiveSheet.Range("A3").Value = Cantidad ActiveSheet.Range("A4").Value = Total ' Si total mayor que 10.000 y el producto es Patatas, aplicar descuento. If Total > 10000 And Producto = "Patatas" Then Descuento = Val(InputBox("Entrar Descuento", "Entrar")) Total_Descuento = Total * (Descuento / 100) Total = Total ‐ Total_Descuento ActiveSheet.Range("A5").Value = Total_Descuento ActiveSheet.Range("A6").Value = Total End If End Sub Observe que para que se ejecute el bloque de instrucciones entre If.. End If deben cumplirse las dos condiciones que se evalúan, si falla cualquiera de las dos (o las dos a la vez), no se ejecuta dicho bloque. Operador Lógico Or (O). Utilizaremos este operador cuando sea preciso que para ejecutar un bloque de instrucciones se cumpla alguna de una serie de condiciones. Observe que sólo es necesario que se cumpla alguna de las condiciones que se evalúan. Vea el ejemplo siguiente. Ejemplo 13. Entrar el Nombre, la cantidad y e l precio de un producto desde el teclado y guardarlos respectivamente en A1, A2 y A3. Calcular el total y guardarlo en A4. Si el total es superior a 10.000 o el nombre del producto es "Patatas", pedir un descuento, calcularlo el total descuento y guardarlo en A5, luego restar el descuento del total y guardarlo en A6. Sub Ejemplo_13() Dim Producto As String Dim Cantidad As Integer Dim Precio As Single Dim Total As Single Dim Descuento As Single Dim Total_Descuento As Single Precio = 0 Producto = InputBox("Entrar Nombre del Producto","Entrar") Precio = Val(InputBox("Entrar el precio", "Entrar")) Precio = Val(InputBox("Entrar la cantidad", "Entrar")) Total = Precio * Cantidad ActiveSheet.Range("A1").Value = Producto ActiveSheet.Range("A2").Value = Precio ActiveSheet.Range("A3").Value = Cantidad ActiveSheet.Range("A4").Value = Total ' Si total mayor que 10.000 o el producto es Patatas, aplicar descuento. If Total > 10000 Or Producto = "Patatas" Then Descuento = Val(InputBox("Entrar Descuento", "Ent rar")) Total_Descuento = Total * (Descuento / 100) Total = Total ‐ Total_Descuento ActiveSheet.Range("A5").Value = Total_Descuento ActiveSheet.Range("A6").Value = Total End If End Sub Observe que para que se ejecute el bloque de instrucciones entre If.. End If sólo es necesario que se cumpla alguna de las dos condiciones que se evalúan (o las dos a la vez). Sólo cuando no se cumple ninguna de las dos no se ejecutan las instrucciones del bloque. ∙ Estructura Select Case. En ocasiones se dará el caso que en función del valor o rango de valores que pueda tener una variable, una casilla, una expresión, etc. deberán llevarse a cabo diferentes acciones o grupos de acciones. Vea el ejemplo siguiente. Ejemplo 15. Macro que suma, resta, multiplica o divide los valores de las casillas A1 y A2 dependiendo de si B1 contiene el signo +, ‐, x, :. El resultado lo deja en A3. Si en B1 no hay ninguno de los signos anteriores en A3 debe dejarse un 0. Sub Ejemplo_15() Dim Signo As String Dim Valor1 As Integer, Valor2 As Integer, Total As Integer Valor1 = ActiveSheet.Range("A1").Value Valor2 = ActiveSheet.Range("A2").Value Signo = ActiveSheet.Range("B1").Value Total=0 If Signo = "+" Then Total = Valor1 + Valor2 End if If Signo = "‐" Then Total = Valor1 ‐ Valor2 End if If Signo = "x" Then Total = Valor1 * Valor2 End if If Signo = ":" Then Total = Valor1 / Valor2 End if ActiveCell.Range("A3").Value = Total End Sub Observe que en el ejemplo anterior todas las instrucciones if evalúan la misma variable. El programa funciona correctamente pero para estos casos es mejor utilizar la instrucción Select Ca se, el motivo principal es por legibilidad y elegancia. Select Case tiene la sintaxis siguiente, Select Case Expresión Case valores : Instrucciones. Case valores : Instrucciones. . . Case valores: Instrucciones. Case Else Instrucciones en caso que no sean ninguno de los valores anteriores. End Select Vea el ejemplo anterior solucionado con esta estructura. Ejemplo 16. Sub Ejemplo_16() Dim Signo As String Dim Valor1 As Integer, Valor2 As Integer, Total As Integer Valor1 = ActiveSheet.Range("A1").Value Valor2 = ActiveSheet.Range("A2").Value Signo = ActiveSheet.Range("A3").Value Select Case signo Case "+" Total = Valor1 + Valor2 Case "‐" Total = Valor1 ‐ Valor2 Case "x" Total = Valor1 * Valor2 Case ":" Total = Valor1 / Valor2 Case Else Total = 0 End Select ActiveCell.Range("A3").Value = Total End Sub Vea el ejemplo siguiente donde cada sentencia Case evalúa un rango de valores. Ejemplo 17. Programa que pide tres notas de un alumno mediante la función InputBox. Las notas van a parar respectivamente a las casillas A1, A2 y A3 de la hoja activa. El programa calcula la media y la deja en A4. Si la media está entre 0 y 2 deja en A5 el mensaje "Muy deficiente", si la nota es 3 deja en A5 el mensaje "Deficiente", si la nota es 4 deja "Insuficiente", si es 5 "Suficiente", si es 6 "Bien", si está entre 7 y 8 deja "Notable", si es mayor que 8 deja "Sobresaliente". Sub Ejemplo_17() Dim Nota1 As Integer, Nota2 As Integer, Nota3 As Integer Dim Media As Single Nota1 = Val(InputBox("Entrar Nota primera evaluación", "Nota")) Nota2 = Val(InputBox("Entrar Nota Segunda evaluación", "Nota")) Nota3 = Val(InputBox("Entrar Nota Tercera evaluación", "Nota")) Media = (Nota1 + Nota2 + Nota3) / 3 ActiveSheet.Range("A1").Value = Nota1 ActiveSheet.Range("A2").Value = Nota2 ActiveSheet.Range("A3").Value = Nota3 ActiveSheet.Range("A4").Value = Media Select Case Media Case 0 To 2 ActiveSheet.Range("A5").Value = "Muy deficiente" Case 3 ActiveSheet.Range("A5").Value = "Deficiente" Case 4 ActiveSheet.Range("A5").Value = "Insuficiente" Case 5 ActiveSheet.Range("A5").Value = "Suficiente" Case 6 ActiveSheet.Range("A5").Value = "Bien" Case 7 To 8 ActiveSheet.Range("A5").Value = "Notable" Case >8 ActiveSheet.Range("A5").Value = "Sobresaliente" End Select End Sub ∙ La función MsgBox. Esta función muestra un mensaje en un cuadro de diálogo hasta que el usuario pulse un botón. La función devuelve un dato tipo Integer en función del botón pulsado por el usuario. A la hora de invocar está función, se permiten diferentes tipos de botones. Sintáxis de MsgBox. MsgBox( Mensaje, Botones, Título, Archivo de ayuda, contexto) Mensaje: Obligatorio, es el mensaje que se muestra dentro del cuadro de diálogo. Botones: Opcional. Es un número o una suma de números o constantes (vea tabla Valores para botones e Iconos), que sirve para mostrar determinados botones e iconos dentro del cuadro de diálogo. Si se omite este argumento asume valor 0 que corresponde a un único Botón OK. Título: Opcional. Es el texto que se mostrará en la barra del título del cuadro de diálogo. Archivo de Ayuda: Opcional. Si ha asignado un texto de ayuda al cuadro de diálogo, aquí debe especificar el nombre del archivo de ayuda donde está el texto. Context: Opcional. Es el número que sirve para identificar el texto al tema de ayuda correspondiente que estará contenido en el archivo especificado en el parámetro Archivo de Ayuda. Tabla para botones e iconos del cuadro MsgBox. (Tabla copiada del archivo de ayuda de Microsoft Excel). Constante Valor Descripción VbOKOnly 0 Muestra solamente el botón Aceptar. VbOKCancel 1 Muestra los botones Aceptar y Cancelar. VbAbortRetryIgnore 2 Muestra los botones Anular, Reintentar e Ignorar. VbYesNoCancel 3 Muestra los botones Sí, No y Cancelar. VbYesNo 4 Muestra los botones Sí y No. VbRetryCancel 5 Muestra los botones Reintentar y Cancelar. VbCritical 16 Muestra el icono de mensaje crítico. VbQuestion 32 Muestra el icono de pregunta de advertencia. VbExclamation 48 Muestra el icono de mensaje de advertencia. VbInformation 64 Muestra el icono de mensaje de información. VbDefaultButton1 0 El primer botón es el predeterminado. VbDefaultButton2 256 El segundo botón es el predeterminado. VbDefaultButton3 512 El tercer botón es el predeterminado. VbDefaultButton4 768 El cuarto botón es el predeterminado. VbApplicationModal 0 Aplicación modal VbSystemModal 4096 Sistema modal El primer grupo de valores (0 a 5) describe el número y el tipo de los botones mostrados en el cuadro de diálogo; el segundo grupo (16, 32, 48, 64) describe el estilo del icono, el tercer grupo (0, 256, 512) determina el botón predeterminado y el cuarto grupo (0, 4096) determina la modalidad del cuadro de mensajes. Cuando se suman números para obtener el valor final del argumento buttons, se utiliza solamente un número de cada grupo. Nota Estas constantes las especifica Visual Basic for Applications. Por tanto, el nombre de las mismas puede utilizarse en cualquier lugar del código en vez de sus valores reales. Los valores que puede devolver la función msgbox en función del botón que pulse el usuario se muestran en la tabla siguiente. Tabla de valores que puede devolver MsgBox. (Tabla copiada del archivo de ayuda de Microsoft Visual Basic para aplicaciones). Constante Valor Descripción
VbOK 1 Aceptar VbCancel 2 Cancelar VbAbort 3 Anular VbRetry 4 Reintentar VbIgnore 5 Ignorar VbYes 6 Sí VbNo 7 No Ejemplos de MsgBox. Sub Tal() . . ' El cuadro Muestra los botones Si y No y un icono en forma de interrogante. Cuando se pulsa ' un botón, el valor lo recoge la variable X. En este caso los valores devueltos pueden ser 6 o 7 ' que corresponden respectivamente a las constantes VbYes y VbNo, observe la instrucción If de 'después. X = MsgBox("Desea Continuar", vbYesNo + vbQuestion, "Opción",,) ' Se ha pulsado sobre botón Si If X = vbYes Then ..... Else ' Se ha pulsado sobre botón No ..... End If . . End Sub Algunas veces puede que le interese simplemente desplegar un cuadro MsgBox para mostrar un mensaje al usuario sin que se requiera recoger ningún valor. En este caso puede optar por la forma siguiente: MsgBox Prompt:="Hola usuaria, Ha acabado el proceso", Buttons:=VbOkOnLy _ Title:="Mensaje" Lo que no puede hacer porque Visual Basic daría error es poner la primera forma sin igualarla a ninguna variable. Por ejemplo, la expresión siguiente es incorrecta: MsgBox ("Hola usuario, Ha acabado el proceso", VbOkOnly, "Mensaje") Sería correcto poner: X= MsgBox ("Hola usuario, Ha acabado el proceso", VbOkOnly, "Mensaje") En este caso, aunque X reciba un valor, luego no se utiliza para nada, es decir simplemente se pone para que Visual Basic dé error. ∙ La instrucción With. Suponemos que llegado a este punto le parecerá engorroso tener que referirse a los objetos siguiendo toda o casi toda la jerarquía. Ya hemos indicado que es mejor hacerlo de esta manera porque el programa gana en claridad y elegancia y, consecuentemente, el programador gana tiempo a la hora de hacer modificaciones o actualizaciones. La sentencia With le ayudará a tener que escribir menos código sin que por esto el programa pierda en claridad. Concretamente esta función sirve para ejecutar una serie de acciones sobre un mismo Objeto. Su sintaxis es la siguiente: With Objeto Instrucciones End With Repetiremos el ejemplo 13 utilizando esta sentencia. Observe como con With se hace referencia al objeto ActiveSheet. Ejemplo 19. Entrar el Nombre, la cantidad y el precio de un producto desde el teclado y guardarlos respectivamente en A1, A2 y A3. Calcular el total y guardarlo en A4. Si el total es superior a 10.000 o el nombre del producto es "Patatas", pedir un descuento, calcularlo el total descuento y guardarlo en A5, luego restar el descuento del total y guardarlo en A6. Sub Ejemplo_19() Dim Producto As String Dim Cantidad As Integer Dim Precio As Single Dim Total As Single Dim Descuento As Single Dim Total_Descuento As Single Precio = 0 Producto = InputBox("Entrar Nombre del Producto","Entrar") Precio = Val(InputBox("Entrar el precio", "Entrar")) Precio = Val(InputBox("Entrar la cantidad", "Entrar")) Total = Precio * Cantidad With ActiveSheet .Range("A1").Value = Producto .Range("A2").Value = Precio .Range("A3").Value = Cantidad .Range("A4").Value = Total End With ' Si total mayor que 10.000 o el producto es Patatas, aplicar descuento. If Total > 10000 Or Producto = "Patatas" Then Descuento = Val(InputBox("Entrar Descuento", "Entrar")) Total_Descuento = Total * (Descuento / 100) Total = Total ‐ Total_Descuento With ActiveSheet .Range("A5").Value = Total_Descuento .Range("A6").Value = Total End With End If End Sub Estructuras Repetitivas. Este tipo de estructuras permiten ejecutar más de una vez un mismo bloque de sentencias. Ejemplo 20. Supongamos que tenemos que hacer un programa para entrar las notas de una clase de 5 alumnos que se guardaran respectivamente en las celdas de A1 a A5 de la hoja activa. Después hacer la media que se guardará en A6. Con las estructuras vistas hasta ahora, podríamos hacer: Sub Ejemplo_20 () Dim Nota As Integer Dim Media As Single Media = 0 Nota = Val(InputBox("Entrar la 1 Nota : ","Entrar Nota")) ActiveSheet.Range("A1").Value = Nota Media = Media + Nota Nota = Val(InputBox("Entrar la 1 Nota : ","Entrar Nota")) ActiveSheet.Range("A2").Value = Nota Media = Media + Nota Nota = Val(InputBox("Entrar la 1 Nota : ","Entrar Nota")) ActiveSheet.Range("A3").Value = Nota Media = Media + Nota Nota = Val(InputBox("Entrar la 1 Nota : ","Entrar Nota")) ActiveSheet.Range("A4").Value = Nota Media = Media + Nota Nota = Val(InputBox("Entrar la 1 Nota : ","Entrar Nota")) ActiveSheet.Range("A5").Value = Nota Media = Media + Nota Media = Media / 5 ActiveSheet.Range("A6").Value = Media End Sub Observe que este programa repite el siguiente bloque de sentencias, 5 veces. Nota = Val(InputBox("Entrar la 1 Nota : ","Entrar Nota")) ActiveSheet.Range("A5").Value = Nota Media = Media + Nota Para evitar esta tipo de repeticiones de código, los lenguajes de programación incorporan instrucciones que permiten la repetición de bloques de código. ∙ Estructura repetitiva Para (for). Esta estructura sirve para repetir la ejecución de una sentencia o bloque de sentencias, un número definido de veces. La estructura es la siguiente: Para var =Valor_Inicial Hasta Valor_Final Paso Incremento Hacer Inicio Sentencia 1 Sentencia 2 . . Sentencia N Fin Var es una variable que la primera vez que se entra en el bucle se iguala a Valor_Inicial, las sentencias del bucle se ejecutan hasta que Var llega al Valor_Final, cada vez que se ejecutan el bloque de instrucciones Var se incrementa según el valor de Incremento. En Visual Basic para Excel la estructura Para se implementa con la instrucción For ... Next. For Varible = Valor_Inicial To Valor_Final Step Incremento Sentencia 1 Sentencia 2 . . Sentencia N Next Variable * Si el incremento es 1, no hace falta poner Step 1. Ejemplo 21. Entrar 10 valores utilizando la función InputBox, sumarlos y guardar el resultado en la casilla A1 de la hoja activa. Sub Ejemplo_21() Dim i As Integer Dim Total As Integer Dim Valor As Integer For i=1 To 10 Valor= Val(InputBox("Entrar un valor","Entrada")) Total = Total + Valor Next i ActiveCell.Range("A1").Value = Total End Sub Recorrer casillas de una hoja de cálculo. Una operación bastante habitual cuando se trabaja con Excel es el recorrido de rangos de casillas para llenarlas con valores, mirar su contenido, etc. Las estructuras repetitivas son imprescindibles para recorrer grupos de celdas o rangos. Vea los siguientes ejemplos para ver ejemplos de utilización de estructuras repetitivas para recorrer rangos de casillas, observe la utilización de las propiedades Cells y Offset. Propiedad Cells. Ya conoce esta propiedad, sirve para referenciar una celda o un rango de celdas s egún coordenadas de fila y columna. Ejemplo 22 Llenar el rango de las casillas A1..A5 con valores pares consecutivos empezando por el 2. Sub Ejemplo_22() Dim Fila As Integer Dim i As Integer Fila = 1 For i=2 To 10 Step 2 ActiveSheet.Cells(Fila,1).Value = i Fila = Fila+1 Next i End Sub Ejemplo 23. Llenar un rango de filas, empezando por una celda, que se debe especificar desde teclado, con una serie de 10 valores correlativos (comenzando por el 1). Sub Ejemplo_23() Dim Casilla_Inicial As String Dim i As Integer Dim Fila As Integer, Columna As Integer Casilla_Inicial = InputBox("Introducir la casilla Inicial : ", "Casilla Inicial") ActiveSheet.Range(Casilla_Inicial).Activate ‘ Tomar el valor de fila de la celda activa sobre la variable Fila Fila = ActiveCell.Row ‘ Tomar el valor de columna de la celda activa sobre la variable Fila Columna = ActiveCell.Column For i = 1 To 10 ActiveSheet.Cells(Fila, Columna).Value = i Fila = Fila + 1 Next i End Sub ∙ Estructura repetitiva Do While..Loop (Hacer Mientras). La estructura repetitiva for se adapta perfectamente a aquellas situaciones en que se sabe previamente el número de veces que se ha de repetir un proceso, entrar veinte valores, recorrer cincuenta celdas, etc. Pero hay ocasiones o casos en los que no se sabe previamente el número de veces que se debe repetir un proceso. Por ejemplo, suponga que ha de recorrer un rango de filas en los que no se sabe cuantos valores habrá (esto es, cuantas filas llenas habrá), en ocasiones puede que hayan veinte, en ocasiones treinta, en ocasiones ninguna, etc. Para estos casos la estructura for no es adecuada y deberemos recurrir a la sentencia Do While..Loop en alguna de sus formas. Esta estructura repetitiva está controlada por una o varias condiciones, la repetición del bloque de sentencias dependerá de si se va cumpliendo la condición o condiciones. Hacer Mientras (se cumpla la condición) Sentencia1 Sentencia2 . . Sentencia N Fin Hacer Mientras En Visual Basic Do While (se cumpla la condición) Sentencia1 Sentencia2 . . Sentencia N Loop ** Los ejemplos que veremos a continuación sobre la instrucción Do While..Loop se harán sobre una base de datos. Una base de datos en Excel es simplemente un rango de celdas en que cada fila representa un registro y cada columna un campo de registro, la primera fila es la que da nombre a los campos. Para nuestra base de datos utilizaremos los campos siguientes, Nombre, Ciudad, Edad, Fecha. Ponga estos títulos en el rango A1:D1 de la Hoja1 (En A1 ponga Nombre, en B1 ponga Ciudad, en C1 ponga Edad y en D1 Fecha), observe que los datos se empezarán a entrar a partir de A2. Ejemplo 27. Programa para entrar registros en la base de datos. Cada campo se entra con InputBox. El programa va pidiendo datos mientras se entre un valor en el InputBox correspondiente al nombre, es decir cuando al preguntar el nombre no se entre ningún valor, terminará la ejecución del bloque encerrado entre Do While...Loop. Observe la utilización de la propiedad Offset para colocar los datos en las celdas correspondientes. Sub Ejemplo_27() Dim Nombre As String Dim Ciudad As String Dim Edad As Integer Dim fecha As Date ‘ Activar hoja1 WorkSheets("Hoja1").Activate ‘ Activar casilla A2 ActiveSheet.Range("A2").Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") ‘ Mientras la variable Nombre sea diferente a cadena vacía Do While Nombre <> "" Ciudad = InputBox("Entre la Ciudad : ", "Ciudad") Edad = Val(InputBox("Entre la Edad : ", "Edad")) Fecha=Cdate(InputBox("Entra la Fecha : ", "Fecha")) ‘ Copiar los datos en las casillas correspondientes With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).Value = fecha End With ‘Hacer activa la celda de la fila siguiente a la actual ActiveCell.Offset(1,0).Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Loop End Sub Ejemplo 28. Preste especial atención a este ejemplo ya que seguro que el código que viene a continuación lo utilizará en muchas ocasiones. Antes que nada observe el ejemplo anterior, fíjese en que siempre empezamos a llenar el rango de la hoja a partir de la celda A2, esto tiene una nefasta consecuencia, la segunda vez que ejecute la macro machacará los datos de A2:D2 y si continua ejecutando machacará los datos de los rangos siguientes. Una solución sería observar cual es la casilla vacía siguiente y cambiar en la instrucción ActiveSheet.Range("A2").Activate , la referencia A2 por la que corresponde a la primera casilla vacía de la columna A. El código que le mostramos a continuación hará esto por nosotros, es decir recorrerá una fila de celdas a partir de A1 hasta encontrar una vacía y dejará a esta como celda activa para que la entrada de datos comience a partir de ella. Sub Ejemplo_28() . . ‘ Activar hoja1 WorkSheets("Hoja1").Activate ‘ Activar casilla A2 ActiveSheet.Range("A1").Activate ‘ Mientras la celda activa no esté vacía Do While Not IsEmpty(ActiveCell) ‘ Hacer activa la celda situada una fila por debajo de la actual ActiveCell.Offset(1,0).Activate Loop . . End Sub Ejemplo 29. Es la unión de los dos programas anteriores. Es decir habrá un bucle Do While que buscará la primera casilla vacía de la base de datos y otro para pedir los valores de los campos hasta que se pulse Enter en Nombre. Sub Ejemplo_28() Dim Nombre As String Dim Ciudad As String Dim Edad As Integer Dim fecha As Date WorkSheets("Hoja1").Activate ActiveSheet.Range("A1").Activate ‘ Buscar la primera celda vacía de la columna A y convertirla en activa Do While Not IsEmpty(ActiveCell) ActiveCell.Offset(1,0).Activate Loop Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") ‘ Mientras la variable Nombre sea diferente a cadena vacía Do While Nombre <> "" Ciudad = InputBox("Entre la Ciudad : ", "Ciudad") Edad = Val(InputBox("Entre la Edad : ", "Edad")) Fecha=Cdate(InputBox("Entra la Fecha : ", "Fecha")) With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).value = fecha End With ActiveCell.Offset(1,0).Activate Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Loop End Sub Cuando se tienen que entrar desde el teclado conjuntos de valores, algunos programadores y usuarios prefieren la fórmula de que el programa pregunte si se desean entrar más datos, la típica pregunta ¿Desea Introducir más datos ?, si el usuario contesta Sí, el programa vuelve a ejecutar las instrucciones correspondientes a la entrada de datos, si contesta que no se finaliza el proceso, observe como quedaría nuestro bucle de entrada de datos con este sistema. Mas_datos = vbYes Do While Mas_Datos = vbYes Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Ciudad = InputBox("Entre la Ciudad : ", "Ciudad") Edad = Val(InputBox("Entre la Edad : ", "Edad")) Fecha=Cdate(InputBox("Entra la Fecha : ", "Fecha")) With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).value = fecha End With ActiveCell.Offset(1,0).Activate ‘ Preguntar al usuario si desea entrar otro registro. Mas_datos = MsgBox("Otro registro ?", vbYesNo+vbQuestion,"Entrada de datos") Loop ** Observe que es necesaria la línea anterior al bucle Mas_datos = vbYes, para que cuando se evalúe la condición por vez primera esta se cumpla y se ejecuten las sentencias de dentro del bucle, Mas_datos es una variable de tipo Integer. Vea la sección siguiente donde se estudia una variante de la estructura Do While que es más adecuada para este tipo de situaciones. ∙ Estructura Do..Loop While. El funcionamiento de esta estructura repetitiva es similar a la anterior salvo que la condición se evalúa al final, la inmediata consecuencia de esto es que las instrucciones del cuerpo del bucle se ejecutaran al menos una vez. Observe que para nuestra estructura de entrada de datos vista en el último apartado de la sección anterior esta estructura es más conveniente, al menos más elegante, si vamos a entrar datos, al menos uno entraremos, por tanto las instrucciones del cuerpo del bucle se deben ejecutar al menos una vez, luego ya decidiremos si se repiten o no. Do Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Ciudad = InputBox("Entre la Ciudad : ", "Ciudad") Edad = Val(InputBox("Entre la Edad : ", "Edad")) Fecha=Cdate(InputBox("Entra la Fecha : ", "Fecha")) With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).value = fecha End With ActiveCell.Offset(1,0).Activate Mas_datos = MsgBox("Otro registro ?", vbYesNo+vbQuestion,"Entrada de datos") ‘Mientras Mas_Datos = vbYes Loop While Mas_Datos = vbYes Observe que en este caso no es necesario la línea Mas_Datos = vbYes antes de Do para forzar la entrada en el bucle ya que la condición va al final. ∙ Estructura Do..Loop Until (Hacer.. Hasta que se cumpla la condición). Es otra estructura que evalúa la condición al final observe que la interpretación es distinta ya que el bucle se va repitiendo HASTA que se cumple la condición, no MIENTRAS se cumple la condición. Cuál de los dos utilizar, pues, no se sorprenda, la que entienda mejor o le guste más. La entrada de datos con este bucle quedaría: Do Nombre = InputBox("Entre el Nombre (Return para Terminar) : ", "Nombre") Ciudad = InputBox("Entre la Ciudad : ", "Ciudad") Edad = Val(InputBox("Ent re la Edad : ", "Edad") Fecha=Cdate("InputBox("Entra la Fecha : ", "Fecha") With ActiveCell .Value = Nombre .Offset(0,1).Value = Ciudad .Offset(0,2).Value = Edad .Offset(0,3).value = fecha End With ActiveCell.Offset(1,0).Activate Mas_datos = MsgBox("Otro registro ?", vbYesNo+vbQuestion,"Entrada de datos") ‘Hasta que Mas_Datos sea igual a vbNo Loop Until Mas_Datos=vbNo ∙ Estructura For Each. Este bucle se utiliza básicamente para ejecutar un grupo de sentencias con los elementos de una colección una matriz (pronto veremos los que es). Recuerde que una colección es un conjunto de objetos, hojas, rangos, etc. Vea el ejemplo siguiente que se utiliza para cambiar los nombres de las hojas de un libro de trabajo. Ejemplo 29. Programa que pregunta el nombre para cada hoja de un libro de trabajo, si no se pone nombre a la hoja, queda el que tiene. Sub Ejemplo_29() Dim Nuevo_Nombre As String Dim Hoja As WorkSheet ‘ Para cada hoja del conjunto WorkSheets For Each Hoja In WorkSheets Nuevo_Nombre=InputBox("Nombre de la Hoja : " & Hoja.Name,"Nombrar Hojas") If Nueva_Nombre <> "" Then Hoja.Name=Nuevo_nombre End if Next End Sub ** Hoja va referenciando cada una de las hojas del conjunto WorkSheets a cada paso de bucle. Ejemplo 30. Entrar valores para las celdas del rango A1:B10 de la hoja Activa. Sub Ejemplo_30() Dim R As Range ‘ Para cada celda del rango A1:B10 de la hoja activa For Each R in ActiveSheet.Range("A1:B10") R.Value = InputBox("Entrar valor para la celda " & R.Address, "Entrada de valores") Next End Sub ** Observe que se ha declarado una variable tipo Range, este tipo de datos, como puede imaginar y ha visto en el ejemplo sirve para guardar Rangos de una o más casillas, estas variables pueden luego utilizar todas las propiedades y métodos propios de los Objetos Range. Tenga en cuenta que la asignación de las varaibles que sirven para guardar o referenciar objetos (Range, WorkSheet, etc.) deben inicializarse muchas veces a través de la instrucción SET , esto se estudiará en otro capítulo. ∙ Insertar funciones de Microsoft Excel desde Visual Basic. Copie el siguiente procedimiento y ejecútelo. Es un procedimiento que sencillamente va pidiendo números y los va colocando en las celdas de la columna A partir de A1, al final coloca la función =SUMA para sumar los valores introducidos y la función =PROMEDIO para hacer el promedio de los mismos valores. Sub Sumar() Dim Valor As Integer Dim Casilla_Inicial As String Dim Casilla_Final As String ' Hacer activa la casilla A1 de la hoja activa ActiveSheet.Range("A1").Activate Do ' Entrar un valor y convertirlo a numérico Valor = Val(InputBox("Entrar un valor", "Entrada")) ' Si el valor es distinto de 0 If Valor <> 0 Then ' Guardar el valor en la casilla activa ActiveCell.Value = Valor ' Hacer activa la casilla de la fila siguiente ActiveCell.Offset(1, 0).Activate End If Loop Until Valor = 0 ' Establecer la casilla inicial del rango a sumar Casilla_Inicial = "A1" ' Establecer la casilla final del rango a sumar. ' Coger la dirección de la casilla activa, la última Casilla_Final = ActiveCell.Address ActiveCell.Offset(1, 0).Activate ' Poner en la casilla activa la función SUMA ActiveCell.Formula = "=Suma(" & Casilla_Inicial & ":" & Casilla_Final & ")" ActiveCell.Offset(1, 0).Activate ' Poner en la casilla activa la función promedio ActiveCell.Formula = "=Promedio(" & Casilla_Inicial & ":" & Casilla_Final & ")" End Sub Una vez haya ejecutado la macro, observe que en las celdas donde se han colocado respectivamente las funciones =SUMA, =PROMEDIO aparece ¿NOMBRE? (es posible que aparezca ####, en ese caso amplíe la columna), esto significa que Excel no reconoce el nombre de la función, que no existe. Sin embargo, estas funciones si existen y funcionan perfectamente cuando se teclean directamente sobre la hoja de cálculo, se preguntará el porqué cuando se colocan desde una macro no funcionan. Pues resulta que para que cualquier función de Excel insertada desde una macro NO de error debe ponerse con su nombre en inglés, la traducción se hace luego de forma automática. Es decir en la macro debe ponerla en inglés y luego cuando esta se inserte en la hoja aparecerá con su nomenclatura en el idioma que corresponda. Modifique el procedimiento del ejemplo y en lugar de poner ActiveCell.Formula = "=Suma(" & Casilla_Inicial & ":" & Casilla_Final & ")" Ponga ActiveCell.Formula = "=Sum(" & Casilla_Inicial & ":" & Casilla_Final & ")" Y ahora, en lugar de ActiveCell.Formula = "=Promedio(" & Casilla_Inicial & ":" & Casilla_Final & ")" Ponga ActiveCell.Formula = "=Average(" & Casilla_Inicial & ":" & Casilla_Final & ")" Ejecute la macro y compruebe que ahora todo funciona correctamente. Observe que en la hoja, las funciones se han insertado con su nombre correcto según el idioma, es decir SUMA y PROMEDIO. De esta forma damos por terminado el módulo de Macros, que simplemente es una introducción al tema. El estudiante puede desarrollarse mucho más, este manual pretende realizar un bosquejo del tema, e iniciar al alumno a la programación en lenguaje VBA. Repartidos Prácticos EJERCICIO 1 – MODULO: FUNCIONES AVANZADAS
Se presenta a continuación una tabla conteniendo las exportaciones de carne llevadas
a cabo por nuestro país en el año 2000 al resto del mundo.
Exportaciones realizadas en el
año 2000 en millones de
dólares
País de
origen
Mes
Japón
Inglaterra
China
Inglaterra
China
Holanda
EEUU
Bélgica
EEUU
Grecia
Francia
Inglaterra
Holanda
Grecia
China
Bélgica
EEUU
Japón
Febrero
Noviembre
Setiembre
Enero
Junio
Febrero
Diciembre
Enero
Setiembre
Mayo
Mayo
Julio
Julio
Diciembre
Marzo
Junio
Mayo
Febrero
EEUU
Julio
Importe de
exportación
26
67
90
120
140
150
159
200
200
200
201
240
260
300
320
690
840
980
1200
Se pide:
1. Copie la siguiente tabla en un libro cuyo nombre sea exportaciones
2. Ingrese nuevos registros a través de la opción Formularios que se ubican en el
menú de Datos.
3. Ordene la tabla en función del país.
4. Obtenga la máxima y la mínima exportación realizada por Uruguay. A
continuación, mediante BDEXTRAER, obtenga los nombres de los países
destinos de dichas ventas.
5. Calcule el número de exportaciones hechas a EEUU, mediante BDCONTARA y
CONTAR.SI
6. Calcule el importe total que se le vendió a ese país mediante las funciones
BDSUMA y SUMAR.SI.
7. La máxima, la mínima y el promedio de las ventas hechas a EEUU.
8. Genere a través de una regla de validación una lista desplegable con todos los
países existentes en la BD. Luego Obtenga el total vendido al país que UD
seleccione en la lista. El fin de esto es que si nosotros cambiamos el país,
obtengamos automáticamente el importe que a él se le vendió.
EJERCICIO 2 – MODULO: FUNCIONES AVANZADAS
Se presenta a continuación una tabla con las notas obtenidas por 10 alumnos del curso
de Excel avanzado.
Se pide:
1. Aplique un color de fondo rojo y una fuente de tipo negrita y color blanca, a
aquellas celdas que presenten valores inferiores a 70 (formato condicional).
2. Obtenga el total y el promedio de puntos obtenidos por alumno.
3. En la columna de resultados deberá aparecer las leyendas Aprobado, Prueba
parcial o Examen total según los criterios de aprobación del curso.
4. Aplique nuevamente un formato condicional, tal que si el resultado es
Aprobado, este aparezca con un color de fuente verde, si es Prueba parcial, sea
azul y si es Examen total sea rojo.
5. Genere un cuadro de consulta como el siguiente tal que el al digitar la cédula de
un estudiante aparezca su promedio y su resultado.
Cedula
T.
Macros Dinámicas F. Avanzadas
Access
1.269.487-6
1.396.285-4
2.123.494-4
2.456.987-7
3.798.637-1
4.734.963-4
4.869.741-8
5.681.627-3
6.897.169-6
75
46
73
50
69
79
98
37
82
78
91
57
45
87
96
99
45
72
85
70
97
87
67
83
79
85
89
97
77
81
65
91
95
84
90
94
6.943.521-1
90
87
99
100
Ingresar
CI
Total
Promedio Resultado
Promedio
Resultado
EJERCICIO 3 – MODULO: FUNCIONES AVANZADAS
En la planilla que se presenta a continuación tenemos las distintas etapas de una
competencia entre 8 equipos. A medida que se va desarrollando la vamos completando
con los puntajes obtenidos por cada equipo.
Lo que se busca es que en la tabla adicional se ordenen automáticamente los equipos
cada vez que introducimos cambios en la tabla principal.
Para eso copie ambas tablas en una hoja nueva y digite como nombre Tabla de
posiciones.
Para lograr el objetivo Ud. deberá aplicar las funciones Jerarquía y BuscarV.
COMPETENCIA INTERBARRIAL - PUNTOS POR EQUIPO Y POR ETAPA
Equipo
Equipo
Equipo
Equipo
Equipo
Equipo
Equipo
Equipo
1
2
3
4
5
6
7
8
Etapa 1 Etapa 2 Etapa 3 Etapa 4 Etapa 5 Etapa 6 Total
7
10
3
1
21
2
1
9
1
13
4
5
1
2
12
4
8
6
4
22
9
9
3
7
28
2
5
10
7
24
3
4
3
4
14
3
7
8
9
27
Etapa 1 Etapa 2 Etapa 3 Etapa 4 Etapa 5 Etapa 6 Total
1
2
3
4
5
6
7
8
EJERCICIO 4 – MODULO: FUNCIONES AVANZADAS
Extracto de ventas de la empresa "La traicionera SA"
Número de
contrato
compra
Vendedor
venta
Auto
Importe en
dólares
Cliente
Forma de pago
04/04/2005
1053
Homero Simpson
Honda Civic
16000
N Elizabelar
30 cuotas
08/04/2005
1059
Condorito
Fiat Fiorino
9000
IMM
30 cuotas
16/04/2005
1065
Homero Simpson
Mercedes D420
110000
Stella Donatti
30 cuotas
29/04/2005
1078
Homero Simpson
Ferrari 350
290000
J Bush
30 cuotas
04/04/2005
1054
Condorito
Subaru Impreza
14500
Presidencia de la Rep.
60 cuotas
06/04/2005
1057
Paturzú
Fiat Fiorino
9000
IMM
60 cuotas
11/04/2005
1061
Paturzú
Lamborgini Diablo
230000
T Vazquez
60 cuotas
15/04/2005
1063
Paco Casal
BMW 320
58000
MSP
60 cuotas
23/04/2005
1073
Homero Simpson
Fiat Fitito
1200
MSP
60 cuotas
Fecha
28/04/2005
1076
Paturzú
BMW 320
58000
A. Legarburo
60 cuotas
05/04/2005
1055
Chengue Morales
Lamborgini Diablo
230000
J Battle
90 cuotas
01/04/2005
1051
Condorito
Subaru Impreza
14500
El cuqui
Contado
05/04/2005
1056
Chengue Morales
BMW 320
58000
Sin Escurpulos Ltda.
Contado
06/04/2005
1058
Condorito
Maruti
7500
JM Sanguinetti
Contado
12/04/2005
1062
Condorito
Fiat Fiorino
9000
IMM
Contado
15/04/2005
1064
Chengue Morales
Maruti
7500
La trepadora SA
Contado
18/04/2005
1067
Paturzú
Mercedes D420
110000
J Bush
Contado
19/04/2005
1069
Chengue Morales
Fiat Fitito
1200
La incobrable srl
Contado
19/04/2005
1070
Paco Casal
Lamborgini Diablo
230000
La trepadora SA
Contado
22/04/2005
1072
Chengue Morales
Mercedes D420
110000
M. Gutiérrez
Contado
29/04/2005
1077
Condorito
Subaru Impreza
14500
Cedres
Contado
30/04/2005
1080
Condorito
Honda Civic
16000
IMM
Contado
02/04/2005
1052
Paturzú
Ferrari 350
290000
La trepadora SA
En negociación
08/04/2005
1060
Homero Simpson
Fiat Fitito
1200
Presidencia de la Rep.
En negociación
18/04/2005
1066
Condorito
Subaru Impreza
14500
Recoba
En negociación
En negociación
19/04/2005
1068
Paco Casal
BMW 320
58000
Sin Escurpulos Ltda.
23/04/2005
1074
Chengue Morales
Ferrari 350
290000
Loco Abreu
En negociación
22/04/2005
1071
Paco Casal
Subaru Impreza
14500
IMM
Entrega efect+15 cuotas
23/04/2005
30/04/2005
1075
1079
Paco Casal
Paturzú
Lamborgini Diablo
Fiat Fitito
230000
1200
Presidencia de la Rep.
La incobrable srl
Entrega efect+20 cuotas
Entrega efect+20 cuotas
Se pide:
1. Copie la siguiente tabla en dos hojas distintas
2. En la primera hoja registre nuevas ventas mediante la opción Formularios del
menú de Datos.
3. Ordene la tabla según Fecha de Venta en forma ascendente, el nombre del
vendedor de forma ascendente.
4. Ordene nuevamente la BD pero ahora solamente por vendedor en forma
descendente. A través de la herramienta de subtotales obtenga:
Æ El total de ventas por vendedor
Æ La venta más alta y la más baja de cada vendedor
Æ El promedio de ventas de cada vendedor
Æ El número de ventas de cada vendedor
Saque detalle de manera de visualizar solamente los totales de venta de cada
vendedor.
5. En la segunda hoja, mediante Autofiltros visualice:
Æ las ventas realizadas por Condorito.
Æ las ventas de Condorito hechas a la IMM
Æ las ventas realizadas en la segunda quincena del mes de abril.
Æ las ventas cuyos importes estén entre los 50000 y los 150000 dólares.
Æ Las ventas cuyos importes sean menores a 10000 y mayores a 200000 dólares.
Æ las ventas hechas a la IMM o a la Presidencia de la República.
Æ las cinco ventas más grandes
Æ las cinco ventas más chicas
Æ las ventas de los vendedores cuyos nombres comiencen con la letra C.
Æ las ventas cuya forma de pago aún esté en negociación
EJERCICIO 5 – MODULO: FUNCIONES AVANZADAS
SOLVER
Esta planilla ofrece los datos de producción de dos artículos, incluyendo los detalles de
las materias primas que los componen. Con estos datos, y basándonos en la tabla
auxiliar, podemos calcular el costo de cada artículo. Suponiendo que se puede vender
el total de la producción, necesitamos calcular cuánto será lo máximo que se puede
vender sin utilizar más materia prima de la que se tiene. Todo esto teniendo en cuenta
que el precio final de cada artículo no puede superar los 16.5 pesos y que el margen
de ganancia tiene que ser de, por lo menos, el 30 por ciento.
Autito a
control
Tuercas por unidad
Tornillos por unidad
Arandelas por unidad
Plástico por unidad
Motor por unidad
Cable por unidad
Costo por unidad
Margen de ganancia
Precio unitario final $
Unidades a producir
Trencito
eléctrico
4
3
7
0,20 kg
1
0,50 m
11,65
50%
17,48 $
500
Importe de ventas $
8.737,50 $
Materias primas utilizadas en
Total de tuercas
2000
Total de tornillos
1500
Total de arandelas
3500
Totales
3
5
4
0,30 kg
1
0,70 m
12,18
50%
18,27
500
9.135,00 $
la producción
1500
2500
2000
17.872,50
3500
4000
5500
Existencia
Tuercas
1000
Tornillos
1500
Arandelas
3000
Plástico
1000,00 Kg.
Cable
750,00 m
Motor
600
Costo ( por ud, Kg. o
m)
$
0,50
$
0,75
$
0,25
$
1,00
$
0,90
$
5,00
EJERCICIO 6 – MODULO: FUNCIONES AVANZADAS
BUSCAR OBJETIVO
1. Aplicando Buscar objetivo calcule la cantidad a vender para obtener un importe
de ventas de 1200 pesos.
1
2
3
A
Precio
Cantidad
Importe de ventas
B
20
?
=B2*B3
2. Deseamos conocer la mayor cantidad que podemos obtener en préstamos si
estamos dispuestos a endeudarnos por 36 meses pagando una cuota máxima
de 500 pesos. La tasa de interés del mercado es del 50% anual
3.
A
B
1
Préstamo
?
2
Tasa anual
50%
3
Nº de cuotas
36
4
Valor de la cuota mensual =PAGO(B2/12;B3;B1)
4. En función de los costos y utilidad del producto determine la cantidad a producir
para que el precio unitario sea igual a 15 pesos.
1
2
3
4
5
6
A
Cantidad a producir
Costos variables
Costos fijos
Costo total unitario
Utilidad unitaria (10%)
Precio unitario
B
?
8.5
1200
=B3+B4/B2
=B5*0.1
=B5+B6
EJERCICIOS ANÁLISIS DE INFORMACIÓN EJERCICIOS MÓDULO: Análisis de Información
Ejercicio 1
Dada la siguiente tabla de datos:
Año
2004
2004
2004
2004
2003
2003
2003
2003
2002
2002
2002
2002
2001
2001
2001
2001
Período
1
2
3
4
1
2
3
4
1
2
3
4
1
2
3
4
Ventas
15458
5487
6587
1587
15874
4358
5743
2543
18045
7845
6784
1254
10548
4587
6879
3597
Se pide:
Mediante Tablas Dinámicas:
1. Obtener total de ventas por año.
2. Obtener total de ventas por año y dentro de cada año, por período.
3. Obtener promedio de ventas por año y por período.
EJERCICICIO 2
Dada la siguiente base de datos:
Año
2004
2004
2004
2004
2004
2004
2004
2003
2003
2003
2003
2003
2003
2003
2003
2002
2002
2002
2002
2002
2002
2002
2002
2001
2001
2001
2001
2001
2001
2001
Período
1
1
2
2
3
3
4
4
1
1
2
2
3
3
4
4
1
1
2
2
3
3
4
4
1
1
2
2
3
3
Tipo de cliente
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Ventas
12924
2534
4462
1025
5383
1204
745
842
13520
2354
3311
1047
4708
1035
1701
842
13544
4501
6589
1256
5944
840
929
325
7000
3548
3533
1054
5426
1453
Se pide:
Mediante Tablas Dinámicas:
1. Obtener total de ventas por período, y por año. Dar la posibilidad de filtrar por
cliente dicha información.
2. Obtener gráfico dinámico de dicha información.
3. Visualizar mediante tabla dinámica, porcentaje sobre el total de ventas de cada
período y de cada año.
EJERCICIO 3
DADA LA SIGUIENTE BASE DE DATOS:
ALUMNO
3.015.665-5
1.967.222-3
2.123.334-1
1.944.314-6
3.054.365-4
1.665.145-0
1.945.328-6
3.412.331-0
4.036.365-6
4.365.441-8
2.966.356-4
1.665.324-3
1.689.365-0
3.554.321-4
SUCURSAL
DOCENTE
CLARIDAD
AL
EXPLICAR
BUENA
DISPOSICIÓN
BUCEO
PARQUE
BUCEO
RIVERA
BUCEO
RIVERA
PARQUE
RIVERA
RIVERA
BUCEO
BUCEO
PARQUE
PARQUE
BUCEO
Luis
Pedro
Pedro
Gabriel
Luis
Gabriel
Gabriel
Luis
Luis
Luis
Pedro
Gabriel
Gabriel
Luis
2
5
4
1
4
3
5
2
3
1
5
4
3
2
4
5
4
2
3
3
4
1
2
1
4
5
4
1
BUEN USO
DEL
PIZARRÓN
2
4
5
3
3
4
4
2
2
2
4
4
4
1
CONCEPTO
GENERAL
DEL
DOCENTE
2
5
4
2
3
4
4
2
2
1
4
4
3
1
OBTENER:
1. NOTAS GENERALES de cada DOCENTE y dividido por cada SUCURSAL.
2. Cantidad de encuestas tomadas de cada docente.
3. Máximo Concepto General alcanzado por un docente, detallando cual es el
docente y en qué sucursal obtuvo dicha nota.
4. Cantidad de encuestas que se realizaron en cada sucursal.
5. Graficar notas de cada pregunta obtenida por cada docente, y con la posibilidad
de desplegar este gráfico por sucursal.
EJERCICIO 4
IMPORTAR DESDE LA BASE DE DATOS NEPTUNO (C:\Archivos de Programa\Microsoft
Office\Office10\Samples) las tablas de Pedidos y de Clientes.
OBTENER:
1. CANTIDAD de pedidos que se tomaron por país.
2. Cantidad de pedidos tomados por empleado y por ciudad del destinatario.
3. Generar un campo calculado para saber cuántos pedidos se realizarían por país
si la empresa pensara incrementar su cantidad de pedidos en un 30 %.
4. Visualizar las unidades en existencia de cada producto que nos trae cada
proveedor.
5. Promedio de precios unitarios de los productos de cada proveedor.
6. Graficar la cantidad de pedidos que se le hayan entregado al cliente ALFKI y
ANTON en las diferentes formas de envio.
EJERCICIO 5
Importar desde MS Access, desde la base de datos NEPTUNO (se encuentra en
C:\Archivos de Programas \ Microsoft Office\Office10\Samples) las tablas de
productos y categorías.
Obtener mediante Tablas Dinámicas:
1.
2.
3.
4.
Cantidad de productos por categoría
Promedio de precios unitarios por categoría
Productos por categoría, y unidades en existencia
Calcular mediante un campo calculado el IVA de todos los precios unitarios, el
importe de cada precio con IVA incluido
5. Graficar cantidad de proveedores que existen por categoría de productos
6. Graficar en forma de torta los precios unitarios de los productos que
pertenezcan a la categoría Bebidas.
EJERCICIO 6 (Datos – Tabla)
Se presenta planilla con datos de un artículo que nuestra empresa comercializa y se
nos solicita estudiemos la sensibilidad del precio de venta frente a dos variables: el
margen de ganancia y la cantidad de artículos a producir.
Esto significa que analizaremos cuál sería el valor final para distintas combinaciones de
márgenes y cantidades.
Para hacerlo crearemos una tabla de datos que resuma esta información.
500
Cantidad a producir
Costo por unidad
$
8,50
Costos fijos
$ 1.200,00
Costo total
$ 5.450,00
Margen de ganancia
30%
Ventas a realizar
$ 7.085,00
Valor unitario
$
14,17
15%
20%
25%
30%
35%
40%
$
300
14,17
400
500
600
EJERCICIO 7 (Filtros)
Copie esta tabla en cuatro hojas distintas
Zona
Distribuidor
G Fuentes
Zona Este 1
G Fuentes
Zona Este 2
G Fuentes
Zona Este 3
G Fuentes
Zona Este 4
C Rodríguez Zona Norte 1
C Rodríguez Zona Norte 2
C Rodríguez Zona Norte 3
C Rodríguez Zona Norte 4
F Pérez
Zona Oeste 1
F Pérez
Zona Oeste 2
F Pérez
Zona Oeste 3
F Pérez
Zona Oeste 4
M Carminati Zona Oeste 1
M Carminati Zona Oeste 2
M Carminati Zona Oeste 3
M Carminati Zona Oeste 4
Ventas
2003
100000
230000
59000
186000
310000
98000
77000
160000
320000
190000
132000
148000
95000
74000
86000
110000
Ventas
2004
142000
225000
72000
190000
302000
101000
75000
190000
350000
200000
106000
140000
52000
96000
105500
132000
Se pide:
Nota los se pide 1 a 3 realícelos sobre la misma base de datos.
1. Ventas del 2004 mayores a 150000 pesos.
2. Ventas menores a 60000 o mayores a 200000 pesos.
3. Ventas entre los 150000 y los 200000 pesos de aquellos distribuidores cuyo
nombre comience con la letra C.
4. Genere una nueva tabla que muestre aquellos registros en los que las ventas
del 2003 fueron mayores a las ventas del 2004.
EJERCICIOS GRÁFICOS PERSONALIZADOS Y FORMULARIOS Ejercicios Módulo de Gráficos Personalizados y Formularios.
Ejercicio 1
Dada la siguiente tabla:
Paises
Años
Australia
Argentina
Brasil
EEUU
Nueva
Zelanda
Uruguay
Mexico
Paraguay
Ventas Anuales
2004
1680000
1200000
1800000
2000000
2005
1230000
2250000
3500000
3500000
2006
2000000
2100000
3200000
3400000
1900000
600000
1200000
750000
2500000
1800000
1200000
900000
3000000
1750000
1600000
1240000
1. Generar un gráfico de columnas con las ventas de cada país según los años en
los que se hayan producido. Generar un color de fondo del gráfico basado en
una textura. Generar un efecto de relleno con degradado en el área de trazado.
Desplegar la leyenda en la parte superior del gráfico. Aplicarle efectos de
degradado a cada una de las series.
2. Generar un gráfico de columnas con las ventas de cada año para los diferentes
países. Aplicar en cada serie el efecto de colocar la imagen de la bandera
correspondiente a cada país como fondo de cada columna correspondiente a
dicho país. Aplicar en el fondo del gráfico un efecto con degradado a dos
colores.
3. Generar un gráfico de torta donde se represente las ventas del año 2004 a cada
país. Mostrar dentro del gráfico el país al que corresponde cada área y el
porcentaje correspondiente del total. Aplicarle un efecto 3D con un efecto de
elevación.
Ejercicio 2
Dada la siguiente tabla:
Edad
Grupo de edades
Poblacion
0a3
4a5
6 a 14
15 a 19
20 a 24
25 a 29
30 a 49
50 a 64
65 a 79
80 o más
MALVÍN
990
530
2.756
1.969
1.916
1.973
7.877
5.093
4.112
1.418
Hombres
487
268
1.387
1.029
947
920
3.672
2.177
1.631
438
Mujeres
503
262
1.369
940
969
1.053
4.205
2.916
2.481
980
•
Generar un gráfico de tipo pirámide poblacional. Aplicarle a dicho gráfico todos
los retoques correspondientes para su correcta visualización.
•
Grabar este grafico como tipo personalizado para poder utilizarlo a futuro.
•
Aplicarle efecto de degradado a las series, y un efecto de textura tanto al área
de trazado como al área de gráfico.
Ejercicio 3
Tareas
Compra de Terrenos
Desmonte
Confección de Plano
Compra de
Materiales
Construcción
Pintura
Revisión
Entrega
Fecha
Inicio
Fecha
Fin
Días
Corridos
10/02/2006
21/02/2006
08/03/2006
20/02/2006
10/03/2006
31/03/2006
10
17
23
01/04/2006
20/04/2006
25/08/2006
01/09/2006
18/09/2006
18/04/2006
24/08/2006
31/08/2006
15/09/2006
19/09/2006
17
126
6
14
1
Generar un gráfico representando un diagrama de Gantt.
Aplicarle efecto de relleno con degradado a un color al área de gráfico y área de
trazado.
Generar un diagrama de Gantt aplicando formato condicional con la misma tabla.
Ejercicio 4
Dada la siguiente tabla:
Hora Produccion
00:43
02:37
05:21
05:35
07:20
07:47
10:22
10:33
11:18
785
662
546
356
447
611
310
564
583
Generar un gráfico de dispersión (XY) con lineas suavizadas para representar la
producción en el transcurso de las horas.
Adaptar el eje de valores (x) para que represente una escala de horas que vaya de las
00:00 hs a las 12:00 pasando en valores de a 1 hora.
Ejercicio 5
Pais
Años
Exp
2000
Exp
2001
Exp
2002
Exp
2003
Exp
2004
Exp
2005
Argentina
2293660
2657911
1913896
1231816
5000000
1319296
Brasil
3863727
2616891
2210725
4650539
4000000
3951452
Uruguay
1125873
1074146
1021074
1449403
1057386
1049902
Paraguay
1028543
1134743
1166809
1143472
1195914
1093311
877385
947571
1019173
1015051
1071022
754180
Bolivia
1379161
1405565
1530906
1670229
1535585
1144279
Venezuela
2275591
3113542
3706347
4245991
1819779
1971444
Ecuador
1907308
1443472
1815317
961641
1905881
1949043
Colombia
2511773
2085069
2073359
2006935
2266457
2273786
Peru
Minimo
877385
947571
1019173
961641
1057386
754180
Maximo
3863727
3113542
3706347
4650539
5000000
3951452
Dada la tabla expuesta:
•
Utilizar lista desplegable, cuadro combinado, barra desplazamiento para lograr
graficar en lineas las exportaciones de cada pais por año. La idea es que
mediante un cuadro combinado yo pueda elegir un pais y visualice el grafico de
las exportacion de ese pais (a través de los años). Lo mismo con una lista
desplegable y también con barra desplazamiento.
Ejercicio 6
Dic-05
PROC1
PROC2
PROC3
PROC4
PROC5
PROC6
Dias
min
M
max
Valores
Valores
Valores
Valores
Valores
Valores
1
55
60
65
56
55
57
55
58
50
3
55
60
65
62
60
65
60
60
60
5
55
60
65
65
63
63
63
63
63
7
55
60
65
55
50
50
50
50
50
9
55
60
65
56
56
56
56
56
56
11
55
60
65
64
64
64
64
64
64
13
55
60
65
62
62
62
62
62
62
15
55
60
65
60
67
67
67
67
67
17
55
60
65
56
52
52
52
52
52
19
55
60
65
59
60
60
60
60
60
21
55
60
65
58
62
62
62
62
62
23
55
60
65
56
53
53
53
53
53
25
55
60
65
60
50
50
50
50
50
27
55
60
65
58
55
55
55
55
55
29
55
60
65
55
60
60
60
60
60
31
55
60
65
57
64
65
60
55
53
Dada la siguiente tabla, generar un gráfico de líneas que represente cada uno de los
procesos. Dichos procesos se seleccionaran con un cuadro de lista, y control de
números.
EJERCICIOS MACROS EN EXCEL Módulo: MACROS EN EXCEL
Ejercicio 1
Generar un macro que pregunte al usuario datos de empleados tales como:
™ Nombre y Apellido
™ Dirección
™ Ciudad (donde reside)
o Si la ciudad es Montevideo mostrar en la siguiente columna: “CAPITAL”
o Si la ciudad es diferente a Montevideo mostrar: “INTERIOR”
™ Sueldo nominal
™ Fecha de ingreso en la empresa
o
o
o
o
o
Si el empleado tiene más de 5 años de antigüedad se le pagará un
incentivo de antigüedad de un 2 % de su sueldo nominal.
Si el empleado tiene más de 7 años de antigüedad se le pagará un
incentivo de antigüedad de un 4 % de su sueldo nominal.
Si el empleado tiene más de 9 años de antigüedad se le pagará un
incentivo de antigüedad de un 6 % de su sueldo nominal.
Si el empleado tiene más de 10 años de antigüedad se le pagará un
incentivo de antigüedad de un 8 % de su sueldo nominal.
Si el empleado tiene menos de 5 años de antigüedad no se le pagará
dicho incentivo.
(Se compara siempre con la fecha actual = función DATE)
Mostrar en una columna el incentivo por antigüedad que le corresponde al empleado.
Calcular los aportes del empleado sabiendo que, sumando Sueldo Nominal y el
incentivo de antigüedad se utilizarán las siguientes escalas:
Aportes:
™
™
™
™
18
20
24
26
%
%
%
%
si
si
si
si
gana
gana
gana
gana
menos
menos
menos
menos
de
de
de
de
3 SMN
6 SMN
10 SMN
12 SMN
Tomar en cuenta que el SMN es de $ 1242.
Mostrar el aporte de cada empleado en una columna.
Mostrar el líquido de cada empleado sumando Sueldo Nominal + Antigüedad – Aportes.
Repaso de inputbox, msgbox, bucles, uso de variables.
Ejercicio 2
Pedir al usuario nombre, precio unitario y descripción de artículos. Volcar estos datos
en la planilla.
A medida que el usuario cargue cada registro ir acumulando el total de precios, con la
finalidad de calcular el promedio de precios.
Dejar que el usuario corte el pedido de artículos cuando lo desee.
En la última instancia, con el promedio de precios calculado, marcar el promedio de
rojo si este es mayor a 500, marcarlo de verde si es mayor a 1000, y marcarlo de azul
si es mayor a 2000.
Repaso de inputbox, bucles, msgbox. Aplicar offset (o mostrar la aplicación del mismo
en el ejercicio práctico).
Ejercicio 3
Generar un macro que le pida al usuario datos de una persona:
Nombre, Apellido, y Número de Credencial (sólo número)
Basándose en la planilla que se plantea a continuación se deberá ir cargando
automáticamente con los datos de cada persona y la dirección donde le tocará
sufragar.
Nº Circuito
113
502
682
691
Desde
1000
5001
8001
12001
Hasta
5000
8000
12000
18000
Dirección
Italia 6255
Rodó 2411
Chaná 1654
Canelones 1698
La planilla que se irá cargando tendrá el siguiente formato:
Nombre
Apellido
Credencial
Dirección
El estudiante deberá ejecutar mediante un botón en la planilla y el usuario deberá
tener la flexibilidad de cargar tantos registros como desee, o sea por cada registro que
vaya cargando se le preguntará si se desea continuar.
Señalar de rojo solo los registros que el usuario haya ingresado y que tengan como
lugar de votación la siguiente dirección: CANELONES 1698
Cuando el usuario decida terminar, se deberá mostrar la vista preliminar de la planilla.
Ejercicio 4
Generar una macro que guarde en una base de datos la siguiente información:
ƒ Nombre de Articulo
ƒ Lote del Articulo
ƒ Rubro:
9 Deberá figurar “Informática” solamente si se trata de un insumo de
computación
9 Deberá figurar “Otros” si no se trata de un insumo de computación
ƒ Precio unitario de Costo
ƒ Fecha de Compra de dicho articulo
En función de esta información deberá calcularse el Precio de Venta Mayorista y
Minorista.
El Precio Mayorista se calcula como un 7% adicional sobre el Precio de costo, salvo
para los artículos comprados hace mas de 3 años que se calcula un adicional de 5%
sobre Precio de costo.
El Precio Minorista de cada artículo se calcula como:
9 15% sobre Precio de costo para artículos de “Informática” con antigüedad
menor a 1 año
9 12% sobre Precio de costo para artículos de “Informática” con antigüedad
mayor o igual a 1 año
9 17% para el resto de los artículos
Tanto el Precio mayorista como minorista deberán incluirse en 2 nuevas columnas
destinado a ello.
La funcionalidad de dicha macro deberá incluir:
¾ En la primer fila de la Base de datos, los títulos de cada variable.
¾ La posibilidad de utilizar dicha macro en repetidas ocasiones y que no se
eliminen antiguos registros
¾ La posibilidad de elegir a continuación de cada registro estas 3 opciones:
ƒ Ingresar un nuevo registró a continuación.
ƒ Eliminar el último registro en caso de equivocación.
ƒ Dejar de ingresar nuevos registros.
Ejercicio 5
Utilizar el asistente de Microsoft Office en la aplicación del ejercicio 4.
COMPENDIO PRUEBAS FUNCIONES AVANZADAS COMPENDIO DE PRUEBAS Y EXAMENES DE PRÁCTICA Funciones Avanzadas Prueba Final Ejercicio 1 Fecha
01/01/2006
03/01/2006
05/01/2006
09/01/2006
11/01/2006
11/01/2006
11/01/2006
11/01/2006
12/01/2006
12/01/2006
13/01/2006
16/01/2006
19/01/2006
20/01/2006
23/01/2006
25/01/2006
27/01/2006
27/01/2006
27/01/2006
31/01/2006
31/01/2006
03/02/2006
03/02/2006
07/02/2006
07/02/2006
07/02/2006
10/02/2006
15/02/2006
20/02/2006
Vendedor
German
Luis
Marcelo
Esteban
Andrea
Luisa
Daniela
German
Luis
Marcelo
Luisa
Daniela
German
Luis
Marcelo
Luis
Marcelo
Esteban
Andrea
Luisa
Daniela
Daniela
German
Luis
Esteban
Andrea
Luisa
Daniela
German
Tipo de Producto
Alimentos
Informatica
Electrodomesticos
Alimentos
Informatica
Electrodomesticos
Alimentos
Informatica
Electrodomesticos
Alimentos
Informatica
Alimentos
Informatica
Electrodomesticos
Alimentos
Informatica
Alimentos
Informatica
Alimentos
Informatica
Alimentos
Informatica
Electrodomesticos
Alimentos
Informatica
Electrodomesticos
Alimentos
Informatica
Electrodomesticos
Sucursal
Central
Central
Filial2
Filial2
Filial 1
Filial2
Filial2
Central
Central
Filial2
Filial2
Filial2
Central
Central
Filial2
Central
Filial2
Filial2
Filial 1
Filial2
Filial2
Filial2
Central
Central
Filial2
Filial 1
Filial2
Filial2
Central
Tipo Operación
Venta
Devolucion
Venta
Venta
Venta
Venta
Devolucion
Venta
Devolucion
Venta
Venta
Devolucion
Venta
Devolucion
Venta
Venta
Venta
Venta
Devolucion
Venta
Venta
Venta
Venta
Devolucion
Venta
Venta
Venta
Devolucion
Devolucion
Forma de Pago
Contado
Contado
Diferido 3 pagos
Diferido 3 pagos
Contado
Contado
Contado
Contado
Contado
Diferido 3 pagos
Diferido 6 pagos
Contado
Diferido 3 pagos
Contado
Contado
Diferido 6 pagos
Contado
Contado
Contado
Diferido 3 pagos
Diferido 6 pagos
Contado
Contado
Diferido 3 pagos
Diferido 6 pagos
Contado
Diferido 3 pagos
Contado
Contado
A partir de la siguiente base de datos, referida a ventas de nuestra Empresa, se pide: 1. 1.1)
Realizar la suma de las ventas efectuadas al contado, en la sucursal Central. 1.2)
Calcule el Promedio de las ventas realizadas por el vendedor Marcelo. 1.3)
Calcule la Máxima devolución efectuada dentro del tipo de producto Alimentos. 1.4)
Realizar la suma de todas las ventas que no se efectuaron al contado. 2. Aplique un formato condicional a la base de datos con la siguientes características: 2.1)
Los registros que corresponden a la sucursal central, color de fondo naranja. 2.2)
Los registros que corresponden a la sucursal Filial 1, color de fondo celeste. 2.3)
Los registros que corresponden a la sucursal Filial 2, color de fondo amarillo. Ejercicio 2 A partir de las siguientes bases de datos referidas a “Clientes” y “Ventas”, se solicita lo siguiente: Genere un cuadro de consulta con las siguientes características: Cedula:
Nombre:
Apellido:
Direccion:
Suma Ventas:
Cuenta de Devoluciones:
¾ El numero de Cedula deberá estar validado de acuerdo a los clientes. Importe
$U 1.556
$U 2.294
$U 1.966
$U 2.843
$U 5.461
$U 5.685
$U 2.971
$U 4.101
$U 4.847
$U 5.030
$U 3.296
$U 1.656
$U 4.800
$U 2.913
$U 5.526
$U 3.969
$U 4.760
$U 1.492
$U 5.282
$U 2.189
$U 4.042
$U 5.176
$U 1.528
$U 1.846
$U 2.707
$U 4.754
$U 4.936
$U 1.911
$U 1.666
¾ A partir de la Cedula se deberán calcular automáticamente el resto de los datos. Base de Datos Ventas
Id Cliente
3201506-7
3501289-1
2650450-5
3456287-1
1795461-8
2975468-6
3197486-8
2497682-3
2894657-1
4132495-8
3201506-7
3501289-1
2650450-5
3456287-1
1795461-8
2975468-6
3197486-8
2497682-3
2894657-1
4132495-8
3201506-7
3501289-1
2650450-5
3456287-1
1795461-8
2975468-6
3197486-8
2497682-3
2894657-1
4132495-8
3201506-7
3501289-1
2650450-5
3456287-1
1795461-8
2975468-6
3197486-8
2497682-3
2894657-1
4132495-8
3201506-7
3501289-1
2650450-5
3456287-1
1795461-8
2975468-6
3197486-8
2497682-3
Operación
Venta
Devolucion
Venta
Venta
Venta
Venta
Venta
Venta
Venta
Devolucion
Venta
Devolucion
Venta
Devolucion
Venta
Devolucion
Venta
Devolucion
Venta
Venta
Venta
Devolucion
Venta
Venta
Venta
Devolucion
Venta
Venta
Venta
Venta
Venta
Devolucion
Venta
Venta
Venta
Venta
Venta
Devolucion
Venta
Venta
Venta
Venta
Venta
Devolucion
Venta
Venta
Venta
Venta
Importe
4.753 €
940 €
1.551 €
5.103 €
1.722 €
651 €
5.444 €
1.524 €
4.178 €
2.189 €
2.233 €
5.014 €
5.138 €
5.097 €
3.839 €
1.181 €
6.111 €
1.850 €
2.362 €
4.861 €
3.518 €
3.985 €
1.158 €
1.497 €
1.193 €
3.443 €
1.708 €
2.195 €
1.642 €
4.057 €
3.564 €
4.873 €
2.396 €
2.685 €
2.223 €
2.638 €
2.646 €
3.401 €
3.655 €
1.489 €
5.412 €
5.145 €
1.142 €
5.769 €
1.632 €
6.008 €
6.221 €
5.710 €
Base de Datos Clientes
Id Cliente
3201506-7
3501289-1
2650450-5
3456287-1
1795461-8
2975468-6
3197486-8
2497682-3
2894657-1
4132495-8
Nombre
Arturo
Fabiana
Leticia
Karina
German
Daniel
Milton
Lourdes
Mario
Anibal
Apellido
Edad Direccion
Almeida
52 Rodo 2124
Lopez
74 Bvr Artigas 3251
Gomez
48 Bvr España 1256
Stirling
38 18 de julio 1311
Torres
35 Mercedes 1565
Fernandez
22 Uruguay 6145
Falcon
18 San jose 1245
Gracia
62 Barbato 5475
Victorino
18 T Gomensoro 2158
Troilo
21 Berro 9564
Telefono
094-873889
096-943820
099-435757
099-410376
094-288854
099-239134
094-714356
096-541862
096-787281
094-885641
Ejercicio 3 A partir de la siguiente base de Datos referida a entrega de productos se solicita: Fecha
02/02/2005
02/02/2005
03/02/2005
08/02/2005
08/02/2005
08/02/2005
08/02/2005
08/02/2005
11/02/2005
14/02/2005
15/02/2005
18/02/2005
21/02/2005
22/02/2005
22/02/2005
24/02/2005
25/02/2005
28/02/2005
02/03/2005
04/03/2005
08/03/2005
11/03/2005
11/03/2005
14/03/2005
17/03/2005
18/03/2005
22/03/2005
25/03/2005
29/03/2005
Empresa
Producto
Tipo de Cliente
Foxy SRL
Almiron SA
Foxy SRL
Almiron SA
Foxy SRL
Almiron SA
Foxy SRL
Almiron SA
Foxy SRL
Almiron SA
Foxy SRL
Almiron SA
Foxy SRL
Almiron SA
Lypton SA
DRR Corp
Almiron SA
Foxy SRL
Almiron SA
Foxy SRL
Almiron SA
Lypton SA
DRR Corp
Almiron SA
Foxy SRL
Almiron SA
Foxy SRL
Almiron SA
Lypton SA
PC Pentium II
PC Pentium III
TV 21
DVD
DVD
Monitor LCD
Mouse Optico
PC Pentium II
PC Pentium III
TV 21
DVD
DVD
Monitor LCD
Parlantes
PC Pentium II
PC Pentium III
TV 21
DVD
DVD
DVD
Monitor LCD
Mouse Optico
Parlantes
PC Pentium III
Parlantes
DVD
DVD
DVD
Monitor LCD
Mayorista
Minorista
Mayorista
Mayorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Minorista
Mayorista
Mayorista
Minorista
Minorista
Mayorista
Minorista
Mayorista
Mayorista
Mayorista
Minorista
Mayorista
Mayorista
Mayorista
Minorista
Mayorista
Mayorista
Minorista
Mayorista
Mayorista
Fecha Entrega
1. Calcule la Fecha de la Entrega de acuerdo a los siguientes criterios: 1.1. A todos los clientes Mayoristas se les entregan los productos a los 3 días hábiles de la fecha de pedido. 1.2. A los clientes Minoristas se les entrega a los 10 días hábiles, salvo para la empresa vendedora “DRR Corp”, que se entregan a los 5 días hábiles. 2. Aplique un formato condicional con las siguientes características: 2.1. Fondo azul para los registros correspondientes a PC (todos los modelos). 2.2. Fondo rojo para el resto de los registros. Ejercicio 4 Se cuenta con la siguiente base de datos referida a las horas trabajadas de los diferentes empleados de la empresa, con 109 registros. En base a dicha información se solicita: 1. Genere en una nueva columna el cálculo de las horas trabajadas de cada empleado para cada registro. 2. Calcule en una nueva columna el pago por hora a cada trabajador de acuerdo a la siguiente regla: 2.1. Si pertenece al sector “Ventas”; 20 euros por hora. 2.2. Si pertenece al sector “Compras”; 18 euros por hora. 2.3. Si pertenece al sector “Contable”; 15 euros por hora. 2.4. Si pertenece al sector “Administrativo”; 12 euros por hora. 2.5. Si pertenece al sector “Producción”; 8 euros por hora. 3. Calcule en una nueva columna el pago del salario total para cada día. 4. Genere un solo cuadro de consulta a su elección entre las siguientes opciones: Empleado
Fecha
Salario pagado hasta la fecha
En ambos casos los de Empleado o Sector y el dato de fecha será introducido por el usuario de la consulta, y se deberá calcular automáticamente el 3º dato. Si elige el primer cuadro de consulta se deberá calcular los salarios totales pagados a dicho Empleado, hasta la fecha que figure en el cuadro. La celda donde se introduzca el Empleado deberá validarse. Si elige el segundo cuadro de consulta se deberá calcular los salarios totales pagados a dicho Sector, hasta la fecha que figure en el cuadro. La celda donde se introduzca el Sector deberá validarse. Sector
Nombre Apellido
Contable
Produccion
Compras
Compras
Contable
Administrativo
Produccion
Administrativo
Produccion
Administrativo
Contable
Produccion
Ventas
Produccion
Administrativo
Produccion
Produccion
Produccion
Ventas
Produccion
Ventas
Compras
Produccion
Produccion
Ventas
Produccion
Produccion
Contable
Produccion
Compras
Compras
Contable
Administrativo
Produccion
Administrativo
Produccion
Administrativo
Contable
Produccion
Ventas
Produccion
Administrativo
Produccion
Produccion
Produccion
Ventas
Produccion
Ventas
Raul Abal
Lucila Vazquez
Anibal Bass
German Furia
Ana Monje
Eliana Boss
Andrea Guzman
Luis Torres
Walter Lopez
Hugo Prato
Danila Estevanez
Julio Verdi
Juan Balverde
Esteban Samir
Fernando Luisi
Milton Suarez
Diego Nion
Daniel Marquez
Miriam Rey
Maite Lupro
Damian Valente
Jimena Duarte
Fernando Grassi
Luisa Ottospan
Mirta Rodriguez
Carla Dupuy
Ernesto Darlem
Raul Abal
Lucila Vazquez
Anibal Bass
German Furia
Ana Monje
Eliana Boss
Andrea Guzman
Luis Torres
Walter Lopez
Hugo Prato
Danila Estevanez
Julio Verdi
Juan Balverde
Esteban Samir
Fernando Luisi
Milton Suarez
Diego Nion
Daniel Marquez
Miriam Rey
Maite Lupro
Damian Valente
Fecha
01/02/2006
01/02/2006
02/02/2006
03/02/2006
03/02/2006
04/02/2006
04/02/2006
05/02/2006
05/02/2006
06/02/2006
06/02/2006
07/02/2006
07/02/2006
07/02/2006
08/02/2006
09/02/2006
10/02/2006
11/02/2006
11/02/2006
12/02/2006
12/02/2006
13/02/2006
13/02/2006
14/02/2006
14/02/2006
15/02/2006
15/02/2006
16/02/2006
16/02/2006
16/02/2006
17/02/2006
20/02/2006
21/02/2006
22/02/2006
22/02/2006
22/02/2006
24/02/2006
27/02/2006
01/03/2006
02/03/2006
02/03/2006
02/03/2006
06/03/2006
06/03/2006
07/03/2006
07/03/2006
07/03/2006
07/03/2006
Hora Ingreso
11:11:22
7:47:29
8:34:49
23:51:50
0:36:05
0:54:53
8:45:58
22:45:28
12:05:06
20:29:17
7:25:26
4:19:15
0:00:45
1:18:58
19:14:38
18:06:46
10:14:41
5:26:43
1:25:57
17:26:05
17:30:59
8:07:40
11:17:42
17:53:43
2:16:55
11:49:50
7:11:00
23:02:17
16:29:22
21:43:18
20:20:44
11:54:08
0:18:22
17:33:35
1:05:19
14:34:28
17:09:20
17:24:19
22:12:16
9:34:09
2:52:58
8:20:40
15:45:04
3:47:03
8:25:54
8:02:41
23:02:35
18:43:08
Hora Egreso
5:14:53
6:23:34
16:08:55
7:53:06
4:10:01
14:32:46
0:57:23
7:41:47
23:17:14
15:53:44
3:32:26
12:20:00
5:30:01
2:43:36
3:32:01
3:47:05
12:43:31
0:34:42
23:08:40
1:33:24
4:36:26
1:39:25
13:52:30
11:28:25
2:21:09
21:56:34
2:14:06
23:30:23
20:38:22
21:05:41
5:56:07
17:25:57
3:57:12
4:13:53
11:04:26
5:07:44
6:23:08
18:06:56
4:44:52
20:30:08
4:32:00
14:07:48
8:10:43
20:19:58
9:54:43
16:04:13
3:08:58
4:17:44
Horas Trabajadas
Pago/Hora
Salario/dia
Funciones Avanzadas Prueba Final Ejercicio 1 A continuación se presenta la siguiente base de datos, la cual contiene los nombres de los participantes de los 4 equipos existentes. Equipo A
Adalberto
Alberto
Alicia
Alison
Ana
Ana Maria
Anastacia
Antonio
Armando
Arnaldo
Arturo
Asencio
Equipo B
Baltasar
Bartolo
Basilio
Beatriz
Benjamin
Bernardo
Berta
Betiana
Betina
Brian
Bruce
Bruno
Equipo C
Camila
Camilo
Carla
Carlos
Carmen
Carol
Carolina
Cecilia
Celene
Celeste
Celia
Cristian
Equipo D
Damian
Daniel
Daniela
Danilo
Dante
Dario
Demetrio
Demostenes
Denise
Diana
Dino
Diogenes
Dichos participantes de los equipos se encuentran agrupados por columnas, y se sabe que cada equipo contara con 16 participantes. Se Pide: Creé un cuadro de consulta similar al que se le presenta a continuación, donde a partir de la introducción de un texto cualquiera en el campo correspondiente al “Nombre de Participante: ”, el mismo devuelva en el campo correspondiente a “Equipo: ”, el equipo al cual corresponde dicho participante. En el caso que no exista dicho participante, en dicho campo deberá figurar: “No pertenece a ningún equipo”. Tenga en cuenta que aun se encuentran cupos libres en cada equipo, y la función que usted cree para dicho cuadro de consulta deberá funcionar correctamente cuando se inserten nuevos participantes. Y recuerde que el nombre de dicho participante no tiene restricción alguna (puede comenzar con cualquier letra). El formato del cuadro de consulta es el siguiente: Nombre de Equipo: Participante: Ejercicio 2 Se cuenta con la siguiente base de datos, referida a movimientos de comercio exterior. Se pide: 1) Un cuadro de consulta como el siguiente, en el cual a partir del ingreso de datos como el “País”, “Tipo de Operación”, y “Fecha”, se nos devuelva las operaciones de “Suma”, “Promedio”, “Máximo”, “Mínimo” referida a los datos de origen. Fecha:
Pais:
Tipo de Operación:
Suma
Promedio
Maximo
Minimo
Brasil
Importacion
En el caso del campo de fecha, las operaciones deberán realizarse a partir de dicha fecha especificada (para fechas mayores o iguales a la fecha especificada). Tanto el nombre de los campos “País” y “Tipo de Operación”, deberán validarse a través de una lista que deberán crear. 2) Aplicar formato condicional a la Base de datos, donde se pinten las filas de la misma en función de los siguientes criterios • Si es Exportación, deberá figurar un fondo azul, fuente color blanco, estilo Negrita. • Si es Importación, deberá figurar un fondo rojo, fuente color negro, estilo Negrita. Base de datos: Fecha
01/01/2005
15/01/2005
01/02/2005
15/02/2005
01/03/2005
15/03/2005
01/04/2005
15/04/2005
01/05/2005
15/05/2005
01/06/2005
15/06/2005
01/07/2005
15/07/2005
01/08/2005
15/08/2005
01/09/2005
15/09/2005
01/10/2005
15/10/2005
01/11/2005
15/11/2005
01/12/2005
15/12/2005
Tipo de Operación
Exportacion
Exportacion
Importacion
Exportacion
Importacion
Importacion
Importacion
Exportacion
Exportacion
Importacion
Exportacion
Exportacion
Exportacion
Importacion
Exportacion
Exportacion
Importacion
Importacion
Importacion
Importacion
Exportacion
Exportacion
Exportacion
Importacion
País
Brasil
Argentina
EEUU
Australia
Paraguay
Mexico
China
España
Argentina
Brasil
Argentina
Argentina
EEUU
EEUU
EEUU
España
Brasil
Brasil
España
Argentina
Mexico
Paraguay
China
Argentina
Ejercicio 3 Factura
A001
A002
A004
A005
A011
A013
A015
A019
A021
A021
A023
A105
A205
A568
B209
B524
Fecha Facturacion
01/01/2005
02/01/2005
05/01/2005
07/01/2005
14/01/2005
16/01/2005
19/01/2005
21/01/2005
23/01/2005
27/01/2005
31/01/2005
01/03/2005
02/04/2005
03/07/2005
04/09/2005
05/11/2005
Productos
VHS
DVD
TV 20'
TV 21'
DVD
VHS
TV 29'
VHS
DVD
DVD
DVD
VHS
VHS
TV 21'
TV 29'
VHS
Importe
1250
780
1350
1540
1230
500
1450
750
800
1100
1000
750
1200
1000
580
800
800
750
450
800
780
450
1100
800 Empresa
La Tardia
La Tempranera
La Tempranera
La Tempranera
La Tardia
La Tardia
La Tardia
La Tempranera
La Tempranera
La Tardia
La Tardia
La Tempranera
La Tempranera
La Tardia
La Tempranera
La Tardia
Fecha de Entrega
A partir de la siguiente base de datos, nuestra empresa de logística que se dedica a la entrega de diferentes productos a diferentes empresas, desea conocer las fechas de entrega para cada uno de los productos. Se nos da a conocer la siguiente información: Todos los Productos de la Empresa “La Tardía” se entregan a los 15 días hábiles de la fecha de facturación. En cambio para la Empresa “La Tempranera” se entregan los productos a los 3 días hábiles de la fecha de facturación, salvo los DVD que deben entregarse al siguiente día hábil. Ejercicio 4 Plan Circuital
Nº de Circuito
Desde
101
151
201
251
301
501
Hasta Direccion
1 1000 Guana 2015
1001 5000 18 de Julio 2374
5001 9000 21 de septiembre 2323
9001 12000 Rodo 3111
12001 15000 Mercedes 2173
15001 20000 Uruguay 2158
Se solicita que cree un cuadro de consulta para facilitarle a los votantes de esta institución encontrar su circuito y local de votación. Ellos ingresaran su Numero de Socio, y deberá visualizarse su circuito de votación y Dirección de dicho local. Numero de Socio
Nº de Circuito
Direccion
El cuadro de consulta jamás podrá dar como resultado algún error, y en el caso que no exista ningún número de socio ingresado, los campos “Nº de Circuito” y “Dirección”, deberán mostrar “No se ha ingresado Nº de Socio”. COMPENDIO PRUEBAS ANÁLISIS DE INFORMACIÓN Prueba Final Tablas Dinámicas A partir de la Base de datos ubicada en la hoja “BD_Ventas”, realice los siguientes ejercicios: Ejercicio 1 1. Realice una tabla dinámica que muestre segmentado por turno; la cantidad de ventas realizadas y el monto total de la facturación en pesos. 1.1. Asigne un formato de pesos, sin decimales, a los datos relacionados con la facturación total. 1.2. Cambie el nombre de los campos del área de datos a: “Cantidad de Ventas” y “Facturación Total”. 1.3. Agregue un Auto formato a dicha Tabla del tipo “Informe 4”. 1.4. Ordene la tabla de mayor a menor de acuerdo a las cantidades de ventas en cada turno. 2. Realice otra nueva tabla dinámica que muestre segmentado para cada supervisor; el monto total de la facturación realizada. 2.1. Asigne un formato de pesos, sin decimales, a los datos relacionados con la facturación total. 2.2. Cambie el nombre del campo del área de datos a: “Ventas Totales”. 2.3. Agregue un Auto formato a dicha Tabla del tipo “Tabla 2”. 2.4. Ordene la tabla de mayor a menor de acuerdo a la facturación total. Ejercicio 2 1. Realice otra nueva tabla dinámica que muestre segmentado por tipo de producto, las unidades totales vendidas. 1.1. Asigne un auto formato del tipo “Tabla 1” 1.2. Ordene dicha tabla de mayor a menor de acuerdo a las cantidades vendidas de cada tipo de producto. 2. Genere un grafico dinámico de columnas asociado a dicha tabla, donde se muestre los tipos de productos (en el Eje X), con una columna que muestre las cantidades vendidas de cada tipo . Ejercicio 3 1. Realice una tabla dinámica que muestre para cada empleado el promedio en pesos de sus ventas efectuadas. Filtre dicha información solamente para las ventas realizadas en el turno de la noche y efectuadas al contado. 1.1. Aplique un AutoFormato del tipo “Informe 10”. 1.2. Asigne un formato de pesos, sin decimales, a los datos relacionados con el promedio de la facturación total. 1.3. Cambie el nombre del campo del área de datos a: “Promedio de Facturación por empleado”. 1.4. Ordene la tabla de mayor a menor, de acuerdo al promedio de la facturación de cada empleado. 2. Genere un grafico dinámico circular asociado a dicha tabla, donde se muestre para cada vendedor el total de las ventas efectuadas, según los criterios del punto anterior. Ejercicio 4 1. Genere una tabla dinámica que muestre para cada tipo de pago, el monto total de la facturación realizada. 1.1. Aplique un autoformato a dicha tabla del tipo “Informe 2”. 1.2. Agregue un formato de pesos al total de las ventas, y el campo del área de datos se llamara “Facturacion Total”. 1.3. Agregue un campo calculado a dicha tabla que muestre la facturacion total + IVA en una nueva columna. El nombre en la tabla deberá figurar “Importe + IVA”. 2. Genere una nueva Tabla dinámica que muestre para cada tipo de pago, el monto total de la facturacion realizada. 2.1. Aplique un auto formato del tipo “Informe 6”. 2.2. El campo del área de datos deberá llamarse “Facturacion por forma de pago”, y deberá tener un formato de pesos. 2.3. Agregue 2 elementos calculados en el campo Empleados, los mismos se llamaran: “Visa Corregido” y “Master Card Corregido”. Y se calcularan con un porcentaje adicional del 7% para “Visa”, y 5% para “Master Card”. 2.4. Oculte los elementos Visa y Master Card (que se visualicen solamente los elementos calculados). 2.5. Ordene la tabla de mayor a menor de acuerdo a la facturacion total. Prueba Final Tablas Dinámicas Ejercicio 1 A partir de la Base de Datos ubicada en “BD_Mdeo”, se pide: 3. Realice una tabla dinámica que muestre la Población de cada barrio segmentado por sexo, además deberá filtrar dicha información para las edades comprendidas entre 15 y 29 años. 3.1. Ordene dicha Tabla de Mayor a Menor, de acuerdo a la Población de cada Barrio de Mdeo. 3.2. Agregue un AutoFormato a dicha Tabla del tipo “Tabla 10”. 4. Genere un grafico dinámico de columnas asociado a dicha tabla, donde se visualice la población de cada Barrio en una sola columna (cada Barrio deberá figurar en el Eje X). En el eje X deberán aparecer solamente los Barrios: Pocitos, Cordón, Punta Carretas, Centro, Unión y Buceo. Ejercicio 2 A partir de la Base de Datos ubicada en “BD_Mdeo”, se solicita: 2. Efectúe una tabla dinámica, donde se pueda comparar por sexo y barrio, los hombres y mujeres que viven en los barrios de “Flor de Maroñas”, “La Teja” y “Brazo Oriental”. Pero filtre dicha tabla para que aparezcan solamente aquellas personas con edades entre 50 y 79 años. 2.1. Ordene dicha tabla de acuerdo a la población total de cada barrio de acuerdo a las características mencionadas. 2.2. Agregue un AutoFormato a dicha Tabla del tipo “Tabla 3”. 3. Genere un grafico dinámico de columnas asociado a dicha tabla, donde se muestre los citados Barrios (en el Eje X) y una columna para la población de cada sexo asociada al barrio. Ejercicio 3 A partir de la Base de Datos ubicada en “BD_Ventas”, se solicita: 2. Realice una tabla dinámica que muestre para cada vendedor las ventas efectuadas en los meses de febrero y mayo. Permita filtrar dicha información según Tipo de Pago, y muestre solamente los datos para las ventas al contado. 2.1. Aplique un AutoFormato de “Tabla 2”. 3. Genere un grafico dinámico circular aparte, donde se muestre para cada vendedor el total de ventas efectuadas, solamente deberán figurar las realizadas en los meses de marzo y abril, para todas las ventas no efectuadas al contado. Ejercicio 4 A partir de la Base de Datos ubicada en “BD_Ventas”, se solicita: 2. Genere una tabla dinámica, que muestre el promedio de las ventas totales efectuadas, para cada tipo de producto solamente para las ventas al contado. Permita filtrar dicha tabla de acuerdo a los vendedores que las realizaron. 2.6. Aplique un autoformato a dicha tabla del tipo “Tabla 10”. 2.7. Agregue un formato de euros al promedio de las ventas. 3. Genere otra tabla dinámica que permita observar, el porcentaje de cada Tipo de Producto en el total de las ventas efectuadas en marzo, para todas las ventas que han recibido un descuento menor al 5%. PRUEBA Análisis de Información – EXCEL AVANZADO EJERCICIO 1 Basados en los datos existentes en la Hoja1 del archivo Ventas.xls: • Crear una tabla dinámica, en la celda F1, que muestre el máximo de ventas del año 2004 para cada zona. • Colocarle como nombre de campo “Máximo 2004” • Ordenar la tabla por este campo en forma Ascendente • Crear otra Tabla Dinámica, en la celda F9, que indique el promedio de ventas por Vendedor del año 2003. • Aplicarle a este campo formato de número, con separador de miles y dos posiciones decimales. • Mostrar solamente los datos correspondientes a LOPEZ y RODRIGUEZ • Crear otra Tabla Dinámica, en una hoja nueva, donde se muestre el total de cada año por Zona. • Agregar un campo calculado, llamado “Diferencia” que muestre cuanto más se vendió en el 2004 respecto del 2003. • Agregar otro campo calculado, llamado “Porcentaje” que muestre cuanto representa porcentualmente (sobre 2003) la diferencia calculada en el punto anterior. Colocarle formato % con un decimal. • Por detectarse un error deberá cambiar el valor del último registro de la lista original. Las ventas reales de PEREZ para el año 2004 fueron de 4765. Reflejar este cambio en la Tabla Dinámica. EJERCICIO 2 Trabajar sobre los datos que se encuentra en la Hoja1 del archivo Seminarios.xls • Realizar una tabla dinámica en una Hoja nueva que indique la cantidad de seminarios que tendrá cada profesor y colocarle al campo correspondiente el nombre “Total de Seminarios” • Representar la tabla del punto anterior, en un gráfico circular, pero solamente mostrando los datos correspondientes a “Hardware” y “Lenguajes”. EJERCICIO 3 Utilizando el Archivo Seminarios.xls, utilizar filtros para: • Obtener los seminarios dictados en CHILE. • Generar una sub base de datos para obtener los seminarios dictados en CHILE y cuya duración haya sido mayor de 30 minutos. La nueva sub base de datos tiene que tener las columnas del nombre, tema, y duración. • Crear, con la herramienta subtotales, los subtotales de alumnos que acudieron a cada seminario dictado en cada país. EJERCICIO 4 Mediante la siguiente tabla: Importe Ventas: 560000 Porcentaje Costo: 65% Importe : 364000 Utilidad: 196000 Con la herramienta tabla: realizar cálculos de utilidad, dependiendo de las siguientes variaciones del porcentaje de costo (45%; 60%; 75%; 85%; 90%). COMPENDIO PRUEBAS GRÁFICOS PERSONALIZADOS Prueba Final Módulo: “Gráficos Personalizados” Ejercicio Nº 1 Copie el siguiente cuadro de datos en la 1º hoja de su libro de Excel al que llamara “Prueba_GP_Nombre_Apellido”. A la hoja nómbrela como “Tabla Datos”. Equipos de Venta
Meses
Enero
Febrero
Marzo
Abril
Mayo
Junio
Julio
Agosto
Septiembre
Octubre
Noviembre
Diciembre
Equipo A
$U 150.000
$U 271.139
$U 310.874
$U 324.147
$U 338.982
$U 362.883
$U 473.192
$U 533.822
$U 653.734
$U 701.385
$U 776.790
$U 913.258
Equipo B
$U 157.487
$U 299.764
$U 352.540
$U 465.699
$U 489.592
$U 525.612
$U 671.261
$U 802.015
$U 924.318
$U 1.018.397
$U 1.162.809
$U 1.245.318
Equipo C
Equipo D
$U 125.868
$U 90.834
$U 163.736
$U 244.286
$U 194.513
$U 246.763
$U 350.106
$U 361.981
$U 382.835
$U 536.825
$U 529.520
$U 554.831
$U 704.240
$U 693.014
$U 875.955
$U 766.389
$U 963.160
$U 905.500
$U 1.089.458
$U 978.142
$U 1.140.784 $U 1.072.761
$U 1.220.691 $U 1.197.392
Equipo E
$U 52.481
$U 127.685
$U 210.303
$U 248.181
$U 349.743
$U 455.638
$U 489.846
$U 552.640
$U 722.182
$U 773.879
$U 809.750
$U 911.762
Se Pide: 1.1)
Cree un grafico de columnas e insértelo en una nueva hoja del libro a la que llamara “Grafico 11”con las siguientes especificaciones: • Se desea realizar un grafico que muestre un comparativo de las ventas totales anuales realizadas por cada Equipo de Ventas (deberá figurar una columna sola para cada Equipo de Ventas en el eje X), dicho grafico debe ser creado a partir de la tabla de datos original, sin crear una nueva columna para totales. Se debe incluir en el grafico los rótulos de categoría del eje X. • Cada serie incluida en el grafico debe llevar su nombre a través de una referencia a las celdas ubicadas en la tabla original • El grafico debe incluir como titulo del mismo “Ventas anuales según Equipos de Ventas”. La leyenda de referencias no deberá figurar en el grafico. • Cada Eje deberá llevar los siguientes títulos, en formato “Negrita”: ƒ X= “Equipos de Ventas” ƒ Y= “Ventas Anuales” • La escala del eje “Y” deberá visualizarse cada 1200000 unidades • El área de trazado del grafico deberá tener como efecto de relleno una textura de mármol verde al igual que el área del grafico. • Asigne un formato similar a todas las series (meses) para generar en la columna de cada equipo de venta el efecto deseado de una columna uniforme, para ello quite bordes y adopte un efecto de relleno a su elección. 1.2)
1.3)
1.4)
Ubique el siguiente grafico en una nueva hoja llamada: “Grafico 12” Asimismo se desea observar un grafico de barras con efecto 3D, donde se muestre las ventas discriminadas por meses (para cada mes una sola barra que incluya todos los equipos de ventas). Para ello se le solicita que genere dicho grafico a partir de la información contenida en la tabla, y escoja un subtipo de grafico de barras adecuado a tal fin. Además asigne un efecto de relleno similar en todas las series incluidas en el grafico, para generar un efecto de homogeneidad en cada barra. Formatos del grafico: • No deberá figurar la leyenda con las diferentes series. • El titulo del grafico será: “Ventas Mensuales para el año 2006” • El titulo del Eje Z (valores) será: “Importes de Ventas” • Se debe incluir en el grafico los rótulos de categoría del eje X, y deberán figurar en Negrita, además del titulo para dicho eje: “Meses”. • El efecto de relleno de las áreas de trazado y del grafico, deberán incluir un color celeste y gris en degradado y ser similares en sus estilos de sombreado • El efecto de relleno de los planos laterales e inferiores del grafico, deberán incluir un color verde en degradado. Se desea generar un grafico de líneas donde se visualice la evolución mensual de las ventas para cada Equipo de Ventas. Realice un nuevo grafico con las siguientes características: • El titulo del grafico será: “Evolución mensual de las ventas según Equipo de Venta” • El titulo del eje x: “Meses” • El titulo del eje y: “Importe de Ventas” • Todos los títulos deberán figurar en negrita. • Deberá incluir el rotulo de categorías en negrita • Las áreas de; trazado, grafico, diferentes títulos y leyenda, deberán tener el mismo efecto de color a su elección. • La escala del “Eje Y” deberá visualizarse cada $175000. • Ubíquelo en nueva hoja llamándola “Grafico13” • La leyenda deberá figurar sobre el grafico. Deseamos observar en un nuevo grafico la participación de cada Equipo de Venta para el total de las ventas en diciembre, a través de un grafico circular con efecto 3d y seccionado. Añada un formato que incluya: • Una imagen de fondo en el área de grafico. • El titulo de dicho grafico será: “Participación de los Equipos de Venta en Diciembre 2006”. •
•
•
Deberá figurar el nombre y el porcentaje correspondiente a cada Equipo, separados por una nueva línea. La leyenda con las categorías deberá figurar sobre el grafico. Ubíquelo en nueva hoja llamándola “Grafico14”. Ejercicio Nº 2 Copie la siguiente tabla a una nueva hoja del libro con el cual esta trabajando y nómbrela “Pirámide Poblacional”. Total
POCITOS
Hombres
Mujeres
0a3 4a5
69.636 2.276 1.156
29.827 1.155 590
39.809 1.121 566
Grupo de edades
6 a 14 15 a 19 20 a 24 25 a 29 30 a 49 50 a 64 65 a 79 80 o más
5.442
4.379
5.580
5.957 17.998 12.513 10.248
4.087
2.699
2.076
2.598
2.736
8.053
5.083
3.685
1.152
2.743
2.303
2.982
3.221
9.945
7.430
6.563
2.935
A partir de la siguiente tabla de datos deberá construir un grafico personalizado que represente una “Pirámide Poblacional”. Dicho grafico deberá presentar en el Eje horizontal los Hombres a la izquierda y las mujeres a la derecha, recuerde que solamente deberá aparecer en el grafico los “grupos de edades” en el Eje vertical, y no los totales. Deben aparecer títulos en ambos ejes y fundamentalmente las categorías en el Eje X. En cada barra deberá figurar a la interna de la misma el valor para dicho sexo y grupo etario. El formato de las diferentes áreas del grafico debe ser del mismo color, que usted elija. Ejercicio Nº 3 (Opcional 1) Consultas Inscripciones
1500
750
1600
760
1800
850
1650
800
200
75
840
550
1200
680 Se presentan los siguientes pares de Valores (Consultas sobre un Curso, Inscripciones a dicho curso). Se cree que dichas series se correlacionan de alguna manera. Se solicita si usted podría determinar el mejor ajuste lineal de dichas series a través de una línea de tendencia, representar gráficamente la nube de puntos y dicha estimación lineal, la ecuación de la misma y el coeficiente de correlación al cuadrado (R^2). Ejercicio Nº 4 (Opcional 2) Para el siguiente proyecto de campaña publicitaria se cuenta con la siguiente información: Tareas
Planificacion
Revision Primaria
Pruebas de desarrollo
1º Proceso Productivo
2º Proceso Productivo
3º Proceso Productivo
Evaluacion de Resultados
Replanteo del Proyecto
Fecha Inicial Fecha Final
01/03/2006
16/03/2006
25/03/2006
16/03/2006
01/05/2006
15/05/2006
01/07/2006
10/07/2006
15/03/2006
22/03/2006
15/04/2006
15/05/2006
15/06/2006
30/06/2006
05/07/2006
15/07/2006 Se solicita que realice para el informe de presentación del desarrollo de un nuevo producto, un Grafico Personalizado de Gantt donde se visualicen las diferentes tareas del Proyecto en el Eje X, y en el Eje Y se muestren las fechas involucradas. El grafico deberá presentar: •
Titulo del mismo, y títulos de ambos ejes (no leyenda de referencias). •
Valores de duración de cada una de las tareas en el interior de cada barra •
Formatos de área de grafico y trazado en celeste. •
Formatos del área de las series en color rojo. PRUEBA MÓDULO DE GRAFICOS – CURSO EXCEL AVANZADO BIOS
EJERCICIO 1 Meses Equipo A Equipo B Enero 180500 176000 Febrero 190200 120000 Marzo 170800 135000 Abril 165900 210000 Mayo 189000 180300 Se pide: 1. Generar un gráfico de columnas que contenga las ventas de ambos equipos en cada uno de los meses (en eje de X los meses y en eje de Y los importes de ventas de cada uno de los equipos). 2. Representar en el mismo gráfico (agregado posterior al primer gráfico), dos series que representen porcentualmente la incidencia de cada venta en cada uno de los meses, y esta representación de porcentajes deberá estar representada por un eje secundario. 3. Aplicar efectos de relleno en cada una de las series (equipo A con un efecto de relleno a eleccion del estudiante, equipo B con otro efecto de relleno a elección del estudiante). 4. El area de trazado tendrá como efecto de relleno una textura con efecto de marmol. 5. Generar automatización en el gráfico. Esto se refiere a que, si el estudiante incorpora otros meses (junio, julio y agosto, junto con ventas para cada equipo) estos datos se agreguen en forma automática en el gráfico en cuestión. Ejercicio 2 Plantas de Celulosa Se ha realizado una encuesta a determinada muestra poblacional (200 personas) acerca de su opinión acerca de si las plantas se instalarán en Argentina o en Uruguay. Paises/Edades 20 a 30 años 31 a 40 años 41 a 50 años 51 a 60 años Argentina 155 145 110 80 Uruguay 45 55 90 120 Generar un gráfico de pirámide poblacional. Adicionar al mismo un título para cada uno de los ejes. Mostrar los valores dentro del gráfico. Aplicar efectos de relleno que el estudiante considere. Grabar este grafico como personalizado para aplicarlo en futuros usos (darle como nombre pirámides personalizadas). Prueba Final Módulo: “Gráficos Personalizados” Ejercicio Nº 1 Copie el siguiente cuadro de datos en la 1º hoja de su libro de Excel al que llamara “Prueba_GP_Nombre_Apellido”. A la hoja nómbrela como “Ejercicio 1”. Ventas Anuales
Vendedores
Martin
Alicia
Jaime
Gustavo
Elisa
Juan
2000
150
320
260
460
750
120
2001
180
350
280
620
820
375
2002
230
350
300
750
600
400 Se Pide: 1.1)
Cree un grafico de columnas e insértelo en una nueva hoja del libro a la que llamara “Grafico 11”con las siguientes especificaciones: • Se desea realizar un comparativo para cada año por vendedores, por lo tanto se le pide que en el Eje X figuren los años, y además se incluyan en el mismo los rótulos de categoría. • Cada serie incluida en el grafico debe llevar su nombre a través de una referencia a las celdas ubicadas en la tabla original • El grafico debe incluir como titulo del mismo “Ventas anuales según vendedores” y la leyenda con las referencias a las series. Ambos deben presentar como efecto de relleno en sus tramas el mismo formato, un degradado a dos colores con un estilo de sombreado diagonal. La leyenda de referencias deberá figurar a la izquierda del grafico. • Cada Eje deberá llevar los siguientes títulos, en formato “Cursiva”: ƒ X= “Años” ƒ Y= “Ventas en miles de Pesos” • La escala del eje “Y” deberá visualizarse cada 120 unidades • El área de trazado del grafico deberá tener como efecto de relleno una textura de mármol blanco al igual que el área del grafico • Debido a la complejidad de reconocer cada vendedor dentro de cada año se decidió que se incluya el nombre del mismo en cada columna correspondiente, siguiendo la alineación de la misma. 1.2)
1.3)
1.4)
Asimismo se desea observar un grafico de barras con efecto 3D, donde se muestre un comparativo por vendedores para el año 2001 y 2002, con idéntico formato que el grafico realizado en el punto 1.1), ubíquelo en una nueva hoja a la que llamara “Grafico12”. Además nos piden realizar un nuevo grafico de columnas con formatos similar al 1.1) para comparar los totales de ventas para los años 2001 y 2002 entre todos los vendedores, pero sin generar una nueva serie en la tabla original. Para generar el efecto deseado en el grafico modifique el área de una o ambas series para que queden con el mismo efecto y generen la sensación buscada. Ubíquelo en nueva hoja llamándola “Grafico13” Deseamos observar en un nuevo grafico la participación de cada vendedor para las ventas del año 2001, a través de un grafico circular con efecto 3d y seccionado. Añada un formato similar a los gráficos anteriores para las diferentes áreas del mismo. Pero en este deseamos que aparezca el nombre del vendedor y el porcentaje (ambos separados por un espacio). Ubíquelo en nueva hoja llamándola “Grafico14”. El titulo de dicho grafico será “Ventas 2001”. Ejercicio Nº 2 Copie la siguiente tabla a una nueva hoja del libro con el cual esta trabajando y nómbrela “Ejercicio 2”. Edades Población de Artigas según sexo y grupo etario Sexo Total 0 a 3 4 a 5 6 a 14 15 a 19 20 a 24 25 a 29 30 a 49 50 a 64 65 a 79 80 y mas ARTIGAS Total 78.019 5.426 3.139 14.626
Hombres 39.082 2.798 1.587 7.419
7.349
3.797
5.634
2.860
4.767 19.619 10.169
2.316 9.836 5.255
5.771
2.663
1.519
551
Mujeres 3.552
2.774
2.451 3.108
968
38.937 2.628 1.552
7.207
9.783 4.914
A partir de la siguiente tabla de datos deberá construir un grafico personalizado que represente una “Pirámide Poblacional”. Dicho grafico deberá presentar en el Eje horizontal los Hombres a la izquierda y las mujeres a las derechas, recuerde que solamente deberá aparecer en el grafico los “grupos de edades” en el Eje vertical, y no los totales. Deben aparecer títulos en ambos ejes y fundamentalmente las categorías en el Eje X. En cada barra deberá figurar a la interna de la misma el valor para dicho sexo y grupo etario. El formato de las diferentes áreas del grafico debe ser similar a las escogidas para el Ejercicio 1. Ejercicio Nº 3 (Opcional 1) Precios Ventas del Mercado 1 792 2 821 3 522 4 552 5 642 6 437 7 671 8 518 9 388 10 503 11 403 12 196 13 180 Se presentan los siguientes pares de Valores (Precios, Cantidades Transadas) que representan Precios y cantidades transadas en determinado mercado. Se cree que dichas series se correlacionan linealmente. Se solicita si usted podría determinar el mejor ajuste lineal de dichas series a través de una línea de tendencia, representar gráficamente la nube de puntos y dicha estimación lineal, la ecuación de la misma y el coeficiente de correlación al cuadrado (R^2). Ejercicio Nº 4 (Opcional 2) Para el siguiente proyecto de campaña publicitaria se cuenta con la siguiente información: Fechas Tareas Planificación Contratación de Personal temporal
Campañas Piloto Campañas Focalizadas Folleteria Barrial Folleteria no especializada Grafica especializada Radio Televisión Fecha Inicio
01/11/2005
16/11/2005
17/11/2005
18/11/2005
01/12/2005
01/12/2005
01/01/2006
15/01/2006
25/02/2006
Fecha Final
15/11/2005
30/11/2005
20/11/2005
30/12/2005
15/04/2006
15/01/2006
25/01/2006
15/02/2006
15/03/2006
Se solicita que realice para el informe de presentación de la campaña un Grafico Personalizado de Gantt donde se visualicen las diferentes tareas del Proyecto en el Eje X, y en el Eje Y se muestren las fechas involucradas. El grafico deberá presentar: •
Titulo del mismo, y títulos de ambos ejes (no leyenda de referencias). •
Valores de duración de cada una de las tareas en el interior de cada barra •
Formatos de área de grafico y trazado idénticos. •
Formatos del área de las series en color azul. COMPENDIO PRUEBAS MACROS EN EXCEL Prueba Módulo de Macros en Excel Ejercicio 1 Dado el archivo que le proporcionó el docente. En la hoja 1 se encuentra un listado de cheques en cartera de la empresa. Determinados cheques van venciendo, y se debe ir pintando de rojo los que vayan venciendo (utilizar como parámetro la fecha actual del sistema (función DATE)). Se pretende que mediante un macro, se obtenga la suma de los importes de cheques vencidos. Ejercicio 2 En la hoja 2 del mismo archivo entregado por el docente, se encuentra una planilla de manejo de stock. Se pretende que el alumno desarrolle un macro, para que en dicho listado se destaque de color azul aquellos artículos que estén por debajo del stock mínimo requerido por la empresa. Nota: • Generar un botón sobre la hoja 1 para el macro del ejercicio 1. • Generar un botón en la barra de herramientas para ejecutar el macro del ejercicio 2. Prueba Final Macros en Excel Ejercicio 1 Realice una macro que guarde en una base de datos de “Liquidaciones de Sueldo”, los siguientes datos: 9 Nombre y Apellido del Empleado 9 Cargo en la Empresa ƒ Cadete ƒ Auxiliar ƒ Administrativo ƒ Encargado ƒ Gerente 9 Fecha de Pago 9 Días de Ausencia Además deberá agregarse en la base de datos nuevas columnas referidas a: 9 Sueldo Nominal 9 Aportes 9 Sueldo Liquido Los Sueldos Nominales son los siguientes: ƒ Cadete; $4000 ƒ Auxiliar; $5500 ƒ Administrativo; $7000 ƒ Encargado; $12000 ƒ Gerente; $25000 Los Aportes son los siguientes: ƒ Cadete; 10% sobre Sueldo Nominal ƒ Auxiliar; 12% sobre Sueldo Nominal ƒ Administrativo; 15% sobre Sueldo Nominal ƒ Encargado; 18% sobre Sueldo Nominal ƒ Gerente; 22% sobre Sueldo Nominal El Pago del Salario en efectivo se realiza de acuerdo a la siguiente regla: ƒ Si las inasistencias son nulas se lo premia con un incentivo de 5% sobre (Sueldo Nominal‐ Aportes). Sueldo Liquido = (Sueldo Nominal ‐ Aportes)* 1.05 ƒ Si falto 3 o menos días tiene una penalización de 2% sobre (Sueldo Nominal ‐ Aportes) Sueldo Liquido = (Sueldo Nominal ‐ Aportes)* 0.98 ƒ Si falto mas de 3 días tiene una penalización de 5% sobre (Sueldo Nominal – Aportes) Sueldo Liquido = (Sueldo Nominal ‐ Aportes)* 0.95 La funcionalidad de dicha macro deberá incluir: ¾ En la primer fila de la Base de datos, los títulos de cada variable. ¾ La posibilidad de utilizar dicha macro en repetidas ocasiones y que no se eliminen antiguos registros ¾ La posibilidad de elegir a continuación de cada registro estas 2 opciones: ƒ Ingresar un nuevo registró a continuación. ƒ Dejar de ingresar nuevos registros. Prueba Final Macros en Excel Ejercicio 1 Realice una macro que guarde en una base de datos de “Facturación de Llamadas”, los siguientes datos: Datos que cargara el usuario a través de un InputBox: 9 Fecha actual, (utilice la función Now()) 9 Región de la Sucursal desde donde se realizo la llamada ƒ Montevideo ƒ Maldonado ƒ Rocha ƒ Rivera 9 País de Destino ƒ Argentina ƒ España ƒ EEUU ƒ Brasil ƒ Otros 9 Minutos enteros de la llamada A partir de los anteriores datos que cargara el usuario al ejecutar la macro, se deberán calcular los siguientes campos automáticamente: 9 Costo por minuto ƒ Argentina; 0,5 USD. ƒ España; 2 USD. ƒ EEUU; 1,5 USD. ƒ Brasil; 1 USD. ƒ Otros; 3 USD. 9 Costo Total ƒ Costo Total = Costo por minuto * Minutos Enteros de la llamada 9 Descuento ƒ Llamadas hechas desde la sucursal Rocha o Rivera, tienen un 5% de descuento. 9 Precio Final ƒ Precio Final = Costo Total – Descuento La funcionalidad de dicha macro deberá incluir: ¾ En la primer fila de la Base de datos, los títulos de cada variable. ¾ La posibilidad de utilizar dicha macro en repetidas ocasiones y que no se eliminen antiguos registros ¾ La posibilidad de elegir a continuación de cada registro estas 2 opciones: ƒ Ingresar un nuevo registró a continuación. ƒ Dejar de ingresar nuevos registros. 
Descargar