Abra el archivo Graficos01.xlsm o haga clic aquí
Si no existen nombres de rango, vamos a crearlas.
- Seleccione el rango: B2:G14. [Inicio] –[Dar formato de tabla] - Seleccione uno y [Aceptar]. Use [Datos] – [Filtro] para quitar los botones insertados.
- Estando seleccionado el mismo rango, use: [Fórmulas] – [Nombres definidos] – [Crear desde la selección] - Activar sólo [Fila superior] – [Aceptar].
Vamos a crear una lista de variables (series de datos por columna):
Haga clic en X2. Digite hacia abajo: Milpo, Atacocha, Raura, Buenaventura, Centromin (o copie y use pegado especial – [Transponer]). En X1, digite: Acciones
Ahora vamos a colocar la lista de algunos tipos de gráficos ofrece el Excel
Haga clic en Z2. Digite hacia abajo: Línea agrupada, Columna apilada, Columna agrupada 3D, Columna 3D, Línea, Línea apilada, Línea 3D, Circular, Circular 3D, Dispersión. En Z1, digite: TipoGraff Seleccione el rango X1:X6, use [Crear desde la selección] de [Fórmulas] para que el rango se llame Acciones. Haga lo mismo con el rango Z1:Z12, que se debe llamar TipoGraff.
Vamos a trabajar con los 12 primeros meses. Esto significa que debemos eliminar las filas 15 y 16, totalmente.
Compruebe que los nombres de rango siguen siendo válidos. Esto por tener formato de tabla.
Insertemos un botón de Cuadro combinado para la lista de las series a graficar:
[Ficha Programador o Desarrollador] – [Controles] – [Insertar] – [Cuadro combinado (de Control de Formulario] - En A2, trace un rectángulo que copie la celda . Si al levantar el cursor emerge una ventana, presione [Esc] pues no vamos a asignar ninguna macro. Haga clic con el botón derecho del ratón hasta que se emita un menú contextual donde la última opción es [Formato de control]. Si no sale, intente de nuevo. En esta ventana y en la pestaña [Control], en [Rango de entrada] digite Acciones. En [Vincular con la celda], digite A2. Haga clic en [Aceptar].
Si ahora hace clic en el botón (estando desactivado), verá la lista de los nombres de rango.
Sólo falta asignar la macro que se ejecutará cuando se seleccione uno de estos elementos.
Para ello, codificaremos la serie que nos permitirá graficar.
Vaya al Editor del VBA, inserte un módulo y digite
Sub GraffSeries()
Supondremos que el único libro que está abierto es el Grafico01c.xlsm y la única hoja que tiene es Hoja1.
Si así no fuera, se debe activar dicho libro y luego seleccionar la Hoja que contiene los datos. Recuerde que ya los datos tienen nombre de rango y todos los datos tienen formato de tabla.
Cuando se selecciona un elemento de la lista contenida en el botón cuadro combinado, la celda A2 contendrá el número del elemento seleccionado. De esta forma, si deseamos graficar las acciones de Raura, seleccionamos Raura de la lista y en A2 estará 3. Según esto, al usar
Select Case iX
Case 1: sName = "Milpo"
Case 2: sName = "Atacocha"
Case 3: sName = "Raura"
Case 4: sName = "Buenaventura"
Case 5: sName = "Centromin"
End Select
sName contendrá “Raura”. Luego, seleccionamos dicho rango e insertamos un “chart” (gráfico) de tipo Columna 3D, le asignamos el rango seleccionado y mostramos la etiqueta en cada una de las barras.
Esto lo hacemos con
Range(sName).Select
ActiveSheet.Shapes.AddChart2(297, xl3DColumn).Select
ActiveChart.SetSourceData Source:=Range(sName)
ActiveChart.SetElement msoElementDataLabelShow
Las opciones que vamos a añadir, sólo tienen validez en gráficos de tipo barra. En otros tipos se deberán evitar su uso. Como en esta macro nos interesa manipular series diferentes en el mismo gráfico, todos ellos serán Columna 3D.
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.ChartGroups(1).GapWidth = 20
ActiveChart.ChartGroups(1).VaryByCategories = True
ActiveChart.SetElement (msoElementChartTitleAboveChart)
Selection.Caption = "Valor medio de acciones de " + sName
ActiveChart.FullSeriesCollection(1).XValues = xEje
Finalmente, si sólo se grafica una serie, no tiene sentido la leyenda. Por ello vamos a eliminarla usando
ActiveChart.Axes(xlSeries).Select
Selection.Delete
Termina la macro con
End Sub
A continuación mostramos elprocedimiento.
Sub GraffSeries()
'
' Activamos instancias de rango que contiene a los meses
Set xEje = Range("Meses")
'
' Al seleccionar un elemento de la lista
' del cuadro combinado de series, el número del elemento
' seleccionado se encuentra en A2, así lo definimos
iX = Range("A2")
' Dependiendo del valor de iX, elegimos el rango a graficar
Select Case iX
Case 1: sName = "Milpo"
Case 2: sName = "Atacocha"
Case 3: sName = "Raura"
Case 4: sName = "Buenaventura"
Case 5: sName = "Centromin"
End Select
'
' En este caso, todos los gráficos serán del mismo tipo: xl3DColumn
'
Range(sName).Select
ActiveSheet.Shapes.AddChart2(297, xl3DColumn).Select
ActiveChart.SetSourceData Source:=Range(sName)
ActiveChart.SetElement msoElementDataLabelShow
'
' Las siguientes opciones tienen validez en estos tipos de gráficos
'
ActiveChart.FullSeriesCollection(1).Select
ActiveChart.ChartGroups(1).GapWidth = 20
ActiveChart.ChartGroups(1).VaryByCategories = True
ActiveChart.SetElement (msoElementChartTitleAboveChart)
Selection.Caption = "Valor medio de acciones de " + sName
ActiveChart.FullSeriesCollection(1).XValues = xEje
'
' Vamos a eliminar la leyenda por estár demás
'
ActiveChart.Axes(xlSeries).Select
Selection.Delete
Range("D16").Select
End Sub
Grabe su libro con el nombre Graficos01c.xlsm, habilitado para macros.
Ahora vamos terminar asignando el botón insertado a esta macro:
Estando en Excel, haga clic con el botón derecho al botón de Cuadro combinado. En el menú contextual que se emita, seleccione [Asignar macro]. De la lista que salga, seleccione en [GrafSeries] y luego clic en [Aceptar].
Pruebe ahora seleccionando un elemento de esta lista de Cuadro combinado.
La siguiente imagen muestra el procedimiento respectivo.
En la siguiente sesión completaremos la otra parte que corresponde a seleccionar el tipo de gráfico deseado y la serie para luego trazar el gráfico.
Vaya a la siguiente sesión haciendo aquí