如何获取Google Sheets中包含公式的列的最后一个值?
问题根源
你原来的公式存在三个核心问题导致始终返回空值:
- 括号位置错误:你把统计筛选后结果数量的
AANTALARG(国际版Excel对应COUNTA函数)放在了FILTER函数的第三个参数(无匹配结果时的返回值)位置,而非INDEX函数的行号参数位置,导致取值逻辑完全失效 - 引号格式错误:判断空值时使用了中文格式的
””,Excel无法识别为标准的空文本标识 - IF公式返回的零长度空文本
""本身可以被<>""条件正常识别,不是本次问题的核心诱因
解决方案
方案1:Excel 365/2021 极简写法(推荐)
直接用XLOOKUP倒序匹配最后一个非空值,公式简洁稳定性高:
=XLOOKUP("*";INDIRECT(A2&"!F4:F");INDIRECT(A2&"!F4:F");;2;-1)
参数说明:
- 通配符
"*"匹配任意文本、数字内容 - 最后一位参数
-1指定从列末尾倒序查找,第一个匹配到的非空值就是目标列最后一个有效值 - 第五位参数
2启用通配符匹配规则
方案2:原逻辑修正版
如果你需要沿用原来的INDEX+FILTER的实现逻辑,调整括号位置和符号格式即可生效:
=INDEX(FILTER(INDIRECT(A2&"!F4:F");INDIRECT(A2&"!F4:F")<>"");AANTALARG(FILTER(INDIRECT(A2&"!F4:F");INDIRECT(A2&"!F4:F")<>"")))
核心改动:将AANTALARG统计逻辑移至INDEX的第二个参数位置,作为读取筛选结果最后一行的行号,同时将中文引号替换为英文引号。
方案3:旧版Excel兼容写法
如果你的Excel版本不支持动态数组、无FILTER函数,可使用无需数组回车的LOOKUP写法:
=LOOKUP(2;1/(INDIRECT(A2&"!F4:F")<>"");INDIRECT(A2&"!F4:F"))
该写法会自动跳过所有空值(包括IF公式返回的空文本),直接返回列范围内最后一个非空有效值。
注意事项
如果A2存储的工作表名包含空格、特殊字符,需要给INDIRECT的参数加单引号包裹,写法改为
INDIRECT("'"&A2&"'!F4:F"),避免读取工作表失败。
如果目标F列存在#N/A、#VALUE!等错误值,可在筛选条件中额外添加ISERROR(范围)=FALSE逻辑过滤错误值,避免公式报错。
内容的提问来源于stack exchange,提问作者Cyclia
相关产品推荐
相关产品推荐

