按B、C列对A列划分排序的数组公式

编程入门 行业动态 更新时间:2024-10-23 19:23:54
本文介绍了按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)

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

编辑

使用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列划分排序的数组公式

本文发布于:2023-10-28 18:20:24,感谢您对本站的认可!
本文链接:https://www.elefans.com/category/jswz/34/1537408.html
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系,我们将在24小时内删除。
本文标签:数组   公式

发布评论

评论列表 (有 0 条评论)
草根站长

>www.elefans.com

编程频道|电子爱好者 - 技术资讯及电子产品介绍!