如何在Google Sheets的FILTER+ARRAYFORMULA中使用LEFT+FIND组合
问题解决:Google Sheets中ArrayFormula结合LEFT函数匹配的问题
问题根源
原公式中,LEFT($C$206:$C$211; find(" "; $C$206:$C$211)-1) 生成的是数组,但FILTER函数会将整个数组作为单一条件匹配property3,无法实现逐行对应的匹配逻辑,导致第三个属性条件失效。
修改后的公式
=BYROW($C$206:$C$211; LAMBDA(cell; IF(cell=" "; " "; IFERROR(SUM(FILTER(metric1; property1="value1"; property2="value2"; property3=LEFT(cell; FIND(" "; cell)-1); property4="value4")); " - "))))
公式说明
BYROW遍历$C$206:$C$211中的每个单元格,通过LAMBDA将当前单元格命名为cell,实现逐行独立计算- 先判断单元格是否为空,为空则返回空值
- 非空单元格通过
LEFT(cell; FIND(" "; cell)-1)提取空格前的内容(单单元格操作,无数组兼容问题) - 用
FILTER筛选符合所有属性条件的metric1数据并求和,IFERROR处理无匹配结果的情况,返回" - "
容错优化版(适配无空格的单元格)
如果存在单元格不含空格的情况,可添加IFERROR避免公式报错:
=BYROW($C$206:$C$211; LAMBDA(cell; IF(cell=" "; " "; IFERROR(SUM(FILTER(metric1; property1="value1"; property2="value2"; property3=IFERROR(LEFT(cell; FIND(" "; cell)-1); cell); property4="value4")); " - "))))
内容的提问来源于stack exchange,提问作者Dmytro Horodetskyi
相关产品推荐
相关产品推荐

