Google表格如何用ArrayFormula或QUERY按条件取另一列第N个值
Google Sheets 按客户标识提取对应序号评分的实现方案
把下面的公式直接粘到D5单元格,按回车就会自动向下溢出填充整列,适配数据集持续更新增长的场景,不用手动改数据范围,也不用手动下拉填充:
=BYROW(SEQUENCE(ROWS(A5:A)),LAMBDA(r, LET( current_cust,INDEX(A:A,r+4), IF(current_cust="","", LET( match_num,COUNTIF(A5:INDEX(A:A,r+4),current_cust), cust_scores,FILTER(H:H,F:F=current_cust,ROW(F:F)>=5), IFERROR(INDEX(cust_scores,match_num),"") ) ) ) ))
公式逻辑
- 自动遍历A5及以下的所有行,空单元格直接返回空值,不会出现冗余错误值
- 逐行统计当前客户从A5到当前行的累计出现次数,这个次数就是需要提取的评分序号N
- 自动筛选
F5:H区域里所有属于当前客户的H列评分,按数据源从上到下的原始顺序排列,和你现有QUERY函数的取数顺序完全一致,不会出现序号错位 - 从筛选出的评分列表中提取对应序号的值,做了容错处理,匹配不到对应评分时返回空值,不会弹出#N/A类错误
调整方法
如果需要跳过每个客户的第1条评分,直接从第2条开始匹配,只需要把公式里match_num的计算改成match_num-1就行。改完之后,每个客户第一次在A列出现时会返回空,第二次出现对应取该客户的第2条评分,第三次对应第3条,刚好匹配你要引用第2到第N条评分的需求。
后续新增评分数据直接在F、H列往下追加即可,不需要修改公式,新数据会自动纳入计算范围。
内容的提问来源于stack exchange,提问作者confuseddesk
相关产品推荐
相关产品推荐

