要测试的 COUNTIFS 值是一个数组
COUNTIFS with value to be tested being an array
我正在尝试根据要测试的单元格值(列样本数据)是否出现在值数组(Excel 样本列)中来执行 COUNTIFS 函数。
显然做 COUNTIFS 很容易:
=COUNTIFS( $E:$E,A6 ,$F:$F,"<"&EOMONTH($B,1), $F:$F, ">="&DATE(YEAR(B),MONTH(B),1), $G:$G, "<12")
其中函数中的列 E 等于一个值,在本例中为 a6。但是我遇到问题的地方是测试检查是否在一个值数组中,即在这个例子中单元格 a5 和 a6.
有人有什么想法吗? (除了明显的单独计数外,数组中的值远远超过两个!)
https://docs.google.com/spreadsheets/d/1QYbXwIdFEdjXqlLjF0b0jSusZNuqOMaUKVKZrjR4wko/edit?usp=sharing
我找不到使用几种不同组合的解决方案,我知道的大多数功能都需要一个参考单元格。
所以VBA版本:
Function ARRAYMATCHS(RefRng As Range, DataRng As Range, DateRng As Range, RefMonth As String, MonthsRng As Range, Months As Integer)
Dim x As Integer
Dim c As Integer
x = 0
c = 0
For Each cell In DataRng
c = c + 1
If Not IsError(Application.Match(cell.Value, RefRng, 0)) Then
If (MonthsRng(c, 1) > Months) Then
If (Month(DateRng(c, 1)) = RefMonth) Then
x = x + 1
End If
End If
End If
Next cell
ARRAYMATCHS = x
End Function
效果很好,但我对可以完成此操作的任何本机函数组合感兴趣!
我正在尝试根据要测试的单元格值(列样本数据)是否出现在值数组(Excel 样本列)中来执行 COUNTIFS 函数。
显然做 COUNTIFS 很容易:
=COUNTIFS( $E:$E,A6 ,$F:$F,"<"&EOMONTH($B,1), $F:$F, ">="&DATE(YEAR(B),MONTH(B),1), $G:$G, "<12")
其中函数中的列 E 等于一个值,在本例中为 a6。但是我遇到问题的地方是测试检查是否在一个值数组中,即在这个例子中单元格 a5 和 a6.
有人有什么想法吗? (除了明显的单独计数外,数组中的值远远超过两个!)
https://docs.google.com/spreadsheets/d/1QYbXwIdFEdjXqlLjF0b0jSusZNuqOMaUKVKZrjR4wko/edit?usp=sharing
我找不到使用几种不同组合的解决方案,我知道的大多数功能都需要一个参考单元格。
所以VBA版本:
Function ARRAYMATCHS(RefRng As Range, DataRng As Range, DateRng As Range, RefMonth As String, MonthsRng As Range, Months As Integer)
Dim x As Integer
Dim c As Integer
x = 0
c = 0
For Each cell In DataRng
c = c + 1
If Not IsError(Application.Match(cell.Value, RefRng, 0)) Then
If (MonthsRng(c, 1) > Months) Then
If (Month(DateRng(c, 1)) = RefMonth) Then
x = x + 1
End If
End If
End If
Next cell
ARRAYMATCHS = x
End Function
效果很好,但我对可以完成此操作的任何本机函数组合感兴趣!