Google Sheets如何通过列名而非列编号引用指定列
解决方案
完全可以实现,核心思路是先通过表头行匹配到game_key对应的动态列号,再代入原INDEX-MATCH逻辑即可,以下是可直接使用的修改后公式和说明:
修改后的完整公式
把原公式中固定的nfl_an_raw!$AH:$AH替换为动态列引用即可,最终公式为:=INDEX(nfl_an_raw!$1:$808, MATCH(J8, INDEX(nfl_an_raw!$A:$ZZ, 0, MATCH("game_key", nfl_an_raw!$1:$1, 0)), 0), H$4)
公式逻辑说明
- 内层
MATCH("game_key", nfl_an_raw!$1:$1, 0):匹配nfl_an_raw表第一行的表头,返回game_key所在的列序号,不管列怎么移动,只要表头值不变,返回的列序号就会自动更新 - 内层
INDEX(nfl_an_raw!$A:$ZZ, 0, 上述列序号):第二个参数填0代表返回对应列的所有行,效果等同于原来的$AH:$AH固定列引用 - 外层逻辑和你原有公式完全一致,不需要做其他调整
注意事项
- 表头匹配是完全匹配,
"game_key"的拼写、大小写、前后空格要和AH1单元格的实际值完全一致,否则会返回#N/A错误 - 如果你表的列数超过ZZ列,把
nfl_an_raw!$A:$ZZ的范围调整为覆盖你所有可能用到的列即可 - 如需容错,可以在列匹配部分加
IFERROR处理,示例:IFERROR(MATCH("game_key", nfl_an_raw!$1:$1, 0), NA()),出现列名不存在的情况时会返回标准#N/A错误方便排查
内容的提问来源于stack exchange,提问作者Canovice
相关产品推荐
相关产品推荐

