Google Sheets如何提取每行最后一个非空列的内容
实现方案
你需要的效果本质是逐行提取A:C范围内每行最右侧的非空值,之前用INDEX取固定第3列的写法有问题:INDEX的列参数是静态固定值,传入3就会强制所有行都取C列内容,完全不会判断C列是否为空,自然会在第2、3行返回空值。
直接在D1单元格输入对应公式即可,无需逐行下拉,会自动适配整行数据返回结果,完美兼容你现有的ARRAYFORMULA数据生成逻辑。
Google Sheets 适用公式
=ARRAYFORMULA(IFERROR(LOOKUP(2,1/(A:C<>""),A:C),""))
逻辑说明:
A:C<>""逐行逐列判断单元格是否非空,返回布尔值组成的二维判断数组1/(A:C<>"")将非空单元格对应位置转换为1,空单元格位置转换为#DIV/0!错误值LOOKUP查找值设为2,由于2大于数组里所有有效值1,函数会自动定位到每行最后一个非空值的位置,返回对应单元格内容
Excel 365/2021 适用公式
=BYROW(A:C,LAMBDA(x,TAKE(FILTER(x,x<>""),-1)))
逻辑说明:
- 逐行遍历A:C列的每一行数据
- 过滤掉当前行里的所有空值
- 提取过滤后结果的最后一个值,就是当前行最右侧的非空内容
结果校验
用你给出的测试数据验证,公式返回结果完全匹配预期:
- 第1行:A/B/C列均有值,返回C列
test3 - 第2行:仅A列有值,返回A列
test1 - 第3行:A/B列有值,返回B列
test2 - 第4行:A/B/C列均有值,返回C列
test3
如果你的A:C列是ARRAYFORMULA直接生成的动态数组、没有落地到实体单元格,可以把公式里引用的A:C替换成你原有生成三列数据的表达式,直接一步输出D列结果即可。
内容的提问来源于stack exchange,提问作者NightEye
相关产品推荐
相关产品推荐

