如何用INDIRECT函数从单元格提取年份替换公式中的工作表名?
解决Google Sheets中INDIRECT引用动态年份工作表的引号嵌套问题
原公式与修改方案
1. "A"工作表的公式修改
原公式:
=ArrayFormula(sumproduct(('2023'!$J$17:J="W")*('2023'!K17:K="")*NOT('2023'!$L$17:$L="S")*('2023'!$F$17:F)))
修改后(从A191提取年份):
=ArrayFormula(SUMPRODUCT( INDIRECT("'"&A191&"'!$J$17:$J")="W", INDIRECT("'"&A191&"'!$K$17:$K")="", NOT(INDIRECT("'"&A191&"'!$L$17:$L")="S"), INDIRECT("'"&A191&"'!$F$17:$F") ))
2. "Backlog"工作表D232单元格的公式修改
原公式(注:原公式中NOT(...)与后续区域间缺少*,已一并修正):
=if(today()>=A232,ArrayFormula(sumproduct(('2023'!$J$17:$J="W")*('2023'!$K$17:$K<$A232)*NOT('2023'!$L$17:$L="S")('2023'!$F$17:$F))),"")
修改后(从A232提取年份):
=IF(TODAY()>=A232, ArrayFormula(SUMPRODUCT( INDIRECT("'"&A232&"'!$J$17:$J")="W", INDIRECT("'"&A232&"'!$K$17:$K")<A232, NOT(INDIRECT("'"&A232&"'!$L$17:$L")="S"), INDIRECT("'"&A232&"'!$F$17:$F") )), "" )
核心解决思路
- 引号嵌套处理:通过
"'"&A191&"'!$J$17:$J"的格式拼接字符串,其中'"'表示字符串内的单引号,结合单元格引用和区域地址,生成INDIRECT可识别的完整工作表区域路径,直接解决嵌套引号报错问题。 - SUMPRODUCT参数优化:用逗号分隔多个条件替代原公式的
*运算,可读性更强,同时避免数组运算中可能出现的类型转换问题。 - 前提条件:确保A191/A232单元格存储的是纯四位年份(文本或数字格式均可),INDIRECT会自动解析为对应的工作表名称。
内容的提问来源于stack exchange,提问作者Steve
相关产品推荐
相关产品推荐

