O que você gostaria de fazer não é possível sem o código.
A função VBA a seguir pode ser usada para definir cores com base em valores de células para um gráfico de pizza na planilha ativa. Os valores de cor podem estar em um intervalo de N linhas x 3 colunas de valores RGB decimais ou um intervalo de N linhas x 1 colunas de valores hexadecimais de 6 dígitos (onde o número hexadecimal é um conjunto de três valores hexadecimais de 2 dígitos em ordem RGB).
A função requer dois argumentos: uma referência ao intervalo de valores de cor (A1: A5, por exemplo) e o nome do gráfico de pizza. O nome do gráfico pode ser um nome padrão (como "Gráfico 2") ou um nome dado ao gráfico.
Se o número de colunas no intervalo de entrada não for igual a 3 ou 1, ou o número de linhas não for igual ao número de pontos de dados no gráfico de pizza, a função retornará # N / A! erro.
Um gráfico recolored reterá as novas cores depois que a função for excluída da planilha.
Option Explicit
Function SETPIECOLORS(colorRng As Range, chartName As String) As Variant
Dim colorArr As Variant
Dim myChartObject As ChartObject
Dim i As Long
Set myChartObject = ActiveSheet.ChartObjects(chartName)
' // Assign RGB decimal color values to array
If colorRng.Columns.Count = 3 Then
colorArr = colorRng
' // Assign RGB hex color values to array
ElseIf colorRng.Columns.Count = 1 Then
ReDim colorArr(1 To colorRng.Rows.Count, 1 To 3)
For i = 1 To colorRng.Rows.Count
colorArr(i, 1) = "&H" & Left(colorRng(i).Value, 2)
colorArr(i, 2) = "&H" & Mid(colorRng(i).Value, 3, 2)
colorArr(i, 3) = "&H" & Mid(colorRng(i).Value, 5, 2)
Next
Else
' // Number of columns in color range not equal to 1 or 3
SETPIECOLORS = CVErr(xlErrNA)
Exit Function
End If
With myChartObject
With .Chart.SeriesCollection(1)
If UBound(colorArr, 1) = .Points.Count Then
' // Set the colors of the pie data points
For i = 1 To .Points.Count
.Points(i).Interior.Color = RGB(colorArr(i, 1), colorArr(i, 2), colorArr(i, 3))
Next
Else
' // Number of rows in color range does not equal number of data points
SETPIECOLORS = CVErr(xlErrNA)
Exit Function
End If
End With
End With
SETPIECOLORS = True
End Function
A função pode ser instalada copiando-a para um novo módulo inserido através do menu Desenvolvedor / Visual Basic acessado a partir da faixa do Excel.