按B、C列对A列划分排序的数组公式 [英] Array Formula to Rank Column A Partition by Column B And C

查看:10
本文介绍了按B、C列对A列划分排序的数组公式的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我正在尝试编写一个数组公式,该公式对列A进行排序,并按列B和C对排序进行划分,但我无法计算出如何做到这一点。实际上我想要RANK() OVER (PARTITION BY B,C ORDER BY A DESC)

我目前在D列有下面的数组公式,可以对A列进行排序,按B列划分,但是我想不出如何将公式按B和C划分:

=ArrayFormula(if(B2:B<>"",vlookup(B2:B&"|"&A2:A,{sort(B2:B&"|"&A2:A,B2:B,true,A2:A,false),row(B2:B)},2,false)-vlookup(B2:B,{sort(B2:B,B2:B,true),row(B2:B)},2,false)+1,""))

我想对每个活动中的每个人进行排名(在E栏中)。列D显示我拥有的公式,该公式仅获取每个人的最新时间。

推荐答案

您可以在D2单元格中使用以下公式,然后将其向下拖动以将其复制到下面的单元格中:

=Rank(A2,Filter(A$2:$A,B$2:$B=B2, C$2:$C=C2),1)

这将使用rankfilter函数。我未能使用数组公式找到解决方案。

编辑

使用ArrayFormula,我得到的最接近的结果是使用此公式:

=ArrayFormula(rank(A2:A34,QUERY(A2:C34, "select A where B ='"&B2&"'and C ='"&C2&"'", -1)))
问题是,它只适用于对第一行中具有相同B和C值的值进行排名,其想法是使用每个行单元格中的值,而不是硬编码B2和C2,但是对于查询或过滤函数中的条件,插入ArrayFormal函数的那一行(在本例中是第二行)的值对于每一行都保持相同(即使用row()函数)。在我看来,您需要像以前一样开发具有vlookup功能的复杂算法。

这篇关于按B、C列对A列划分排序的数组公式的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆