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