Google Sheets ArrayFormula问题:需将IF条件引用改为相对引用
解决Google Sheets中按对应行职位提取任务的公式问题
问题根源
你当前的公式里,ARRAYFORMULA 中直接用固定的 D2 作为匹配条件,导致所有行只会匹配D2单元格的职位,无法自动对应每行的D列值(D3、D4…Dn)。再加上 TEXTJOIN 是聚合函数,默认不会逐行迭代处理D列的每个单元格。
修复方案(推荐新版Sheets)
使用 BYROW 函数遍历D列的每一行,对每个行的职位单独执行匹配和拼接:
=BYROW(D2:D, LAMBDA(x, IF(ISBLANK(x), "", TEXTJOIN("-", TRUE, FILTER(B2:B2269, A2:A2269=x)))))
BYROW(D2:D, LAMBDA(x,...)):遍历D2:D的每个单元格,用x代表当前行的职位值FILTER(B2:B2269, A2:A2269=x):筛选A列中等于当前职位x的所有B列任务TEXTJOIN("-", TRUE,...):把筛选到的任务用-拼接,自动忽略空值IF(ISBLANK(x), "", ...):如果D列当前行为空,E列对应行也留空
兼容旧版Sheets的替代方案
如果你的Sheets版本不支持BYROW,可以用行号匹配的方式实现逐行计算:
=ARRAYFORMULA(IF(ISBLANK(D2:D),, TEXTJOIN("-", TRUE, IF(A2:A2269=D2:D, B2:B2269, ""))*N(ROW(D2:D)=TRANSPOSE(ROW(D2:D)))))
该公式通过转置行号来锁定每行的匹配范围,不过逻辑相对复杂,优先推荐第一种方案。
内容的提问来源于stack exchange,提问作者Dyler Turden
相关产品推荐
相关产品推荐

