VLOOKUP在多个工作表中查找相匹配的值( 二 )


转换为:
INDIRECT(“‘Sheet3’!D1:D10”)
结果为:
Sheet3!D1:D10
传递到INDEX函数中作为其参数array的值:
=INDEX(Sheet3!D1:D10,MATCH(1,(T(OFFSET(INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!B1”),Arry2,,,))=$A11)*(N(OFFSET(INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!C1”),Arry2,,,))=$B11),0))
同样,公式中的:
INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!B1”)
得到:
Sheet3!B1
公式中的:
INDIRECT(“‘”&INDEX(Sheets,Arry1)&”‘!C1”)
得到:
Sheet3!C1
现在,单元格C3中的公式变为:
=INDEX(Sheet3!D1:D10,MATCH(1,(T(OFFSET(Sheet3!B1,Arry2,,,))=$A11)*(N(OFFSET(Sheet3!C1,Arry2,,,))=$B11),0))
由于这里的两个公式结构:
T(OFFSET(Sheet3!B1,Arry2,,,))=$A11

N(OFFSET(Sheet3!C1,Arry2,,,))=$B11
相似,因此只解释其中一个的工作原理 。
先看看名称Arry2:
=ROW(INDIRECT(“1:10”))-1
由于将在三个工作表中执行查找的范围是从第1行到第10行,因此公式中使用了1:10 。
上述公式转换为:
{1;2;3;4;5;6;7;8;9;10}-1
得到:
{0;1;2;3;4;5;6;7;8;9}
该数组被传递给OFFSET函数作为其rows参数,这样:
OFFSET(Sheet3!B1,Arry2,,,)
将会生成:
Sheet3!B1
Sheet3!B2
Sheet3!B3

Sheet3!B10
因此,公式:
T(OFFSET(Sheet3!B1,Arry2,,,))=$A11
转换为:
T(OFFSET(Sheet3!B1,{0,1,2,3,4,5,6,7,8,9},,,))=$A11
转换为:
T({Sheet3!B1,Sheet3!B2,Sheet3!B3,Sheet3!B4,Sheet3!B5,Sheet3!B6,Sheet3!B7,Sheet3!B8,Sheet3!B9,Sheet3!B10})=$A11
转换为:
{“Colour”,”Red”,”Blue”,”Blue”,”Red”,”Violet”,”Blue”,”Yellow”,”Green”,”Red”}=$A11
转换为:
{“Colour”,”Red”,”Blue”,”Blue”,”Red”,”Violet”,”Blue”,”Yellow”,”Green”,”Red”}=”Red”
得到:
{FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE}
注意,如果你在这里使用的是N函数:
N(OFFSET(Sheet3!B1,Arry2,,,))
其结果将为:
{0,0,0,0,0,0,0,0,0,0}
当然,也不能够单独只使用OFFSET函数:
OFFSET(Sheet3!B1,Arry2,,,)
其结果将为:
{#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!,#VALUE!}
同样地,公式中的:
N(OFFSET(Sheet3!C1,Arry2,,,))=$B11
转换为:
{0,2010,2010,2012,2012,2012,2012,2011,2014,2011}=2012
结果为:
{FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE}
好了!现在可以将上面得到的中间结果放到主公式中:
=INDEX(Sheet3!D1:D10,MATCH(1,(T(OFFSET(Sheet3!B1,Arry2,,,))=$A11)*(N(OFFSET(Sheet3!C1,Arry2,,,))=$B11),0))
转换为:
=INDEX(Sheet3!D1:D10,MATCH(1,({FALSE,TRUE,FALSE,FALSE,TRUE,FALSE,FALSE,FALSE,FALSE,TRUE})*({FALSE,FALSE,FALSE,TRUE,TRUE,TRUE,TRUE,FALSE,FALSE,FALSE}),0))
转换为:
=INDEX(Sheet3!D1:D10,MATCH(1,{0,0,0,0,1,0,0,0,0,0},0))
转换为:
=INDEX(Sheet3!D1:D10,5)
结果为
32

推荐阅读