如何将过滤后的范围传递给 Excel 中的其他函数?

How to pass a filtered range to other functions in Excel?

假设我想找出每天的平均通话次数。通常,我可以对下面的 table 使用公式 =COUNT(A2:A15)/SUM(1/(COUNTIF(A2:A15,A2:A15))),但是如果我想找到特定人(例如 George)的平均值,我将如何通过上述公式中的过滤范围?

我曾尝试使用 =FILTER(A2:A15,B2:B15="George"),但这会出错,因为根据我的理解,=COUNT() 接受范围,而不是数组,=FILTER() returns。

Call Date Rep Name
2022-01-02 George
2022-01-02 George
2022-01-02 Katie
2022-01-04 Craig
2022-01-04 George
2022-01-05 George
2022-01-05 Craig
2022-01-05 George
2022-01-05 George
2022-01-09 Katie
2022-01-14 George
2022-01-14 George
2022-01-15 Katie
2022-01-15 George

您可以使用 LET-Formula 重建单个步骤:

=LET(dataUnique,UNIQUE(tblData[Call Date]),
countPerDate,COUNTIFS(tblData[Call Date],dataUnique,tblData[Rep Name],RepName),
AVERAGE(FILTER(countPerDate,countPerDate<>0)))

我正在使用名为 tblData 的 table。此外,公式引用 F3 命名为 RepName.

你可以试试:

E1中的公式:

=AVERAGE(BYROW(UNIQUE(FILTER(A2:A15,B2:B15=D1)),LAMBDA(a,COUNTIFS(A2:A15,a,B2:B15,D1))))

请注意,从分析的角度来看,当 George 的调用次数为零时,忽略第 9 个可能感觉很奇怪。如果你想把这个包括在你的平均值中,将上面的更改为:

=AVERAGE(BYROW(UNIQUE(A2:A15),LAMBDA(a,COUNTIFS(A2:A15,a,B2:B15,D1))))