在Google Sheets中查找匹配Campaign名称的最后非零非空行值
问题
在Google Sheets中,需要在F列找到与当前行D列(比如D23)的Campaign名称匹配的行里,最后一个非零且非空的值,目标让F23返回2374。
- 常见的Excel专属公式
=LOOKUP(1,1/(L:L>0),L:L)在Google Sheets里不生效 - 已找到能返回列中最后非零非空值的公式,但不知道如何把
D$2:D22 = D23的筛选条件整合到INDEX函数中,当前公式:=if({{separate_formula_that_fetches_value_from_other_sheet}})=0, INDEX((FILTER(D$2:F22,NOT(ISBLANK(D$2:F22)))), (ROWS(FILTER(D$2:F22,NOT(ISBLANK(D$2:F22))))),3))
解决方案
直接把匹配条件加到FILTER的筛选规则里,同时加上非零非空的判断,再用INDEX取最后一行的对应列即可。
适合F23单元格的公式如下:
=IF({{separate_formula_that_fetches_value_from_other_sheet}}=0, INDEX( FILTER(F$2:F22, D$2:D22=D23, F$2:F22<>0, NOT(ISBLANK(F$2:F22))), ROWS(FILTER(F$2:F22, D$2:D22=D23, F$2:F22<>0, NOT(ISBLANK(F$2:F22)))) ), {{separate_formula_that_fetches_value_from_other_sheet}} )
公式说明
FILTER(F$2:F22, D$2:D22=D23, F$2:F22<>0, NOT(ISBLANK(F$2:F22))):筛选出D列与当前行D23匹配、F列非零且非空的所有值ROWS(...):获取筛选结果的行数,用来定位最后一行INDEX(..., ROWS(...)):取筛选结果里的最后一个值- 外层IF保留你原有的逻辑:当其他表的取值为0时,用上述结果,否则用原取值
如果担心筛选结果为空(比如没有匹配的非零非空值),可以加容错处理,返回空或指定值:
=IF({{separate_formula_that_fetches_value_from_other_sheet}}=0, IFERROR( INDEX( FILTER(F$2:F22, D$2:D22=D23, F$2:F22<>0, NOT(ISBLANK(F$2:F22))), ROWS(FILTER(F$2:F22, D$2:D22=D23, F$2:F22<>0, NOT(ISBLANK(F$2:F22)))) ), "" ), {{separate_formula_that_fetches_value_from_other_sheet}} )
内容的提问来源于stack exchange,提问作者PercentSharp
相关产品推荐
相关产品推荐

