EXCEL中用自定義函數按顔色求和
本期主要分享在 EXCEL 中用自定義函數實作按顔色求和以及按顔色條件求和。如上圖所示,可以按對應顔色求和,也可以實作按對應顔色以及條件的求和。(本期教程以上圖為執行個體)
1、插入子產品:打開excel,按Alt+F11打開VBA視窗。滑鼠右鍵單擊空白處插入子產品。(如下圖所示)。
2、編寫按顔色求和的代碼:在子產品1輸入如下代碼:
Function YS(顔色 As Range, 區域 As Range)
Dim x As Range
s = 顔色.Interior.Color
For Each x In 區域
If x.Interior.Color = s Then
n = n + x.Value
End If
Next
YS = n
End Function
2.1 輸入自定義公式:在C10單元格輸入剛剛的自定義公式“=YS(B10,$B$2:$J$8)”
2.2 函數解釋: YS(顔色對象,求和區域) 即計算在B2:J8區域内顔色與B11單元格相同的所有數字的和。
3、按對應顔色的條件求和: 上面介紹的是在標明區域内按顔色求和,下面接着介紹按條件求和;即在標明區域内(B2:J8),顔色為E10單元格顔色且名字為E10内容(567w)所在行的數字總和。(如下圖所示)
3.1 在子產品中建立(SUMC)函數:在子產品中輸入如下代碼
Function SUMC(對象 As Range, 區域 As Range, 類型 As Integer)
Dim x As Range
m = 類型
s = 對象.Interior.Color
a = 對象.Value
i = 區域.Row
j = 區域.Row + 區域.Rows.Count - 1
c = 區域.Column + 區域.Columns.Count - 1
If m = 0 Then
For k = i To j
If Cells(k, 區域.Column) = a Then
b = k
k = j
End If
Next
For Each x In Range(Cells(b, 區域.Column), Cells(b, c))
If x.Interior.Color = s Then
n = n + x.Value
End If
Next
SUMC = n
End If
If m = 1 Then
For Each x In 區域
If x.Interior.Color = s Then
n = n + x.Value
End If
Next
SUMC = n
End If
End Function
3.2 函數解釋:SUM(對象,求和區域,求和類型)對象包含顔色對象和條件内容的對象(B10),求和區域為(B2:J8)。求和類型為1,0兩個值。(如下圖所示)
3.2.1 輸入“0”則既要滿足(B10)單元格的顔色和類容後再對應行求和。輸入“1”則隻對區域内滿足顔色條件的單元格求和。(如下圖所示。)
由于時間限制,本次介紹就分享到這裡。如有疑問可留言讨論!