Como sobrepondo um mapa de calor formatado condicional com base em um conjunto de valores sobre um conjunto diferente de valores no Excel 2013

0

Gostaria que uma célula fosse formatada com uma cor gradiente com base no valor em outra célula. Por exemplo, gostaria que as células A1 e A2 fossem destacadas com base nos valores em B1 e B2 . Se eu escolher o realce vermelho para amarelo para verde (ou seja, "Balanças de cores" em "Formatação condicional") no Excel, esperaria que B1 = 1 e B2 = 2 , em seguida, A1 ficasse destacado vermelho e A2 ser destacado verde. Essencialmente, quero criar um mapa de calor com um conjunto de valores em uma tabela e sobrepor esse mapa de calor a uma tabela de valores separada e com o mesmo tamanho.

Eu tenho visto vários posts discutindo como obter um formato de célula não-dinâmico baseado em outra célula (por exemplo, aqui e aqui ) mas não consigo encontrar uma descrição de como fazer o que eu quero fazer aqui. É possível?

Se não for possível configurar uma fórmula para isso, ficarei feliz em copiar as cores em escala de cores em B1:B2 para A1:A2 , mas também não consigo encontrar uma maneira de fazer isso. / p>     

por DirtStats 31.07.2015 / 10:23

1 resposta

0

Isso deve funcionar quando você colá-lo em Developer -> Visual Basic , embaixo da planilha em que você está trabalhando. Lembre-se de alterar o intervalo.

Sub Worksheet_Change(ByVal Target As Range)
    Set Rng = Range("A1:B2")
    If Application.Intersect(rng1, rng2) Is Not Nothing Then
        Dim Min, Max, Index As Double
        Dim Red, Green As Integer
        Dim Cell As Range
        Dim Rng As Range
        Min = Minimum(Rng)
        Max = Maximum(Rng)
        For Each Cell In Rng
            Index = (Cell.Value - Min) / (Max - Min)
            Red = 255 * ListMin(1, 2 - 2 * Index)
            Green = 255 * ListMin(1, 2 * Index)
            Cell.Offset(RowOffset, ColumnOffset).Interior.Color = RGB(Red, Green, 0)
        Next Cell
    End If
End Sub
Function Maximum(Cells As Range)
    Maximum = Application.WorksheetFunction.Max(Cells)
End Function
Function Minimum(Cells As Range)
    Minimum = Application.WorksheetFunction.Min(Cells)
End Function
Function ListMax(ParamArray Values() As Variant)
    ListMax = Application.WorksheetFunction.Max(Values)
End Function
Function ListMin(ParamArray Values() As Variant)
    ListMin = Application.WorksheetFunction.Min(Values)
End Function

A maior parte disso deve ser bastante autoexplicativa, sinta-se à vontade para comentar se tiver alguma pergunta.

    
por 04.08.2015 / 14:50