Pada materi sebelumnya sudah saya buatkan User Defined functions (UDF) untuk menghitung Cells berdasarkan Warnanya. Baik itu untuk SUM Warna ataupun Count Warna.
Kedua UDF ini hanya bisa bekerja untuk warna-warna yang ditambahkan secara manual, sedangkan untuk warna yang ditambahkan melalui conditional Formating hasilnya akan 0.
Ini terjadi karena ada perbedaan property warna yang digunakan.
Cells yang diberi warna secara manual berada pada Object.Interior.color
sedangkan Cells yang diberi warna melalui conditional formating berada di Object.Displayformat.Interior.color
Sehingga script untuk menghitung atau menjumlahkan (SUM) berdasarkan warna dari Conditional Formating bisa dibuat seperti dibawah ini.
Function HitungWarnaCF(ByVal SumRange As Range, ByVal Rng As Range) As Double Dim IsiCell As Range For Each IsiCell In SumRange warna = Evaluate("WarnaCF(""" & IsiCell.Address & """)") If warna = Rng.Interior.ColorIndex Then HitungWarnaCF = HitungWarnaCF + IsiCell.Value End If Next End Function Function WarnaCF(Rng As String) WarnaCF = Range(Rng).DisplayFormat.Interior.ColorIndex End Function
Sedangkan jika ingin mencacah (COUNT) berdasarkan warna dari Conditional Formating, scriptnya bisa dibuat seperti dibawah ini
Function HitungWarnaCF(ByVal SumRange As Range, ByVal Rng As Range) As Double Dim IsiCell As Range For Each IsiCell In SumRange warna = Evaluate("WarnaCF(""" & IsiCell.Address & """)") If warna = Rng.Interior.ColorIndex Then HitungWarnaCF = HitungWarnaCF + 1 End If Next End Function Function WarnaCF(Rng As String) WarnaCF = Range(Rng).DisplayFormat.Interior.ColorIndex End Function
Bagi yang belum mengetahui cara menggunakan UDF, bisa dibaca di materi Apa Itu User-Defined Function (UDF) – vba.co.id
Sebagai catatan, untuk menghitung warna dari Conditional Formating selain menggunakan UDF (VBA) , jika memungkinkan, bisa juga menggunakan SUMIF atau COUNTIF dimana kriteria yang dimasukan kedalam rumus adalah kriteria yang sama yang digunakan dalam Conditional Formating.