Google Sheets使用ARRAYFORMULA和INDIRECT按地址读取单元格值实现自动填充
需求实现结论与方案
该需求完全可以实现,你可以通过ARRAYFORMULA搭配BYROW、INDIRECT函数组合完成整列自动填充,插入新行时会自动匹配B列的地址返回对应值。
具体实现公式
假设你C列的表头在C1,数据从C2行开始生效,直接在C2单元格输入以下公式即可:
=ARRAYFORMULA(IF(B2:B="",,BYROW(B2:B,LAMBDA(addr,INDIRECT(addr)))))
公式逻辑说明
- 外层
ARRAYFORMULA:让公式支持数组运算,自动向下扩展到整列,新增行时无需手动下拉填充 IF(B2:B="",,):过滤B列为空的行,对应C行返回空值,避免出现无意义的错误提示BYROW(B2:B,LAMBDA(addr,INDIRECT(addr))):逐行遍历B列的地址文本,将每一行的地址作为参数传入INDIRECT函数,读取对应单元格的取值
优化方案(可选)
如果需要避免B列输入无效地址导致的报错,可以增加IFERROR做容错处理,修改后的公式如下:
=ARRAYFORMULA(IF(B2:B="",,BYROW(B2:B,LAMBDA(addr,IFERROR(INDIRECT(addr),"无效地址")))))
上述公式支持跨工作表的地址读取,只要B列存储的地址格式符合规范(如Sheet2!A3)即可正常返回结果。
内容的提问来源于stack exchange,提问作者Salar
相关产品推荐
相关产品推荐

