Bagaimana cara melapiskan peta panas format bersyarat yang didasarkan pada satu set nilai pada set nilai yang berbeda di Excel 2013

0

Saya ingin satu sel diformat dengan warna gradien berdasarkan nilai di sel lain. Misalnya, saya ingin sel A1 dan A2 yang akan disorot berdasarkan nilai dalam B1 dan B2. Jika saya memilih penyorotan merah ke kuning ke hijau (mis., "Skala warna" di bawah "Pemformatan Bersyarat") di Excel, saya akan berharap bahwa jika B1 = 1 dan B2 = 2 kemudian A1 akan disorot merah dan A2 akan disorot hijau. Pada dasarnya, saya ingin membangun peta panas dengan satu set nilai dalam sebuah tabel dan menempatkannya pada peta panas di atas tabel nilai yang terpisah dan berukuran sama.

Saya telah melihat berbagai pos yang membahas cara mendapatkan sel yang diformat dengan cara yang tidak dinamis berdasarkan sel lain (mis., sini dan sini ) tetapi saya tidak dapat menemukan deskripsi tentang bagaimana melakukan apa yang ingin saya lakukan di sini. Apa itu mungkin?

Jika tidak memungkinkan untuk mengatur formula untuk ini, saya akan dengan senang hati menyalin warna skala warna B1:B2 ke A1:A2, tapi aku juga tidak bisa menemukan cara untuk melakukan itu.

DirtStats
sumber

Jawaban:

0

Ini akan berfungsi saat Anda menempelkannya Developer -> Visual Basic, di bawah lembar tempat Anda bekerja. Pastikan untuk mengubah rentang.

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

Sebagian besar ini harus cukup jelas, jangan ragu untuk berkomentar jika Anda memiliki pertanyaan.

somebody
sumber