Excel网格查找

我有一个文件中的数组,例如:

 名字年龄鞋子大小
    安德鲁19 12
    玛丽17 8
    莎拉15 10
    韦斯利19 11 

我想根据给定的名称和数据types精确定位一段数据。 例如,指出SarahAge ,我希望细胞阅读15

我已经阅读了双倍查找这个有用的指南,但有一件事仍然困扰着我。

这是公式:

=OFFSET(A1:C5,MATCH("Sarah",OFFSET(A1:C5,0,0,ROWS(A1:C5),1),0)-1,MATCH("Age",OFFSET(A1:C5,0,0,1,COLUMNS(A1:C5)),0)-1)

它在数据处于同一个文件时起作用,但是当我尝试从另一个文件中使用给定的公式时,它会得到#VALUE! 错误。

从anther文件读取代码(我所做的只是添加文件path):

 =OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5,MATCH("Sarah",OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5,0,0,ROWS(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5),1),0)-1,MATCH("Age",OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5,0,0,1,COLUMNS(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5)),0)-1) 

这里有间隔,所以更容易阅读:

 =OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5, MATCH("Sarah", OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5, 0, 0, ROWS(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5),1), 0)-1, MATCH("Age", OFFSET(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5, 0, 0, 1, COLUMNS(C:file\path\'[Lister.xls]Shhet1'!$A$1:$C$5)), 0)-1) 

有谁知道为什么它不喜欢其他文件? 这是相同的信息。

我该如何解决?

提前致谢 :)

只是为了扩展Scott的答案,封闭的工作簿的外部path被视为数组而不是引用,因此如果工作簿被closures,期望像OFFSET,SUMIF或COUNTIF这样的参数引用的函数会返回错误。

另一方面,INDEX确实允许数组作为参数,所以你可以尝试input:

 =INDEX(A1:C5,MATCH("Sarah",INDEX(A1:C5,0,1),0),MATCH("Age",INDEX(A1:C5,1,0),0)) 

这也应该允许引用封闭的工作簿。

INDEX的另一个优点是它不是易失性的,所以只有当某个依赖单元格(A1:C5)中的某个单元格发生更改时才会重新计算,而OFFSET是一个易失性函数,并且只要在工作簿中的任何位置进行更改就会重新计算效率较低。

有些function要求目标工作簿开放工作 – 偏移是其中之一。 间接和Sumif和Countif是别人。 你将不得不打开目标,或重新devise过程。

您可以尝试使用索引函数,因为它与偏移函数类似。