天天看點

EXCEL中用自定義函數實作按顔色求和

EXCEL中用自定義函數按顔色求和

EXCEL中用自定義函數實作按顔色求和

本期主要分享在 EXCEL 中用自定義函數實作按顔色求和以及按顔色條件求和。如上圖所示,可以按對應顔色求和,也可以實作按對應顔色以及條件的求和。(本期教程以上圖為執行個體)

1、插入子產品:打開excel,按Alt+F11打開VBA視窗。滑鼠右鍵單擊空白處插入子產品。(如下圖所示)。

EXCEL中用自定義函數實作按顔色求和

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)”

EXCEL中用自定義函數實作按顔色求和

2.2 函數解釋: YS(顔色對象,求和區域) 即計算在B2:J8區域内顔色與B11單元格相同的所有數字的和。

EXCEL中用自定義函數實作按顔色求和

3、按對應顔色的條件求和: 上面介紹的是在標明區域内按顔色求和,下面接着介紹按條件求和;即在標明區域内(B2:J8),顔色為E10單元格顔色且名字為E10内容(567w)所在行的數字總和。(如下圖所示)

EXCEL中用自定義函數實作按顔色求和

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兩個值。(如下圖所示)

EXCEL中用自定義函數實作按顔色求和

3.2.1 輸入“0”則既要滿足(B10)單元格的顔色和類容後再對應行求和。輸入“1”則隻對區域内滿足顔色條件的單元格求和。(如下圖所示。)

EXCEL中用自定義函數實作按顔色求和

由于時間限制,本次介紹就分享到這裡。如有疑問可留言讨論!

繼續閱讀