martes, 28 de agosto de 2012

Nueva edición Cursos Excel y Macros - Excelforo.

Comienza una nueva edición de Cursos de Excel y Macros en modalidad elearning (online):

Curso Excel Avanzado para versiones 2007/2010

(ver más)

Curso Macros Iniciación

(ver más)

Curso Macros Medio (Nuevo!!!)

(ver más)


Después de este verano duro, que mejor que animárnos y empezar con ganas nuevos proyectos...
Esta nueva edición de Cursos de Excel y macros en modalidad elearning (online) dará comienzo el próximo día 1 de septiembre de 2012.
Con la confianza de siempre....Anímate!!


El programa del nuevo curso de Macros nivel medio es el siguiente, pero puedes informarte sin compromiso en cursos@excelforo.com o directamente en www.excelforo.com:

TEMA 1 - INTRODUCCIÓN A LAS MACROS
1. Introducción.
2. Programas secuenciales, interactivos y orientados a eventos.
3. Programas para el entorno Windows.
3.1. Modo de diseño y modo de ejecución.
3.2. Formularios y controles.
3.3. Objetos y propiedades.
3.4. Nombres de objetos.
3.5. Eventos.
3.6. Métodos.
3.7. Proyectos y ficheros.
4. El entorno de programación Visual Basic.
5. El Help de Visual Basic.
6. Ejemplos
6.1. Ejemplo 1: Sencillo programa de colores y posiciones.
6.2. Ejemplo 2: Minicalculadora.
6.3. Ejemplo 3: Transformación de unidades de temperatura.
TEMA 2 - EL ENTORNO DE VBA. CARACTERÍSTICAS GENERALES.
1. El editor de VBA (Visual Basic para aplicaciones).
2. Los módulos en el editor de VBA.
3. Personalizar el entorno del editor de VBA: opciones.
4. Personalizar el entorno del editor de VBA: examinador de objetos.
5. Personalizar el entorno del editor de VBA: propiedades del proyecto.
6. La ventana de explorador de proyectos.
7. La ventana de propiedades.
8. Utilización del Debugger.
8.1. Ejecución controlada de un programa.
8.2. Ventanas Immediato, Local e Inspección.
8.3. Otras posibilidades del Debugger.
TEMA 3 - ASPECTOS BÁSICOS DE LAS MACROS:
1. Introducción al VBA (Visual Basic para aplicaciones).
2. El concepto de macro.
2.1. Hacer visible la ficha programador.
2.2. ¿Qué se puede hacer con VBA?
3. Sobre seguridad de macros.
4. Guardando libros de trabajo con macros.
5. Dos tipos de macros en VBA.
6. Definiciones importantes.
7. Creando macros en VBA.
8. Grabación de macros VBA.
9. Grabar usando referencias absolutas frente relativas.
10. Libro de macros personal.
11. Asignar una macro a una tecla de acceso directo (o método abreviado).
12. Asignar una macro a un botón.
13. Escribiendo algo de código VBA.
14. ¿Cómo trabaja VBA?: resumen de lo visto.
TEMA 4 - EL LENGUAJE VBA PARA EXCEL:
1. Introducción.
2. Un par de utilidades en la programación con VBA.
3. Proyectos y módulos.
4. Ámbito de las variables y los procedimientos.
4.1. Variables y funciones de ámbito local.
4.2. Variables y funciones de ámbito global.
5. Variables.
5.1. Variables y constantes.
5.2. Nombre de variables.
5.3. Tipo de datos.
5.4. Elección del tipo de variable.
5.5. Declaración explícita de variables.
5.6. Ejemplo de variables.
6. Operadores y otras expresiones.
7. Sentencias de control.
7.1. Sentencia IF ... THEN ... ELSE ...
7.2. Sentencia SELECT CASE.
7.3. Sentencia FOR…NEXT.
7.4. Sentencia WITH...END WITH.
7.5. Sentencia DO ... LOOP.
7.6. Sentencia WHILE… WEND.
7.7. La sentencia GOTO.
8. Algoritmos.
8.1. Representación de algoritmos.
9. Arrays.
9.1. Arrays estáticos.
9.2. Arrays dinámicos.
10. Las funciones INPUTBOX y MSGBOX.
11. Funciones para manejo de cadenas de caracteres.
TEMA 5 - PROCEDIMIENTOS SUB Y FUNCTION:
1. Introducción.
2. Procedimiento Function y procedimiento sub en VBA.
3. Funciones (procedimiento Function).
3.1. Por qué un procedimiento Function?.
3.2. El procedimiento Function.
3.3. Ámbito de aplicación de una Function.
3.4. Formas de ejecutar un procedimiento Function.
3.5. Los argumentos de un procedimiento Function.
3.6. Recalculo de funciones.
3.7. Depurando funciones.
3.8. Configurando el cuadro diálogo de las funciones.
3.9. Definir la categoría de una función personalizada-UDF.
3.10. Añadir una descripción a una función personalizada-UDF.
4. Procedimientos Sub.
4.1. Ámbito de un procedimiento Sub.
4.2. Ejecutar un procedimiento Sub.
4.3. Llamar a un procedimiento desde un módulo diferente.
4.4. Llamar a un procedimiento desde un WorkBook diferente.
5. Argumentos por referencia y por valor.
6. Procedimientos recursivos.
7. Procedimientos con argumentos opcionales.
8. Número indeterminado de argumentos.
9. Utilización de argumentos con nombre.
10. Control de errores en VBA.
10.1. Cazando errores.
10.2. Ejemplos de control de errores: On Error Resume Next.
10.3. Ejemplos de control de errores: On Error GoTo.
11. Ejemplos aplicados del procedimiento Sub.
TEMA 6 -RANGOS EN VBA:
1. Introducción.
2. Copiar y cortar un rango en VBA.
3. Rangos dinámicos o variables.
4. Seleccionar e identificar rangos.
5. Añadir preguntas y asociar respuestas en celdas (Inputbox).
6. Application.Inputbox.
7. Contar celdas de un rango.
8. Definir el tipo de rango seleccionado (método Areas).
9. Recorrer las celdas de un rango.
10. Rangos anidados (propiedad Parent).
11. Tipo de dato de una celda.
12. Matrices-Array y los rangos.
12.1. Transfiriendo datos.
12.2. Matriz unidimensional.
12.3. Transferir un rango a una matriz.
13. Rangos discontinuos.
14. Ejemplos.
14.1. Ejemplos: borrar las filas vacías sobre un rango seleccionado.
14.2. Ejemplos: duplicar filas.
14.3. Ejemplos: selección de celdas condicionada.
TEMA 7 -LIBROS Y HOJAS EN VBA:
1. Introducción.
2. Grabar un libro de trabajo.
3. Cerrar un libro de trabajo.
4. Mostrar sólo un rango de la hoja de cálculo.
5. Seleccionar un mismo rango en todas las hojas.
TEMA 8 - ALGUNAS TÉCNICAS DE TRABAJO EN VBA:
1. Introducción.
2. Propiedad booleana.
3. Páginas a imprimir dentro de una hoja.
4. Trabajando con tiempos (date, time y timevalue).
5. Ordenar rangos y matrices.
6. Trabajos básicos con archivos.
7. Conocer fecha de última grabación o impresión de un archivo.
TEMA 9 - TRABAJAR CON ARCHIVOS EN VBA:
1. Introducción.
2. Funciones básicas para trabajar con ficheros.
2.1. Comandos para trabajar con archivos.
2.2. Ejemplo de cómo trabajar con archivos.
2.3. El objeto FileSystemObject.
2.4. Ejemplos del objeto FileSystemObject.
3. Trabajar con ficheros de texto.
3.1. Abrir ficheros de texto.
3.2. Leer ficheros de texto.
3.3. Escribir ficheros de texto.
3.4. Pasos generales para tratar ficheros de texto.
4. Ejemplos de trabajo con ficheros de texto.
TEMA 10 - TABLAS DINÁMICAS EN VBA:
1. Introducción.
2. Crear una tabla dinámica con VBA.
3. Depurando el código VBA de una Tabla dinámica.
4. Miembros del objeto tabla dinámica (PivotTable).
5. Complicando el código de una Tabla dinámica.
6. Generando múltiples Tablas dinámicas.
TEMA 11 - GRÁFICOS EN VBA:
1. Introducción.
2. Usando el asistente de grabación.
3. Crear un gráfico en una hoja de gráfico o como objeto.
4. Activar y desactivar un gráfico con VBA.
5. Mover y eliminar gráficos.
6. Tamaño y posición de un gráfico.
7. Exportar un gráfico con VBA.
8. Formato de un gráfico.
9. Otro ejemplo de formato de un gráfico.
10. Seleccionando datos con VBA de un gráfico.
11. Seleccionando etiquetas con VBA de un gráfico.
12. Eventos de un gráfico en VBA.
13. Ejercicios de gráficos en VBA.
TEMA 12 - EVENTOS, PROPIEDADES Y CONTROLES DE UN USERFORM:
1. Introducción.
2. Eventos.
2.1. Eventos generales: carga y descarga de formularios.
2.2. Eventos generales: Focus.
2.3. Eventos generales: KeyPress, KeyUp y KeyDown.
2.4. Eventos relacionados con el ratón: Click y DblClick.
2.5. Eventos relacionados con el ratón: MouseDown, MouseUp y MouseMove.
3. Algunas propiedades comunes a varios controles.
4. Controles más usuales.
4.1. Botón de comando (Command button).
4.2. Botones de opción (Option button).
4.3. Etiquetas (Labels).
4.4. Cuadro de texto (Text box).
4.5. Listas (List box).
4.6. Cajas combinadas (Combobox).
4.7. Barras de desplazamiento (Scroll bars).
5. Ejemplo de un Commandbutton.
6. Ejemplos de un Listbox.
TEMA 13 - LOS EVENTOS EN VBA:
1. Introducción.
2. Eventos del Workbook.
3. Eventos del Worksheet.
4. Eventos del Chart.
5. Eventos de la Aplicacion.
6. Eventos de un Userform.
7. Eventos generales no asociados a objetos.
TEMA 14 - LOS FORMATOS EN VBA:
1. Introducción.
2. Colores.
3. Las fuentes.
4. Los interiores de objetos: fondos y tramas.
5. Los bordes.
6. Las cifras en VBA.
TEMA 15 - 20 EJERCICIOS:
1. Introducción.
2. Ejercicio 1: Convertir las celdas tipo texto a números.
3. Ejercicio 2: Copiar la fórmula en el comentario de una celda
4. Ejercicio 3: Controlando el refresco o actualización.
5. Ejercicio 4: Reordenar cualquier texto que tenga un espacio entre sus caracteres.
6. Ejercicio 5: Autor del libro.
7. Ejercicio 6: Extraer los valores numéricos del valor de una celda alfanumérica.
8. Ejercicio 7: Ordenar las hojas de un libro de trabajo.
9. Ejercicio 8: Replicar la función sustituir.
10. Ejercicio 9: Emular la copia de seguridad automática.
11. Ejercicio 10: Matrices (arrays).
12. Ejercicio 11: Referencias absolutas-relativas con un Userform.
13. Ejercicio 12: Alternar colores para filas.
14. Ejercicio 13: Localizar celdas con fórmulas.
15. Ejercicio 14: Suma condicionada.
16. Ejercicio 15: Aplicar factor a rango con un Userform.
17. Ejercicio 16: Encontrar hojas ocultas.
18. Ejercicio 17: Añadir autoformas.
19. Ejercicio 18: Mostrar/ocultar series de un gráfico.
20. Ejercicio 19: Trabajando con nombres definidos.
21. Ejercicio 20: Seleccionar series de un gráfico.

viernes, 24 de agosto de 2012

Ejercicio de un BUSCARV anidado dentro de otro BUSCARV en Excel.

Explicaré hoy cómo completar el valor en una celda combinando varios instrumentos que nos ofrece Excel. En concreto veremos como combinamos la Validación de datos con un Nombre definido, trabajando sobre unos datos en forma de Tablas, y todo vinculado con una función BUSCARV aniadada dentro de otra.

El ejemplo sobre el que trabajaremos para desarrollar estas funcionalidades consiste en completar, en función a dos variables una tercera, partiendo de varias tablas de datos con registros de dos campos (un código y una descripción de producto) asociadas cada una a un cliente diferente:


En esta hoja de cálculo, llamada 'Clientes', vemos cuatro Tablas (Tabla1, Tabla2, Tabla3 y Tabla4), aunque podríamos trabajar con muchas mas; y también vemos la Tabla1 (la más importante) que nos relaciona cada Cliente con su Tabla. Esta es la base del ejercicio.

Toda esa información sirve para completar en la Hoja 'Buscador' el siguiente informe:

Ejercicio de un BUSCARV anidado dentro de otro BUSCARV en Excel.


Se trata, en definitiva, de seleccionar un cliente, y vinculado a este cliente alguno de sus códigos de producto, para una vez seleccionados Cliente y Código, aparezca mediante fórmula el nombre del producto correspondiente.

Comenzaremos el trabajo definiendo un Nombre definido que he llamado codigo, con la siguiente fórmula:
codigo =BUSCARV(Buscador!$B$3;Tabla1;2;0)&"["&Buscador!$B$3&"]"

Este Nombre construye un texto con una estructura compuesta por la Tabla y el Cliente, en función a la celda B3. Por ejemplo, Tabla2[Cliente1]. Este texto posteriormente lo convertiremos en un valor con la función INDIRECTO.

Otro paso es asignar a la celda B3 de la hoja 'Buscador' el nombre del Cliente; lo que conseguiremos con una Validación de datos tipo lista, empleando los valores del campo Cliente de la Tabla1:

martes, 21 de agosto de 2012

La validación de datos y las duplicidades en Excel.

Algunos días atrás se me planteó una cuestión relacionada con la manera de evitar duplicidades en un campo de un listado, en concreto, se trataba de configurar una validación de datos de tal forma que impidiera introducir sobre un mismo campo de una tabla elementos duplicados.
La cuestión planteada fué:

...necesito colocar en una misma columna dos reglas de validación, como se hace?
Ejemplo, necesito que en la columna A se introduzca un numero con un largo determinado de caracteres (5) y que a su vez no se repita ningún dato....

La cuestión de aplicar múltiples reglas de validación (ver validación de datos personalizada) sobre un rango de celdas ya se ha tratado anteriormente en este mismo blog, pero me resultó curioso aplicarlo en este caso, donde la Validación de datos personalizada es la respuesta ideal a un problema tan frecuente como los Duplicados.
Para trabajar sobre un ejemplo concreto, asignaremos una Validación de datos personalizada al Rango A1:A9 (y la celda A1 activa) de nuestra hoja, y desde la ficha Datos > herramientas de datos > Validación de datos, configuramos la opción personalizada con la fórmula:
=Y(LARGO(A1)=5;CONTAR.SI(A:A;A1)=1)

La validación de datos y las duplicidades en Excel.


Lo que hemos conseguido es forzar para el rango dado que cualquier valor introducido en A1:A9 no esté duplicado en otra celda de la columna A y además que el número de caracteres del valor introducido tenga una longitud de 5. Lo que hemos logrado forzando a que el LARGO de la celda deba ser 5, y que al contar el valor introducido en toda la columna A tenga que ser único, es decir que CONTAR.SI sea 1.
Podemos ver una imagen donde se demuestra esta doble validación:

La validación de datos y las duplicidades en Excel.


Creo que este es un buen ejemplo de validación múltiple de datos en Excel...

viernes, 17 de agosto de 2012

Desviaciones por puntos de una serie de un gráfico de Excel.

Hace bastante tiempo escribí una entrada explicando cómo incorporar a un gráfico de Excel una barras de error con desviación estándar (ver). En la entrada del día explicaré una adaptación de ese gráfico, donde cada punto de la serie tiene una desviación diferente.
Se trata de dar respuesta a un usuario del blog que planteaba la siguiente cuestión:

...hora Estabulación
7:00 38.2±0.07
10:00 38.7±0.07
13:00 38.6±0.08
16:00 38.8±0.09
19:00 38.9±0.07
22:00 38.3±0.07
1:00 38.3±0.13
4:00 38.2±0.07
como puedo hacer una grafica en donde me aparezcan estos datos (error estandar)...

Vemos que tenemos tres columnas de datos, una primera para medir el tiempo (que será nuestro eje de categorías) una segunda que determina el valor medido para cada hora y una tercera que determinar el error o desviación del valor tomado.
Trabajando con ese origen de datos llegaremos a un gráfico como el de la imagen:

Desviaciones por puntos de una serie de un gráfico de Excel.



Para empezar a trabajar sobre este problema, y puesto que la herramienta estándar de Barras de error no es aplicable a este caso, añadiremos un par de columnas auxiliares que representen el valor medido mas y menos la desviación puntual para cada registro:

Desviaciones por puntos de una serie de un gráfico de Excel.


La fórmula para la columna auxiliar D (min) es:
=+$B2-C2
y para la columna auxiliar E (max) es:
=+$B2+C2

Para construir nuestro gráfico seleccionamos el rango múltiple: A1:B9 y D1:E9, es decir, las columnas Hora, Estabulación, min y max; si seleccionamos un tipo de gráfico Columna agrupada, eliminamos la Leyenda y las Líneas horizontales de división principales, y agregamos las Etiquetas de datos a las diferentes series (cada una con su formato), tendríamos el siguiente gráfico, origen del definitivo:

lunes, 13 de agosto de 2012

VBA: Un hipervínculo con macros de Excel.

Recientemente un usuario realizaba una consulta sobre la manera de construir una macro que convirtiera el valor de una celda en un hipervícunlo hacia un fichero localizado en una carpeta de nuestro Pc.
...Quiero hacer una macro que coja el nombre que tengo escrito en una celda y le haga un hipervínculo a un achivo que habrá en una carpeta "X2" dónde habrá un archivo con el mismo nombre que yo he puesto en la celga (.html); [...] de manera que sólo active el hipervínculo en caso que la celda activa esté en la columna X ó Y...

Hace ya un año expliqué un planteamiento similar, pero utilizando sólo las herramientas estándar, la función HIPERVINCULO y la Validación de datos (ver entrada). Sin embargo, hoy aplicaremos un método bastante sencillo en nuestro procedimiento, el objeto Hyperlinks, en concreto con el método Add:
expresión.Add(Anchor, Address, SubAddress, ScreenTip, TextToDisplay)


El código que insertaremos en la Hoja1 (en la hoja donde queramos se ejecute) del Explorador de proyectos del Editor de VBA, formando nuestra macro de Excel, con un evento SelectionChange, quedando:

Private Sub Worksheet_SelectionChange(ByVal Target As Range)

'verificamos que sólo actue si nos encontramos en las columnas X ó Y
If Not Intersect(Target, Range("X:Y")) Is Nothing Then
'asignamos variables a la ruta de nuestro equipo
ruta = "E:\excelforo\"
'y asignamos como nombre del fichero a vincular el nombre de la celda seleccionada
fichero = Target.Value
direccion = ruta & fichero
    'depuramos posibles errores, en caso que la celda está vacía salimos de la rutina
    If Target.Value = "" Then
    Exit Sub
    Else
    'si la celda tiene algún valor, lo convertimos en un hipervínculo
    'relacionándolo con el fichero situado en la carpeta y con nombre especificado.
    ActiveSheet.Hyperlinks.Add Anchor:=Selection, Address:=direccion, TextToDisplay:=fichero
    End If
End If

End Sub


Estaríamos listos para comprobar su funcionamiento. Para cualquier celda con valor en la columna X ó Y, de la Hoja1, se convierte en un hipervínculo que relaciona con el fichero del mismo nombre que el valor de la celda, localizado en la carpeta E:\excelforo\ (en mi ejemplo).

jueves, 9 de agosto de 2012

Mostrar elementos del Eje Horizontal en un gráfico de Excel.

Hoy toca hablar de gráficos. Al hilo de una entrada anterior del blog, un lector planteaba la posibilidad de mostrar un gráfico en Excel en el que se mostraran en las etiquetas del Eje Horizontal (categorías) sólo los elementos seleccionados, asociados a un gráfico de columnas, con un color diferente al resto, disponiendo además de unas Etiquetas de datos diferenciada.
Conozcamos nuestro Origen de datos para el futuro gráfico. Se trata de un sencillo listado de clientes con su Facturación. Es a partir de esta tabla, donde añadiremos algo de funcionalidad para lograr ver un gráfico de columnas, a dos colores, según los clientes seleccionados por nosotros:

Mostrar elementos del Eje Horizontal en un gráfico de Excel.


El primer paso será construir una serie de columnas auxiliares necesarias, como siempre para engañar a Excel, donde incluir los datos oportunos para dotar a las series de datos futuras con valores, así como rellenar las Etiquetas del Eje Horizontal.
La primera parte es crear una Columna (rango C2:C11), quizá la más importante, que sirva para seleccionar aquellos clientes que queremos Mostrar en el gráfico. Esto lo haremos con una sencilla Validación de datos tipo lista, con valores Sí/No.
La siguiente columna auxiliar formulada (rango D2:D11) será la que emplearemos para conseguir nuestra Etiqueta del Eje horizontal, en este caso aplicaremos la fórmula:
=SI($C2="Sí";$A2;"")
Otra columna auxiliar (rango E2:E11) nos mostrará la Serie de datos de los clientes seleccionados; en este caso la fórmula es:
=SI($C2="Sí";$B2;"")
Y la última de nuestra columnas auxiliares mostrará la Serie de datos para los clientes no seleccionados. La fórmula para el rango F2:F11 será:
=SI($C2="Sí";"";$B2)
Veamos como queda nuestro origen de datos después de los cambios:

Mostrar elementos del Eje Horizontal en un gráfico de Excel.



Ya estamos en disposición de generar nuestro gráfico en Excel. Recordemos que se trata de conseguir un gráfico de columnas, que diferencie entre los clientes que hemos seleccionado en el rango C2:C11, con colores distintos, y donde además agregaremos Etiquetas de datos sólo a los clientes marcados.
Seleccionamos el rango D1:F11 e insertamos un gráfico tipo columnas. Probablemente nos de un gráfico 'raro', pero no nos preocupemos ahora por eso. De manera sencilla nos iremos a las Herramientas de gráfico > Diseño > Datos > Seleccionar datos.

lunes, 6 de agosto de 2012

Calcular un aging de deuda con tablas dinámicas de Excel.

Hace bastante tiempo que no trabajamos con tablas dinámicas con nuestro Excel. Aprovechando la consulta realizada por un lector, realizaremos un ejercicio doble con tablas dinámicas, uno primero para Agrupar un campo y un segundo para generar un Campo calculado. Son tareas que ya hemos aprendido, en algún momento, pero creo conveniente recordar cómo trabajar con estas herramientas, que hacen realmente potente nuestra hoja de cálculo.
La cuestión la planteó un lector a través de un comentario:

...elaborar el análisis de vencimiento y estime la provisión de cuentas incobrables al cierre del ejercicio. Para elaborar el análisis de vencimiento usted debe clasificar los montos de las facturas en cada categoría según su vencimiento según como se indica a continuación:

Por vencer: Montos cuyo atraso (días) no supera los 30 días
1 - 30 dias: Montos cuyo atraso (días) es mayor o igual a 1 día y menor que 31 días
31 - 60 dias: Montos cuyo atraso (días) es mayor o igual a 31 días y menor que 61 días
61 - 90 dias: Montos cuyo atraso (días) es mayor o igual a 61 días y menor que 91 días
91 - > dias: Montos cuyo atraso (días) es mayor o igual a 91 días

La provisión se estima como un porcentaje del total de la cuenta según cada categoría:
Por vencer: 5%
1 - 30 dias: 10%
31 - 60 dias: 20%
61 - 90 dias: 50%
91 - > dias: 100%

Nota:
Ubique la información en dos hojas que deberá de identificar como:

Hoja1: Análisis de vencimiento
Hoja2: Provisión...

Comenzamos trabajando sobre una base de datos con información de clientes y ciertas facturas, algunas de las cuales ya están vencidas...

Calcular un aging de deuda con tablas dinámicas de Excel.


Lo primero que haremos será construir una tabla dinámica, normal, llevando al área de datos el campo 'Importe', y el campo de 'Días vencidos' al área de filas. Luego seleccionaremos algún elemento del campo a agrupar, esto es, del campo 'Días vencidos' y Agruparemos selección:

Calcular un aging de deuda con tablas dinámicas de Excel.


El resultado será la primera de las peticiones del lector, un aging de deuda, en cuatro tramos:

viernes, 3 de agosto de 2012

VBA: Mostrar/Ocultar Series de un gráfico en Excel.

En el post de hoy veremos un sencillo código de VBA, donde un procedimiento Sub nos mostrará u ocultará las Series de un gráfico, insertado en una hoja de cálculo de Excel.
La cuestión la planteó un lector a través de un comentario:

......tengo tres series de valores en tres columnas (5 valores por columna, y tengo un grafico de la primera columna vs la segunda y la tercera. En la sexta fila de ls columnas dos y tres tengo una lista desplegable con las opciones SI y NO, y quiero que cuando en la lista se seleccione la opcion SI los valores de la columna correspondientes aparezcan en la grafica en caso contrario que no aparezcan en la grafica...

De manera similar a la que plantea el lector, disponemos un origen de datos y un gráfico de columnas ya generado:

VBA: Mostrar/Ocultar Series de un gráfico en Excel.


Como vemos en la imagen, en las celdas B6:D6, tenemos celdas con una Validación de datos tipo lista, con valores Sí / No. Estos valores, siguiendo las indicaciones del lector, serán los que nos servirán para elegir si queremos o no Mostrar u Ocultar las Series en el Grafico.
He decidido ejecutar la macro de Excel asignándola a un botón, aunque podemos optar por cualquier otro método.

Insertaremos el siguiente código en un Módulo en la Ventana del Explorador de proyectos del Editor de VBA, formando nuestra macro de Excel:

Sub MostrarSeries()
'Activamos el gráfico, previamente creado.
ActiveSheet.ChartObjects("1 Gráfico").Activate
'Nos aseguramos que es de tipo Columnas
ActiveChart.ChartType = xlColumnClustered
'y siempre para empezar, damos el rango completo como Fuente para construir el gráfico
ActiveChart.SetSourceData Source:=Range("A1:D5")

'Ahora condicionamos Mostrar o Eliminar cada una de las tres series del gráfico
'al valor de las celdas B6:D6
If Range("B6") = "Sí" Then
ActiveChart.SeriesCollection("Año2010").Values = Range("B2:B5")
ElseIf Range("B6") = "No" Then
ActiveChart.SeriesCollection("Año2010").Delete
End If
If Range("C6") = "Sí" Then
ActiveChart.SeriesCollection("Año2011").Values = Range("C2:C5")
ElseIf Range("C6") = "No" Then
ActiveChart.SeriesCollection("Año2011").Delete
End If
If Range("D6") = "Sí" Then
ActiveChart.SeriesCollection("Año2012").Values = Range("D2:D5")
ElseIf Range("D6") = "No" Then
ActiveChart.SeriesCollection("Año2012").Delete
End If

End Sub


Ya podemos comprobar nestra macro de Excel, modificamos alguna de las celdas B6:D6, y ejecutamos:

miércoles, 1 de agosto de 2012

Eliminar filas en blanco en hojas de Excel.

Recordaré hoy una funcionalidad muy práctica en las hojas de cálculo de Excel, que nos permite seleccionar, de golpe, multitud de celdas sin datos.
La cuestión me la planteó un usuario que tenía la necesidad de eliminar muchas filas en blanco que se alternaban, en su base de datos, con otras filas con valores.

Veamos una imagen, recortada, de nuestro origen de datos en Excel:

Eliminar filas en blanco en hojas de Excel.


Sin duda una solución sería seleccionar todo el área de datos, en mi ejemplo A1:F1200, aplicar el Autofiltro (Datos > Ordenar y filtrar > Filtro), para luego seleccionar únicamente los elementos (Vacías), seleccionar el resultado de filas sin datos y Elimiar filas.

Sin embargo, en este post explicaré otra versión, algo más sencilla.
Seleccionamos todo el rango de filas, con datos y sin datos, rango A1:F1200, presionamos F5, o Ctrl+I, o Inicio > Modificar > Buscar y seleccionar > Ir a..., lo que abrirá la ventana de Ir a...:

Eliminar filas en blanco en hojas de Excel.


Ahora presionamos el botón Especial, y seleccionamos Celdas en blanco:

Eliminar filas en blanco en hojas de Excel.


Tras aceptar veremos en nuestra hoja de Excel como sólo están seleccionadas, del rango A1:F1200, las celdas sin datos; precisamente las que queríamos... Ahora sólo queda Eliminar filas, y llegaríamos a nuestro fin, es decir, obtener del origen de datos, sólo las filas con valores: