TransWikia.com

como fazer um gráfico em vba excel em forma de metas?

Stack Overflow em Português Asked by Three D.P on December 4, 2021

preciso fazer um gráfico em que as barras mudem de cor dependendo de seu valor!
exemplo: menor que mil vermelho, entre mil e dois mil amarelo e acima de mil verde segue imagem inserir a descrição da imagem aqui

One Answer

VBA

Um código simples de ser utilizado é este, onde o gráfico deve ser selecionado e depois o código é executado:

Sub ColorByValue()
'https://peltiertech.com/vba-conditional-formatting-of-charts-by-value/
'http://www.clearlyandsimply.com/clearly_and_simply/2011/08/color-coded-bar-charts-with-microsoft-excel.html

Dim rPatterns As Range
Dim iPattern As Long
Dim vPatterns As Variant
Dim iPoint As Long
Dim vValues As Variant
Dim rValue As Range

Set rPatterns = ActiveSheet.Range("A1:A4")
vPatterns = rPatterns.Value
With ActiveChart.SeriesCollection(1)
    vValues = .Values
        For j = LBound(vValues) To UBound(vValues)
        Debug.Print vValues(j)
        Next j
    For iPoint = 1 To UBound(vValues)
        For iPattern = 1 To UBound(vPatterns)
            If vValues(iPoint) <= vPatterns(iPattern, 1) Then
                .Points(iPoint).Format.Fill.ForeColor.RGB = _
                                                          rPatterns.Cells(iPattern, 1).Interior.Color
                Exit For
            End If
        Next
    Next
End With
End Sub

Em que os valores de limite para colorir o gráfico são colocados na coluna A da planilha, exemplo: Limites do gráfico e esta parte do código alterada para o intervalo usado: Set rPatterns = ActiveSheet.Range("A1:A4")

Cada célula com o valor do limite deve possuir a cor do interior que deve ser usada.

E o resultado:

Resultado

Observação:

Se ocorrer algum erro, os dados devem possuir a coluna invertida:

+------+----+
| 2700 |  1 |
| 1100 |  2 |
| 3000 |  3 |
| 2100 |  4 |
| 3000 |  5 |
|  900 |  6 |
| 2900 |  7 |
|  600 |  8 |
|  300 |  9 |
| 1100 | 10 |
| 2000 | 11 |
| 2300 | 12 |
| 1700 | 13 |
| 2700 | 14 |
|    0 | 15 |
+------+----+

Ou esta parte do código mudada para: With ActiveChart.SeriesCollection(2)

Excel Fórmula

Não é necessário utilizar o VBA para realizar isto, pode ser feito somente com fórmulas. Pois com VBA é um pouco mais complexo e isto é feito mais rapidamente e simples com as fórmulas.

Por exemplo, você possui esta tabela com valores:

+------+-------+
|   A  |   B   |
+------+-------+
|    1 |  2700 |
|    2 |  1100 |
|    3 |  3000 |
|    4 |  2100 |
|    5 |  3000 |
|    6 |   900 |
|    7 |  2900 |
|    8 |   600 |
|    9 |   300 |
|   10 |  1100 |
|   11 |  2000 |
|   12 |  2300 |
|   13 |  1700 |
|   14 |  2700 |
|   15 |     0 |
+------+-------+

E deseja três intervalos, um para cada cor:

  • Vermelho: se a coluna B for menor do que 1000.
  • Amarelo: se a coluna B for maior ou igual a 1000 e menor do que 2000.
  • Verde: se a coluna B for maior ou igual a 2000.

Portanto, três colunas serão utilizadas ao lado dos valores da coluna B para verificar quais valores estão dentro destes intervalos e criar uma série de dados para cada coluna nova.

As formulas são as seguintes:

  • Para o vermelho: =SE(B2<1000;B2;"")
  • Para o amarelo: =SE(E(B2>=1000;B2<2000);B2;"")
  • Para o verde: =SE(B2>=2000;B2;"")

Em que se estiver dentro do intervalo, o valor é inserido na célula, caso contrário é deixado o valor em branco "".

Resultando na seguinte tabela:

+----+------+----------+---------+-------+
| A  |  B   | Vermelho | Amarelo | Verde |
+----+------+----------+---------+-------+
|  1 | 2700 |          |         |  2700 |
|  2 | 1100 |          |    1100 |       |
|  3 | 3000 |          |         |  3000 |
|  4 | 2100 |          |         |  2100 |
|  5 | 3000 |          |         |  3000 |
|  6 |  900 |      900 |         |       |
|  7 | 2900 |          |         |  2900 |
|  8 |  600 |      600 |         |       |
|  9 |  300 |      300 |         |       |
| 10 | 1100 |          |    1100 |       |
| 11 | 2000 |          |         |  2000 |
| 12 | 2300 |          |         |  2300 |
| 13 | 1700 |          |    1700 |       |
| 14 | 2700 |          |         |  2700 |
| 15 |    0 |        0 |         |       |
+----+------+----------+---------+-------+

Com isto, um gráfico pode ser inserido em: Inserir > Gráfico Coluna Agrupada e depois ir em Selecionar Dados.

Cada coluna nova deverá ser adicionada como uma nova série de dados:

Adicionar dados

Os dados adicionados de cada série, são os valores de cada coluna:

Valores Série

Por fim, cada série de dados do gráfico deve ser selecionada e sua cor trocada:

Trocar cor da série de dados

Answered by danieltakeshi on December 4, 2021

Add your own answers!

Ask a Question

Get help from others!

© 2024 TransWikia.com. All rights reserved. Sites we Love: PCI Database, UKBizDB, Menu Kuliner, Sharing RPP