我們通過條件格式或手工設置了單元格產生不同的顏色(背景色或前景色),接下來我們希望更進一步的操作或統計,例如:按照一定的顏色順序排序、相同顏色的單元格累加求和、或者計算某一顏色的單元格有多少個等。
關于排序,Excel2007版以后內置了按顏色排序的功能,這里不多說。下面探討如何根據顏色求和或計數。
解決思路:先得到顏色值,再利用相應的函數(SUMIFS,COUNTIFS)進行統計。
一、根據顏色取顏色值
通常有兩個解決辦法:利用GET.CELL函數,或自定義函數法。建議采用增加輔助列的方法,先計算出顏色代碼,再據此求和或計數。
1、GET.CELL 取單元格信息的宏表函數,關于這個函數的詳細參數大家百度吧。
需要注意的是這個函數不能在工作表單元格中直接使用!那怎么用呢?在名稱里。你要定義名稱:選中B2單元格,公式->定義名稱->起個名額如MyColor->引用位置里面輸入 =get.cell(38,Sheet1!A2),然后確定。
然后在B2輸入=MyColor,則就會返回A列同行單元格的背景色的顏色代碼,往下拉公式填充。
2、自定義函數法。進入VBA窗口,插入模塊,輸入以下代碼 :
'返回單元格的背景顏色代碼
Function GetColor(rng As Range) As Double
GetColor = rng.Interior.ColorIndex
End Function
然后就可以在單元格里像其它函數一樣使用這個GetColor函數了。
舉一個實例,如下圖,通過上述兩個方法可以分別得到顏色代碼。
二、用函數統計
求得顏色值之后,要想統計某個顏色的單元格之和或個數,利用sumifs函數和countifs函數,對顏色代碼進行計算即可。上圖中B20、C20、D20的公式分別為:
取顏色值公式:
B20 =GetColor(A20)
按顏色求和公式:
C20 =SUMIFS($C$2:$C$16,$C$2:$C$16,B20)
按顏色計數公式:
D20 =COUNTIFS($C$2:$C$16,B20)
至此,這類問題基本都能迎刃而解。
注意:細心的朋友可能會發(fā)現,對于同一個單元格,兩個函數算出的顏色值可能不一樣的。導致這個問題的原因可能是兩個函數能處理的顏色的多少是不同的,具體還沒仔細研究。
要很好的避免這個問題,推薦使用第二種自定義函數的方法來求顏色值。
德寶老師博客原文:https://blog.debao.name/excel_color.html?j=1