Cor de um gráfico de células com seus dados

Formulação do problema

Eu gostaria que as colunas no histograma (ou fatias no gráfico de pizza, etc.) tivessem automaticamente a cor que foi usada para preencher as células correspondentes com os dados de origem:

Antecipando os gritos surpresos e indignados de camaradas individuais, deve-se notar que, é claro, a cor do preenchimento do diagrama também pode ser alterada manualmente (clique com o botão direito do mouse na coluna - Formato de ponto/série (Formatar ponto de dados/série) etc. – ninguém discute. Mas, na prática, existem muitas situações em que é mais fácil e conveniente fazer isso diretamente nas células com dados e, em seguida, o gráfico deve ser redesenhado automaticamente. Tente, por exemplo, definir o preenchimento por região para as colunas deste gráfico:

Acho que você entendeu, certo?

Solução

Nada além de uma macro pode fazer isso. Por isso, abrimos Editor de Visual Basic da guia revelador (Desenvolvedor — Editor do Visual Basic) ou pressione o atalho de teclado Alt + F11, insira um novo módulo vazio através do menu Inserir - Módulo e copie o texto dessa macro lá, que fará todo o trabalho:

Sub SetChartColorsFromDataCells() If TypeName(Selection) <> "ChartArea" Then MsgBox "Сначала выделите диаграмму!" Exit Sub End If Set c = ActiveChart For j = 1 To c.SeriesCollection.Count f = c.SeriesCollection(j).Formula m = Split(f, ",") Set r = Range(m(2)) For i = 1 To r.Cells.Count c.SeriesCollection(j).Points(i).Format.Fill.ForeColor.RGB = _ r.Cells(i).Interior.Color Next i Next j End Sub  

Agora você pode fechar o Visual Basic e retornar ao Excel. Usar a macro criada é muito simples. Selecione o gráfico (área do gráfico, não área do gráfico, grade ou colunas!):

e execute nossa macro com o botão Macros aba revelador (Desenvolvedor — Macros) ou com um atalho de teclado Alt + F8. Na mesma janela, em caso de uso frequente, você pode atribuir um atalho de teclado à macro usando o botão parâmetros (Opções).

PS

O único problema é a impossibilidade de usar uma função semelhante para os casos em que a cor é atribuída às células dos dados de origem usando regras de formatação condicional. Infelizmente, o Visual Basic não possui uma ferramenta interna para ler essas cores. Existem, é claro, certas “muletas”, mas elas não funcionam para todos os casos e nem em todas as versões.

  • O que são macros, como usá-las, onde inserir código de macro no Visual Basic
  • Formatação Condicional no Excel 2007-2013
  • O que há de novo em gráficos no Excel 2013

Deixe um comentário