可以使用INDIRECT函数。
INDIRECT 函数可以将以文本表示的公式转换为引用,你的公式可以修改为
=VLOOKUP(F2,INDIRECT("$A:$"&$J$1),CODE($J$1)-64,0)
其中,引用范围可以是A到D,也可以是A到B,后边的CODE函数部分参数,计算出来的是要统计的第几列。
当然,也可以用另一个公式
=VLOOKUP(F2,IF({1,0},A:A,INDIRECT($J$1&":"&$J$1)),2,0)
结果是一致 的。
其中,第一个公式可以简化成:
=VLOOKUP(F2,A:D,CODE($J$1)-64,0)
第一个公式其实你目的就是引用A到D列的所有数据,只是根据J1列给出的列号提取哪一列的数据而已。所以只要把A到D列全部选中就可以,不必动态区,所以建议使用简化版的。
第二个公式,是用IF构建一个两列的选区,而第二列是根据你J1中的字母构建的,因为第二列是动态的,所以始终选择第二列就可以了。
如果好用,建议反馈一下,如果还有问题,可以继续追问或者私信。
本人专注于研究EXCEL的各种运算以及VBA,如果需要,可以向我咨询。
PS:这几个公式,J1单元格必须填写A到D的字母时才会正确计算。不填写或者填写其他内容,会导致结果错误。
公式为:
=VLOOKUP(F2,INDIRECT("A:"&J$1),2,)
如图所示:
要使得J1取值影响C列的查询结果,方法有2个
方法1
J1取值 1、2、3
C2=VLOOKUP(F2,$A:$D,J1+1,0)
——————————————
方法2
至于你要J1取值 B \ C\D的话,使得C的查询结果跟着变化,公式则如下:
C2=VLOOKUP(F2,IF({1,0},A:A,INDIRECT(J1&":"&J1)),2,0)
请及时采纳答案!
把J1写为 数字,2或3,或4
=VLOOKUP(F2,A:D,J1,0)
动态查找周几的
=VLOOKUP(F2,INDIRECT("A:"&$J$1),2,0)