Colores de gráficos de tabla dinámica - Consejos de Excel

Tabla de contenido

Shari envía la pregunta de Excel de esta semana.

No he podido encontrar la respuesta a esta pregunta en nuestro departamento de TI, los archivos de ayuda de Excel o la ayuda en línea de Microsoft Excel, y espero que pueda ayudar.

Estoy analizando datos de Excel durante un período de veinte años y necesito hacer gráficos circulares de Excel para cada año. Los gráficos de Excel se basan en una tabla dinámica (o Gráfico dinámico en Excel 2000), con el año como un campo de página. El problema es que no todos los años contienen los mismos elementos, por lo que cada gráfico de Excel usará un color diferente para el mismo rebanada de pastel.

Estamos tratando de comparar datos a lo largo de estos 20 años, por lo que es esencial tener los mismos colores para cada gráfico. Termino teniendo que cambiar muchos cortes en muchos gráficos para que coincidan con el primero, a veces varias veces porque los colores pueden cambiar si los datos cambian y tengo que volver a calcular la tabla dinámica en la que se basa el gráfico.

MrExcel probó el gráfico dinámico por primera vez. Los gráficos dinámicos son una forma muy poderosa de crear un gráfico para varios escenarios diferentes de datos, pero tienen este molesto defecto. Configuré la tabla dinámica con el año de la clase como fila y el año como página. Pedí que el año de la clase se clasificara en función de las puntuaciones descendentes. A medida que cambia el gráfico dinámico de un año a otro, los colores de las porciones de pastel asociadas con Freshman cambiarán. Algunos años hay miembros de las cuatro clases, otros años hay miembros de solo 3 clases.

Ejemplo de gráfico dinámico

Excel aplica un orden predeterminado de colores a cada sector, por lo que los colores correspondientes cambiarán de un año a otro. Puedo ver a mi gerente sacudiendo la cabeza con disgusto mientras le entrego estos gráficos.

Hay una forma con una macro visual básica para resolver este problema. Si configura las etiquetas de datos para mostrar el nombre de la etiqueta, entonces es posible encontrar el nombre de cada segmento desde Visual Basic. Una vez que tenga un nombre, puede cambiar el color del color de esa porción según el valor del nombre.

Ejemplo de gráfico dinámico

Excel usó los colores anteriores para 1990, pero en 1991 los colores cambian a medida que cambia la cantidad de elementos y su secuencia:

La siguiente macro está codificada para el ejemplo específico de Shari, donde tiene posibles valores de Freshman, Sophomore, Junior y Senior. Al agregar declaraciones de casos adicionales con diferentes índices de color, puede personalizar esto para manejar su situación particular.

Sub ColorPieSlices() ' Copyright 1999.com ' This macro will re-color the pie slices in a chart ' So that slices for a specific category are similarly colored ' Select the chart before calling the macro ' ' Find the number of pie slices in this chart NumPoints = ActiveChart.SeriesCollection(1).Points.Count ' Loop through each pie slice For x = 1 To NumPoints ' Save the label currently attached to this slice If ActiveChart.SeriesCollection(1). _ Points(x).HasDataLabel = True Then SavePtLabel = ActiveChart.SeriesCollection(1) _ .Points(x).DataLabel.Text Else SavePtLabel = "" End If ' Assign a new data label of just the point name ActiveChart.SeriesCollection(1).Points(x).ApplyDataLabels Type:= _ xlDataLabelsShowLabel, AutoText:=True ThisPt = ActiveChart.SeriesCollection(1).Points(x).DataLabel.Text ' Based on the label of this slice, set the color Select Case ThisPt Case "Freshman" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 3 Case "Sophomore" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 4 Case "Junior" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 5 Case "Senior" ActiveChart.SeriesCollection(1). _ Points(x).Interior.ColorIndex = 6 Case Else ' Add code here to handle an unexpected label End Select ' Return the label to it's original pre-macro state ActiveChart.SeriesCollection(1). _ Points(x).DataLabel.Text = SavePtLabel Next x End Sub

Inicie el editor de VB con alt-F11. Insertar - Módulo. Insertar procedimiento. Escriba ColorPieSlices como Nombre y haga clic en Aceptar. Ingrese la macro anterior.

Para hacer la vida más fácil, asigne la macro a un acceso directo en Excel. En Excel, seleccione Herramientas - Macro. Resalte ColorPieSlices y haga clic en el botón de opciones. En el cuadro de la tecla de método abreviado, ingrese una "d". Haga clic en Aceptar y cierre el cuadro de diálogo Macro haciendo clic en la "x" en la esquina superior derecha. Ahora, después de cambiar su gráfico dinámico, puede presionar Ctrl + D para cambiar el color de las porciones circulares a su conjunto de colores preferido.

Articulos interesantes...