能否在Google表格公式中嵌套Address与Match函数按列名跨工作表取数?
解决Google Sheets动态列引用问题
- 核心方法:用
INDIRECT()函数把你生成的文本列地址转换成工作表可识别的单元格范围,就能将列标获取逻辑嵌套进原公式。 - 直接改造后的公式(替换对应列名即可用):
=IFERROR(AVERAGEIF(INDIRECT("M1W5!"&SUBSTITUTE(ADDRESS(1,MATCH("存放desktop的列名",M1W5!$A$1:$BZ$1,0),4),1,"")&":"&SUBSTITUTE(ADDRESS(1,MATCH("存放desktop的列名",M1W5!$A$1:$BZ$1,0),4),1,"")), "desktop", INDIRECT("M1W5!"&SUBSTITUTE(ADDRESS(1,MATCH("Time to first reply (seconds)",M1W5!$A$1:$BZ$1,0),4),1,"")&":"&SUBSTITUTE(ADDRESS(1,MATCH("Time to first reply (seconds)",M1W5!$A$1:$BZ$1,0),4),1,"")))/60)
提示:把公式里的「存放desktop的列名」替换成你原来AO列对应的实际列名(比如可能是"Device Type"这类)。
- 更简洁的优化版(用
LET()减少重复代码):
=IFERROR(LET( 工作表名, "M1W5", 条件列, SUBSTITUTE(ADDRESS(1,MATCH("存放desktop的列名",INDIRECT(工作表名&"!$A$1:$BZ$1"),0),4),1,""), 数值列, SUBSTITUTE(ADDRESS(1,MATCH("Time to first reply (seconds)",INDIRECT(工作表名&"!$A$1:$BZ$1"),0),4),1,""), AVERAGEIF(INDIRECT(工作表名&"!"&条件列&":"&条件列), "desktop", INDIRECT(工作表名&"!"&数值列&":"&数值列))/60 ))
- 原理说明:
INDIRECT()负责将字符串形式的引用(比如"M1W5!AO:AO")转换成真实的单元格范围,让AVERAGEIF能正常计算。LET()可以把重复的匹配逻辑赋值给变量,后续改工作表名或列名时只需要修改一处,更省心。
内容的提问来源于stack exchange,提问作者Doug Taylor
相关产品推荐
相关产品推荐

