如何在 Excel 2013 中将基于一组值的条件格式热图叠加到另一组值上

如何在 Excel 2013 中将基于一组值的条件格式热图叠加到另一组值上

我希望一个单元格根据另一个单元格中的值采用渐变颜色进行格式化。例如,我希望单元格A1和根据和A2中的值突出显示。如果我在 Excel 中选择从红色到黄色再到绿色的突出显示(即“条件格式”下的“颜色刻度”),我会期望 if和then将以红色突出显示,而将以绿色突出显示。本质上,我想用表中的一组值构建热图,并将该热图叠加在一个单独的、大小相同的值表上。B1B2B1 = 1B2 = 2A1A2

我见过各种各样的帖子讨论如何基于另一个单元格以非动态方式格式化一个单元格(例如,这里这里),但我找不到关于如何做我想做的事情的描述。可能吗?

如果无法为此建立公式,我会很乐意将颜色比例颜色复制到B1:B2A1:A2但我也找不到这样做的方法。

答案1

当您将其粘贴到Developer -> Visual Basic您正在工作的表下时,它应该会起作用。确保更改范围。

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

其中大部分应该是相当不言自明的,如果您有任何疑问,请随时发表评论。

相关内容