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

Google Sheets 如何让ARRAYFORMULA返回地址对应单元格值填充整列

解答

你原公式里ADDRESS()返回的是文本类型的单元格地址,要读取该地址对应的实际值,只需把ADDRESS()的计算结果套入INDIRECT()函数即可。

但直接套入后无法得到你示例中的正确结果,因为原公式有两处逻辑问题:

  • FIND("",A2:O99999)用空文本作为查找值,会把所有单元格(包括空单元格)判定为匹配,根本无法识别非空单元格,正确的非空判断写法为范围<>""
  • 统计范围从A列(id列)开始,id列始终有值会干扰列号计算,统计范围应该从第一个status列(statusA)开始

可直接使用的最终公式

按照你给出的表格结构(A列id、B列laststatus、C列是省略列、D列起依次为statusA/statusB/statusC),把公式粘贴到B2单元格即可自动适配整列,无需下拉:

适配你原有MMULT逻辑的版本(适合status从左到右连续填写、中间无空值的场景,和你给出的示例规则完全匹配)

=ARRAYFORMULA(IF(A2:A="","",IFERROR(INDEX(D1:1,,MMULT(--(D2:O<>""),SIGN(ROW(1:12)))))))

逻辑说明:

  • --(D2:O<>"")把status区域的非空单元格转为1、空单元格转为0
  • MMULT逐行统计非空单元格数量,得到最后一个非空列相对于D列的偏移量
  • INDEX直接读取第1行(表头行)对应偏移位置的列名,比ADDRESS()+INDIRECT()的组合运算效率更高

通用版本(不管status列是否连续填写,都能精准定位每行最右侧非空单元格对应的表头)

=BYROW(D2:O,LAMBDA(x,IF(COUNTA(x)=0,"",TAKE(TOCOL(IF(x<>"",D$1:O$1,""),1),-1))))

内容的提问来源于stack exchange,提问作者Aoki SJ Seonok Yang

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.29 14:09:30