You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.29 14:31:14