You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

谷歌表格中利用ArrayFormula实现多文本列分组后的名称排名需求

谷歌表格中利用ArrayFormula实现多文本列分组后的名称排名需求

嘿,我来帮你搞定这个谷歌表格的排名需求!你想要的是按country和state这两列分组,把每个组里的name按文本顺序排序后,给每个name分配一个组内的排名,而且要用ArrayFormula一次性自动填充所有行对吧?

先明确下你的原始数据和预期效果:

原始数据表格

countrystatenameorder
onetwothree
onetwofour
onefivesix
onefiveseven
eightnineten
eightnineeleven
eightninetwelve

预期结果表格

countrystatenameorder
onetwothree2
onetwofour1
onefivesix1
onefiveseven2
eightnineten3
eightnineeleven1
eightninetwelve2

实现公式

你可以直接在order列的第一个单元格(比如D2)输入下面这个ArrayFormula公式,它会自动给所有行计算出正确的组内排名:

=ArrayFormula(IF(A2:A="",,COUNTIFS(A2:A,A2:A,B2:B,B2:B,C2:C,"<"&C2:C)+1))

公式解释

  • IF(A2:A="",, ...):这部分是用来判断如果country列(A列)是空行,就返回空值,避免公式把整个列都填满无用内容
  • COUNTIFS(A2:A,A2:A,B2:B,B2:B,C2:C,"<"&C2:C):核心逻辑是统计和当前行同属一个country+state组,并且name文本比当前行name小的行数
  • 最后加1:因为统计出的是比当前name小的数量,加1之后就是当前name在组内的排名啦

如果想要按文本降序排名(也就是name越大排名越靠前),只需要把公式里的<改成>就行:

=ArrayFormula(IF(A2:A="",,COUNTIFS(A2:A,A2:A,B2:B,B2:B,C2:C,">"&C2:C)+1))

备注:内容来源于stack exchange,提问作者IMTheNachoMan

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.04.17 09:28:13