Excel 巨集會依色彩對儲存格進行計數,且不會將合併的儲存格計數為超過 1

Excel 巨集會依色彩對儲存格進行計數,且不會將合併的儲存格計數為超過 1

如何編寫一個巨集來遍歷一系列單元格並按顏色對內容進行計數,而不計算一組合併單元格中的每個單獨單元格。在此輸入影像描述

例如,在圖片中,我想要一個宏返回2 個黃色和3 個綠色的計數,但我編寫的宏返回8 個黃色的計數,因為它將7 個合併的黃色單元格作為個體進行計數.. ....

答案1

啊。此範例中有兩種您應該避免的不良做法:用顏色編碼單元格來傳輸含義,以及合併單元格。不。只是不要。使用不同的欄位來確定狀態或類別值,然後您可以使用條件格式根據該狀態或類別值設定儲存格顏色。您可以使用簡單的工作表公式來執行每個狀態或類別的計數。

細胞合併引起的頭痛比阿斯匹靈還多。只是不要合併單元格。它們會導致選擇問題,正如您所注意到的,也會導致 VBA 中的邏輯問題。不要合併,並使用工作表公式進行簡單的計數。合併單元格的「需要」始終可以透過適當的資料架構和工作表結構來克服。

答案2

我完全同意@泰林的警告,但是如果有一些非常合理的理由需要這樣的解決方案,例如,您可以使用這樣的函數。

Function ColorCount(rng As Range, pat) As Long
    Dim cell As Range, cnt As Long
    Select Case TypeName(pat)
        Case "Range": pat = pat.Interior.Color
        Case "String": pat = Range(pat).Interior.Color
    End Select
    For Each cell In rng
        If cell.Address = cell.MergeArea(1).Address And _
            cell.Interior.Color = pat Then
            cnt = cnt + 1
        End If
    Next cell
    ColorCount = cnt
End Function

此函數有兩個參數:第一個是要檢查的儲存格範圍,第二個是顏色模式(可以是參考、位址文字或數字顏色值)。單元格的顏色來自基本格式,無條件。

顏色數

相關內容