簡體   English   中英

根據細胞的顏色和其他標准對細胞進行計數

[英]Counting cells based on their colour and other criteria

我正在使用Excel中的一些排班功能,其依據是我們的工作人員數量有限,涉及多個站點的班次

名冊沖突-Joe Bloggs 4 @ 2014年5月21日的兩個站點

在規划花名冊時,我們使用一組簡單的彩色單元格來填充人們白天上班,夜班,不安排名冊,年假等情況。鑒於我們計划有多個地點,我需要快速公式,用於檢查該個人是否已在多個地點同時輪班(顯然不可能),因此我們可以輕松地確定計划階段何時存在沖突。 公式需要返回TRUE或值(例如,count> 1表示該人的一項分配),以便我可以使用條件格式或VBA突出顯示單元格/行並引起對沖突的注意

我嘗試做的是對一些VBA方法着色的單元格進行求和/計數:

Function ISFILLED(MyCell As Range)
    If MyCell.Interior.colorIndex > 0 Then
        Result = True
    Else
        Result = False
    End If
    ISFILLED = Result
End Function

和/或:

Function ColorFunction(rColor As Range, rRange As Range, Optional SUM As Boolean)
    Dim rCell As Range
    Dim lCol As Long
    Dim vResult
    lCol = rColor.Interior.ColorIndex
    If SUM = True Then
        For Each rCell In rRange
            If rCell.Interior.ColorIndex = lCol Then
                vResult = WorksheetFunction.SUM(rCell, vResult)
            End If
        Next rCell
    Else
        For Each rCell In rRange
            If rCell.Interior.ColorIndex = lCol Then
                vResult = 1 + vResult
            End If
        Next rCell
    End If
    ColorFunction = vResult
End Function

兩者都可以正常工作,但是我無法將其與SUMIFS / COUNTIFS樣式功能結合使用,以僅在該人的姓名出現針對該分配的情況下才計算彩色單元格的數量。

如果您從名單中查看示例圖片,則可以看到2014年5月21日在站點1站點2上為Joe Bloggs 4分配了班次。 我所追求的基本上是,如果符合條件的個人名字與那些單元格相對,則對行中彩色單元格的數量進行計數 對於此示例,如果

=COUNTIFS(C8:AQ8, "Joe Bloggs 4", C12:AQ12, *Cell is Coloured*)

單元格的顏色無關緊要(因此,第一個功能為ISFILLED更好,因為我不需要填充參考單元格),因為它只是一種感覺檢查。

感謝所有幫助/指針,因為它卡住了!

您將無法為此使用SUMIFSCOUNTIFS 您需要遵循以下原則:

Function IsFilledArr(rng As Range) As Variant
    Dim i As Long, j As Long
    Dim v As Variant
    ReDim v(1 To rng.Rows.Count, 1 To rng.Columns.Count)
    For i = 1 To rng.Rows.Count
        For j = 1 To rng.Columns.Count
            v(i, j) = rng.Cells(i, j).Interior.ColorIndex > 0
        Next j
    Next i
    IsFilledArr = v
End Function

此UDF可以稱為數組公式,即選擇一個單元格范圍,在左上角的單元格中鍵入公式(同時仍選擇整個范圍),然后按Ctrl - Shift - Enter 然后,您可以對返回的數組進行操作,例如對它SUM

用法示例:

在此處輸入圖片說明

其中--雙負布爾值TRUE / FALSE的值(未累加)轉換成1和0(這是)。

我將讓您對其進行調整以適合您的特定要求。

編輯:您想要更多:

計算C列中的填充單元數,其中B列中有一個相鄰的填充單元-在這種情況下,C4是唯一滿足該條件的單元。

這個公式可以解決問題(作為數組公式輸入):

=SUM(IF(IsFilledArr(B2:B7)+IsFilledArr(C2:C7)>1,1))

注意使用SUM(IF(...,1))模仿COUNT 處理數組公式時,這就是這樣做的方法。

在此處閱讀更多信息: http : //www.cpearson.com/excel/ArrayFormulas.aspx

您要求幫助/指針; 希望這足以使您擺脫困境。 您可以采用這種方法來滿足您的確切需求。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM