如何修改Google Sheets公式,添加列后无需手动更新单元格引用?
解决方案
你可以改用动态列定位+动态行范围的写法,让公式自动适配列的插入,不用手动修改单元格引用:
方法1:优化FILTER公式(推荐,适配列名不变的场景)
把Cats工作表A1的公式替换成下面的内容:
=FILTER( INDEX(INDIRECT('Adoption Centers'!A1&"!A:Z"),1,MATCH("NAME",INDIRECT('Adoption Centers'!A1&"!1:1"),0)):INDEX(INDIRECT('Adoption Centers'!A1&"!A:Z"),COUNTA(INDIRECT('Adoption Centers'!A1&"!A:A")),MATCH("NOTES",INDIRECT('Adoption Centers'!A1&"!1:1"),0)), INDEX(INDIRECT('Adoption Centers'!A1&"!A:Z"),1,MATCH("CAT?",INDIRECT('Adoption Centers'!A1&"!1:1"),0)):INDEX(INDIRECT('Adoption Centers'!A1&"!A:Z"),COUNTA(INDIRECT('Adoption Centers'!A1&"!A:A")),MATCH("CAT?",INDIRECT('Adoption Centers'!A1&"!1:1"),0))=TRUE )
公式原理:
MATCH("列名", 表头行, 0):通过列名(比如"NAME"、"NOTES"、"CAT?")动态定位列的位置,不管中间插入多少列,只要列名不变就能自动找到正确的列。COUNTA(INDIRECT('Adoption Centers'!A1&"!A:A")):自动统计NAME列的非空行数,获取数据的最后一行,以后新增动物数据也不用改公式。INDEX(表范围, 行, 列):构建动态的单元格范围,代替原来固定的A1:D3这类硬编码引用。
方法2:用QUERY函数更简洁
如果习惯用QUERY,也可以这样写(同样适配列插入):
=QUERY(INDIRECT('Adoption Centers'!A1&"!A:Z"), "SELECT NAME, AGE, SPECIES, `Adoption Cost`, NOTES WHERE `CAT?` = TRUE", 1)
注意:这里要确保列名和Rescue Pets表头完全一致,比如Adoption Cost和CAT?的标点、空格都不能错。
内容的提问来源于stack exchange,提问作者Jetninja
相关产品推荐
相关产品推荐

