我在一个文件中有一个数组,例如:
Names Age Shoe Size Andrew 19 12 Mary 17 8 Sarah 15 10 Wesley 19 11
我想根据给定的名称和数据类型确定一条数据。
例如,精确定位Sarah
和Age
,我希望单元格读取15
。
我已阅读有关Double Lookup的this有用指南,但有一件事仍困扰着我。
这是公式:
=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文件中读取的代码(我所做的只是添加文件路径):
=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)
有谁知道为什么它不喜欢其他文件? 这是相同的信息。
我该如何解决这个问题?
提前致谢:)
答案 0 :(得分:4)
为了扩展Scott的答案,关闭工作簿的外部路径被视为数组而不是引用,因此如果工作簿关闭,期望在OFFSET,SUMIF或COUNTIF等参数中引用的函数将返回错误。
另一方面,INDEX允许数组作为参数,因此您可以尝试输入:
=INDEX(A1:C5,MATCH("Sarah",INDEX(A1:C5,0,1),0),MATCH("Age",INDEX(A1:C5,1,0),0))
也应该允许引用已关闭的工作簿。
INDEX的另一个优点是它不易挥发,所以只会在其中一个相关单元格(A1:C5)中的单元格发生变化时重新计算,而OFFSET是一个易失性函数,只要在任何地方发生变化,它就会重新计算。工作簿效率较低。
答案 1 :(得分:2)
某些功能要求目标工作簿开放工作 - 偏移是其中之一。间接和Sumif和Countif是其他人。您必须打开目标,或重新设计流程。
您可以尝试使用索引函数,因为它类似于偏移函数。