Renge Göre Toplam - VBA Kodu Örnekleri

Aşağıdaki işlev, belirli bir aralıktaki belirli bir renk olan tüm hücrelerin toplam değerini hesaplar:

Ne yazık ki, hücre rengine göre toplanacak SUMIF İşlevi yoktur. Renge göre toplamak istiyorsanız, VBA içinde bir işlev oluşturmanız gerekecektir.
Bu kodu kullanmak için: Visual Basic Düzenleyicisini (Alt + F11) açın, Yeni bir modül ekleyin (Ekle > Modül) ve istediğiniz kodu kopyalayıp modüle yapıştırın.

Renge Göre Toplama İşlevi

1234567891011121314151617181920 İşlev Color_By_Numbers(Aralık olarak Color_Range, Tamsayı olarak Color_Index) Double olarak' Dim Color_By_Numbers Çift OlarakKarartma Hücresi'Aralık içindeki hücrelere bakacak ve eğer'renk iç özelliği, gerekli hücre rengiyle eşleşir'o zaman toplanacak'Döngü aralığıColor_Range'daki Her Hücre İçinEğer (Cell.Interior.ColorIndex = Color_Index) O zamanColor_By_Numbers = Color_By_Numbers + Cell.ValueBitirSonraki HücreBitiş İşlevi

Bu aslında “renge göre toplama”dır - yani Excel'in 56 renk paletini biliyorsanız ve örneğin 4. rengin açık yeşil olduğunu biliyorsanız, aşağıdaki çağrıyı yapın:

Color_By_Numbers(“A1:P20”,4)

A1:P20 aralığındaki açık yeşil renkli tüm hücreler için değerleri toplayacaktır.

Fonksiyonu kullanmayı kolaylaştırmak için, aşağıdaki alt program, excel'in 56 renginin her biri için toplam değeri hesaplayacaktır. Ayrıca tüm damağı verir, böylece her bir rengin indeks numarasını görmek kolaydır.

Alt program sayfa 1'de çağrılır ve aralığa bakar

12345678910111213141516171819202122 Özel Alt KomutDüğmesi1_Click()'Her renge bakacak ve özet değerler tablosu üretecekA1 hücresindeki sayfa 1'de ve aşağı doğruCurrent_Color_Number As Integer DimDim Color_Toplam Çift OlarakCurrent_Color_Number = 1 - 56 içinColor_Total = Color_By_Numbers(Sayfalar("Sayfa2").Range("a11:aa64"), Current_Color_Number)Worksheets("Sayfa1").Range("A1").Offset(Current_Color_Number, 0) = Current_Color_NumberWorksheets("Sheet1").Range("A1").Offset(Current_Color_Number, 0).Interior.ColorIndex = Current_Color_NumberColor_Total 0# iseWorksheets("Sheet1").Range("a1").Offset(Current_Color_Number, 1).Value = Color_TotalBitirSonraki Current_Color_NumberAlt Bitiş

XLS dosyasını indirmek için lütfen buraya tıklayın

Arkadaşlarınızla sayfasını paylaşan sitenin gelişimine yardımcı olacak

wave wave wave wave wave