前言|職場實例
Excel已經成為職場人士必備的技能。作為個人電腦普及以來用途最廣泛的辦公軟件之一,在很多公司,Excel已經完全成為了一種生産工具,無論何種行業,隻要需要和數據打交道,Excel幾乎是不二的選擇。
Excel中的公式功能是非常強大的,但是有些函數系統并不自帶,需要我們自己自定義設計生成。
比如下圖所示:
我們想要按背景填充顔色統計數據源中的數據個數和數據之和;以及按字體顔色統計數據源中的數據個數和數據之和。
但是通過普通的Excel可視化函數并不能實現這樣的操作。所以今天小編要向大家介紹用VBA代碼的方法自定義函數解決這樣的顔色統計。因為Excel本身是支持VBA的,用代碼,就可以對很多函數公式無法實現的功能,重新進行設計。
步驟|解決方案
首先,我們右擊工作表名稱标簽,點擊“查看代碼”命令。進入VBA編輯窗口界面。
點擊插入-模塊,将下面一段代碼複制粘貼到VBA模塊編輯窗口中。保存關閉。回到Excel主界面。
代碼如下:
Function CountByBGColor(Col As Range, CountRange As Range) '根據背景顔色計數
Application.Volatile
Dim iCell As Range
CountByBGColor = 0
For Each iCell In CountRange
If iCell.Interior.Color = Col.Interior.Color Then
CountByBGColor = CountByBGColor 1
End If
Next
End Function
Function SumByBGColor(Col As Range, SumRange As Range) '根據背景顔色求和
Application.Volatile
Dim iCell As Range
SumByBGColor = 0
For Each iCell In SumRange
If iCell.Interior.Color = Col.Interior.Color Then
SumByBGColor = SumByBGColor Application.WorksheetFunction.Sum(iCell)
End If
Next
End Function
Function CountByFontColor(Col As Range, CountRange As Range) '根據字體顔色色計數
Application.Volatile
Dim iCell As Range
CountByFontColor = 0
For Each iCell In CountRange
If iCell.Font.Color = Col.Font.Color Then
CountByFontColor = CountByFontColor 1
End If
Next
End Function
Function SumByFontColor(Col As Range, SumRange As Range) '根據字體顔色求和
Application.Volatile
Dim iCell As Range
SumByFontColor = 0
For Each iCell In SumRange
If iCell.Font.Color = Col.Font.Color Then
SumByFontColor = SumByFontColor Application.WorksheetFunction.Sum(iCell)
End If
Next
End Function
按背景填充顔色統計數據個數
我們在H2單元格輸入函數:
=CountByBGColor(G2,$B$2:$E$6)
向下填充函數
按背景填充顔色統計數據之和
我們在I2單元格輸入函數:
=SumByBGColor(G2,$B$2:$E$6)
向下填充函數
按字體顔色統計數據個數
我們在H9單元格輸入函數:
= CountByFontColor(G9,$B$9:$E$13)
向下填充函數
按字體顔色統計數據之和
我們在I9單元格輸入函數:
=SumByFontColor(G9,$B$9:$E$13)
向下填充函數
,
更多精彩资讯请关注tft每日頭條,我们将持续为您更新最新资讯!