如果Excel工作表的某區(qū)域中包含不同的底紋顏色,我們可以用一個(gè)自定義函數(shù)對(duì)該區(qū)域按指定的單元格顏色進(jìn)行計(jì)數(shù)或求和。方法是: 1.按Alt+F11,打開(kāi)VBA編輯器。 2.單擊菜單“插入→模塊”,將插入名稱為“模塊1”的模塊,在右側(cè)的代碼窗口中輸入下列代碼: Function SumByColor(Ref_color As Range, Sum_range As Range) Application.Volatile Dim iCol As Integer Dim rCell As Range iCol = Ref_color.Interior.ColorIndex For Each rCell In Sum_range If iCol = rCell.Interior.ColorIndex Then SumByColor = SumByColor + rCell.Value End If Next rCell End Function
Function CountByColor(Ref_color As Range, CountRange As Range) Application.Volatile Dim iCol As Integer Dim rCell As Range iCol = Ref_color.Interior.ColorIndex For Each rCell In CountRange If iCol = rCell.Interior.ColorIndex Then CountByColor = CountByColor + 1 End If Next rCell End Function
上述兩個(gè)自定義函數(shù),一個(gè)是SumByColor,可以對(duì)區(qū)域按指定單元格的顏色求和。另一個(gè)是CountByColor,可以統(tǒng)計(jì)區(qū)域中某種顏色的個(gè)數(shù)。這兩個(gè)自定義函數(shù)都有兩個(gè)參數(shù),前一個(gè)參數(shù)指定包含某種顏色的單元格,后一個(gè)參數(shù)為求和或計(jì)數(shù)區(qū)域。 3.關(guān)閉VBA編輯器。 使用方法:假如要求和或計(jì)數(shù)的區(qū)域在A1:B10區(qū)域中。 求出該區(qū)域中單元格底紋顏色為紅色的所有單元格數(shù)值之和,在單元格中輸入公式: =sumByColor(A1,A1:B10) 求出該區(qū)域中單元格底紋顏色為紅色的所有單元格的個(gè)數(shù),在單元格中輸入公式: =CountByColor(A1,A1:B10)
按字求顏色 在Excel的內(nèi)建功能, 內(nèi)建函數(shù)中, 應(yīng)沒(méi)有針對(duì)顏色而自動(dòng)計(jì)算的方法。 故可能是唯一辦法- VBA自定義函數(shù) 我剛寫(xiě)了一個(gè)簡(jiǎn)單的VBA,絕對(duì)可以做到你的要求 Function COLORSUM(xx As Range, yy As Range) As Double y = yy.Font.ColorIndex For Each x In xx If x.Font.ColorIndex = y Then xxx = xxx + x.Value End If Next COLORSUM = xxx End Function 假設(shè)你的數(shù)字是在A1:A100 而A2的數(shù)字顏色是作為自動(dòng)求和的識(shí)別 只要將上述VBA貼在模塊上, COLORSUM函數(shù)便可以使用 輸入公式=COLORSUM(A1:A100,A2) 便會(huì)所有與A2相同顏色的數(shù)字, 自動(dòng)求和
|