如何在公式中使用单元格值 以VLOOKUP返回的列标识引用对应单元格
实现动态列引用的两种方案
- 方法1:使用
INDIRECT函数拼接引用INDIRECT支持将文本格式的单元格地址转为可识别的引用对象,直接把VLOOKUP返回的列字母和目标行号拼接后传入即可。
比如要获取动态列第23行的数值,公式为:=INDIRECT(VLOOKUP(E$25,Static!$R5:$S$10,2,FALSE)&23)
如果需要批量下拉适配23、24等连续行号,可以和ROW()函数联动,在第23行输入以下公式后下拉即可:=INDIRECT(VLOOKUP(E$25,Static!$R5:$S$10,2,FALSE)&ROW())
注意:
INDIRECT属于易失性函数,数据量较大时会增加额外计算开销,更推荐使用下面的非易失性方案。
- 方法2:使用
INDEX+列号转换(性能更优)
先把VLOOKUP返回的列字母转为数字列号,再通过INDEX引用对应列的目标行,非易失性特性适合大表场景使用。
基础写法(对应=$C23效果):=INDEX(1:1048576,23,COLUMN(INDIRECT(VLOOKUP(E$25,Static!$R5:$S$10,2,FALSE)&1)))
批量下拉适配行号的写法:=INDEX(1:1048576,ROW(),COLUMN(INDIRECT(VLOOKUP(E$25,Static!$R5:$S$10,2,FALSE)&1)))
如果你的数据仅在固定列范围内(比如A-Z列),可以把INDEX的第一个参数替换为A:Z,进一步缩小计算范围提升效率。
内容的提问来源于stack exchange,提问作者ski_co
相关产品推荐
相关产品推荐

