簡體   English   中英

Excel數組在多個條件下計數頻率

[英]Excel array count frequencies with multiple conditions

示例數據顯示在鏈接中

https://docs.google.com/spreadsheets/d/1HXhT76CwDLs7XVPoU8uqx4RVrKOb6OOcox65l3i7LRY/edit#gid=0

如果滿足條件,則期望的結果是“ vcount”,我想使用sumproduct函數對頻率進行計數:

①vyr> pyr

②v1和v2都顯示p1,p2,p3列(順序無關緊要)

= SUMPRODUCT(-($ G2:$ I5 = A2),-($ G2:$ I5 = B2),-(C2> $ J2:$ J5))然后按Ctrl + Shift + Enter

實際上,實際數據包含大約p1至p20列,因此我使用CSE,但似乎不起作用。

如上所述,我認為VBA是唯一的解決方案。 將其放在工作簿附帶的模塊中。

Function vcount(v1 As Range, v2 As Range, vyr As Range, pRng As Range, pyr As Range) As Long

    vcount = -1

    Dim pArr As Variant
    pArr = pRng.Value

    Dim pyrArr As Variant
    pyrArr = pyr.Value

    If UBound(pArr, 1) <> UBound(pyrArr, 1) Then Exit Function

    Dim temp As Long
    temp = 0

    Dim i As Long
    For i = LBound(pArr, 1) To UBound(pArr, 1)
        Dim v1B As Boolean
        v1B = False

        Dim v2B As Boolean
        v2B = False

        Dim j As Long
        For j = LBound(pArr, 2) To UBound(pArr, 2)
            If pArr(i, j) = v1 Then v1B = True
            If pArr(i, j) = v2 Then v2B = True
        Next j
        If v1B And v2B And pyrArr(i, 1) < vyr Then temp = temp + 1
    Next i

    vcount = temp
End Function

然后,您可以將其稱為普通公式:

=vcount(A2,B2,C2,$G$2:$I$5,$J$2:$J$5)

在此處輸入圖片說明

暫無
暫無

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

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