Excel Avanzado

Macros, Vba en Excel y muchos ejemplos de nuestro Curso de Excel Avanzado

Excel Avanzado

Creación de Gráfico para ventas por área, caso con múltiples locales

| 1 comentario

Cuando uno trabaja con Excel, es común tener una cantidad considerable de datos, los cuales varían dependiendo de la situación o ámbito laboral en el que uno se encuentre. Una de las herramientas que el Excel tiene es la de Tablas Dinámicas, las cuales ordenar la gran cantidad de datos que se tiene de una determinada forma, la cual queda a nuestra elección. Sin embargo, cuando se tiene una presentación en la cual se tiene como audiencia a personas ajenas al desarrollo de Excel, lo más didáctico o práctico, hasta cierto punto, es el desarrollo de gráfico; ya que, estos permiten un mejor entendimiento de los datos. En general es más asequible a la vista gráfico que un conjunto de números.

Como se mencionó anteriormente, uno suele trabajar con gran cantidad de data y en el ejemplo que se propondrá se busca un mayor entendimiento y utilidad del macros; es por ello que se busca simplificar la data. Adentrándose más al ejemplo, se tiene una empresa que tiene varias sedes en distintos distritos de Lima, es una empresa que vende distintos productos, estos están agrupados en tres áreas: abarrotes, electrodomésticos y artículos de limpieza. Realizar una macro que facilite este proceso ayuda cuando, en este caso, se tiene que hacer esta tarea teniendo en cuenta un periodo determinado de tiempo; ya sea semanal, mensual o anual.

Grafico ventas por area 01

(Para mayor visualización de la imagen, hacer click en la misma)

Como se observa, se tiene cinco distritos y con ello se busca realizar un análisis de la ventas por áreas y compararlas entre distritos. Para ello, primero se realiza la siguiente tabla dinámica.

Grafico ventas por area 02

(Para mayor visualización de la imagen, hacer click en la misma)

Teniendo la tabla dinámica, se empieza con la programación del gráfico;

Sub gen_grafico()
Dim aTitulo As String

Application.ScreenUpdating = False
aTitulo = "Ventas por Distrito"
'ActiveWindow.DisplayGridlines = False
'Worksheets("Hoja2").ChartObjects.Delete esto permite tener una hoja limpia en la cual se trabajara
Sheets("Hoja4").Select
celda_inicial = Worksheets("Hoja4").Cells(3, 1).Address
area_de_datos = Range(celda_inicial).CurrentRegion.SpecialCells(xlVisible).Address
Charts.Add
ActiveChart.ChartType = xlColumnClustered
ActiveChart.SetSourceData Source:=Sheets("Hoja4").Range(area_de_datos)
ActiveChart.Location Where:=xlLocationAsObject, Name:="Hoja2"
With ActiveChart
.HasTitle = True
.ChartTitle.Characters.Text = "Ventas por Distrito" 'se dirige al eje de las "x"
.Axes(xlCategory, xlPrimary).HasTitle = True
.Axes(xlCategory, xlPrimary).AxisTitle.Characters.Text = aTitulo
.Axes(xlValue, xlPrimary).HasTitle = True
.Axes(xlValue, xlPrimary).AxisTitle.Characters.Text = "Nuevos soles" 'se dirige al eje de las "y"
End With
'A partir de acá la programación se dedica a la edición del gráfico en sí y no a la data que lleva
ActiveChart.HasLegend = False
ActiveChart.HasDataTable = True
ActiveChart.DataTable.ShowLegendKey = True
ActiveChart.HasPivotFields = False
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 10
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
With Selection.Border
.Weight = 3
.LineStyle = 1
End With
Selection.Interior.ColorIndex = xlNone
ActiveChart.PlotArea.Select
With Selection.Border
.ColorIndex = 16
.Weight = xlThin
.LineStyle = xlContinuous
End With
Selection.Interior.ColorIndex = xlNone
ActiveChart.ChartArea.Select
ActiveChart.ChartTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Selection.Font.Bold = True
ActiveChart.Axes(xlValue).AxisTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = "Arial"
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Selection.Font.Bold = True
ActiveChart.Axes(xlCategory).AxisTitle.Select
Selection.AutoScaleFont = True
With Selection.Font
.Name = “Arial”
.Size = 8
.Strikethrough = False
.Superscript = False
.Subscript = False
.OutlineFont = False
.Shadow = False
.Underline = xlUnderlineStyleNone
.ColorIndex = xlAutomatic
.Background = xlAutomatic
End With
Selection.Font.Bold = True
Application.ScreenUpdating = True
Application.CommandBars("Chart").Visible = False
End Sub

Con ello se tiene el siguiente cuadro:

Grafico ventas por area 03

(Para mayor visualización de la imagen, hacer click en la misma)

Un comentario

  1. Buen día, muy util tu ejemplo, por favor podrías compartir el archivo de ejemplo para poder usar la macro sobre los datos originales. Gracias.

Deja una respuesta

Los campos requeridos estan marcados con *.