在 Excel 中创建多步骤 FILTER 动态数组函数

Creating a Multi-Step FILTER Dynamic Array Function in Excel

提问人:John63 提问时间:11/9/2023 最后编辑:Mayukh BhattacharyaJohn63 更新时间:11/10/2023 访问量:54

问:

我有一个电子表格,里面有五个 1 月的条目和 5 个 2 月的条目。

A列:日期 B栏:销售人员姓名 C栏:销售人员当月的销售额

日期 销售人员姓名 销售人员的销售金额
1/31/2023 500
1/31/2023 法案 200
1/31/2023 提姆 100
1/31/2023 400
1/31/2023 鲍勃 300
2/28/2023 40
2/28/2023 法案 20
2/28/2023 提姆 10
2/28/2023 30
2/28/2023 鲍勃 50

期望结果(不按任何特定顺序排序): 鲍勃 安 李

我想显示最近一个月销售额最高的三个人,并希望在新月份的数据可用时附加这些数据。

我尝试使用下面的 FILTER 动态数组公式,但注意到我的条件是相互排斥的,因为三个最大的值都在 1 月,但我强制它只查看 2 月的数据。

=FILTER(B2:B100,A2:A100=MAX(A2:A100)*(C2:C100=LARGE(C2:C100,3)))

我相信我需要执行多步过滤器,但不确定这在单个方程式中是否可行。第一步是让 FILTER 只包括最近一个月,第二步是过滤三个最大的销售数字。

对非 VBA 解决方案有什么建议吗?

数组 过滤器 excel-formula 动态

评论

0赞 Mayukh Bhattacharya 11/9/2023
尝试使用这个:=CHOOSECOLS(TAKE(SORT(Salestbl,{1,3},{-1,-1}),3),2)

答:

1赞 Mayukh Bhattacharya 11/9/2023 #1

请尝试使用以下公式:

enter image description here


• 细胞中使用的配方E2

=CHOOSECOLS(TAKE(SORT(Salestbl,{1,3},{-1,-1}),3),2)

  • 上面的公式首先按降序对日期进行排序,
  • 接下来,它按上述相同的顺序对销售价格进行排序,
  • 并拿销售额最高的前 3 个人。
  • 最后,仅提取销售人员的姓名。

测试用例:

enter image description here


或者,按照 JvdV Sir 的评论进行操作。

enter image description here


• 细胞中使用的配方E2

=TAKE(SORTBY(Salestbl[Sales Person''s Name],Salestbl[Date],-1,Salestbl[Sales Person''s Sales Amount],-1),3)

上面的公式基本上是Sir给出的

=TAKE(SORTBY(B2:B11,A2:A11,-1,C2:C11,-1),3)

我使用了aka,所以当你添加新数据时,它会自动拾取数据范围。Structured ReferencesTables


评论

1赞 JvdV 11/9/2023
=TAKE(SORTBY(B2:B11,A2:A11,-1,C2:C11,-1),3)
1赞 Mayukh Bhattacharya 11/9/2023
哦,哇@JvdV先生,再次非常感谢您,先生!
1赞 John63 11/10/2023
感谢你们俩的评论和帮助。这两种方法都奏效了,我从中吸取了教训。每种方法的一个共同点是使用 TAKE 函数。我没有意识到它,但会把它添加到我的工具箱中。
0赞 Mayukh Bhattacharya 11/10/2023
@John63还有一个函数,你需要看到它,它叫做 DROP() 共享,因为你不知道,还有一些你应该看看的,这里是一个完整的列表New_Functions
1赞 John63 11/14/2023
@mayukh-bhattacharya - 感谢您提供更多信息!我一直在使用您提到的链接中的几个新函数,但我对数组操作公式的关注还不够。