回复95楼: 解牛步骤一: =INDIRECT("'"&LEFT(A2,3)&"'!"&ADDRESS(64,RANK(VALUE($D$1),'001'!$C$1:$BV$1,1)+2)) 黄色部分是一个rank函数,rank函数的功能是进行排名计算,第一参数VALUE($D$1)指的是需要计算排名的某个数据;第二参数是一个数据区域,在sheet名为001的表上的C1:BV1这一行;第三参数为1,指的是排序方式为升序(数值越大名次数字越大)。黄色公式部分的完整含义就是计算D1单元格数值在001的表上的C1:BV1这一行中的排名名次,其中D1单元格的数值必须包含在C1:BV1区域之中。 解牛步骤二: =INDIRECT("'"&LEFT(A2,3)&"'!"&ADDRESS(64,RANK(VALUE($D$1),'001'!$C$1:$BV$1,1)+2)) 绿色区域公式可简化为Address(64,名次+2),address函数的功能是取单元格的地址,第一参数为目标所在行,第二参数为目标所在列。这个公式取的就是第64行,第(名次+2)列的单元格地址。 解牛步骤三: 最后来看完整公式,可以简化成以下形式: =INDIRECT"'"&LEFT(A2,3)&"'!"&ADDRESS(某单元格)) indirect是一个引用函数,从公式中可以看出,indirect函数的参数前半部分为"'"&LEFT(A2,3)&"'!",取的是sheet表的表名,其中表名的具体名字由单元格A2中的字符串的左边三位得到。两边的单引号和感叹号是sheet表名在引用中的书写格式要求。ADDRESS(某单元格)就是指引用的单元格地址。 整个公式的含义就是利用A2单元格内容返回sheet表名,然后引用那个sheet表中的某个单元格,而那个单元格地址的所在行确定为64,所在列是一个变量,通过一个数字的排名名次所得。 |