Excel网格查找
我有一个文件中的数组,例如:
名字年龄鞋子大小 安德鲁19 12 玛丽17 8 莎拉15 10 韦斯利19 11
我想根据给定的名称和数据types精确定位一段数据。 例如,指出Sarah
和Age
,我希望细胞阅读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过程。
您可以尝试使用索引函数,因为它与偏移函数类似。