【发布时间】:2020-10-28 21:52:02
【问题描述】:
我有两本工作簿,其中一本我正在执行 Vlookup,另一本包含我需要从中检索信息的表。
我正在尝试基本上 Vlookup 在另一个工作簿“[Database_IRR 200-2S.xlsm]Changes”中找到的表!在第 3 行下方,因为有时查找会从第二行检索信息,而我不希望从表中获取这些参数。我无法在表的第三行开始 Vlookup 的原因是因为我的查找表可以输入数据(向下移动行),这会在我的 Vlookup 公式中移动表数组的绝对引用(参见示例下面):
例如,如果我输入 =VLOOKUP("TEST 1_SL.1V.L",'[Database_IRR 200-2S.xlsm]Changes'!$A$3:$FZ$10000,ROWS($A$1:$A6),FALSE) 并添加一个新条目/行(例如 A 列中的另一个测试 1_SL.1V.L)到具有查找表“[Database_IRR 200-2S. xlsm]Changes' 然后我的公式变成=VLOOKUP("TEST 1_SL.1V.L",OFFSET(('[Database_IRR 200-2S.xlsm]Changes'!$A$4:$FZ$10000),2,0),ROWS($A$1:$A6),FALSE). 注意$A$3 --> $A$4
为了解决这个问题,我尝试从第 1 行进行 Vlookup 并将其向下偏移 2 行,因为当向工作簿添加新行时,绝对引用(下面的 $A$1)似乎不会改变绝对引用位于 OFFSET 函数内(因此,当将新数据条目(新行)添加到 [Database_IRR 200-2S.xlsm]Changes 时,$A$1 不会更改为 $A$2)。现在,下面的这个公式仅在我打开查找表的来源的另一个工作簿时才有效,即 [Database_IRR 200-2S.xlsm]Changes'! , 如果我关闭它,那么我的 Vlookup 公式将返回 #VALUE 错误,因为我引用的工作簿已关闭,因此 OFFSET 会产生 #VALUE 错误
我的问题:我是否可以对我的代码进行任何调整或建议,以替换我的 OFFSET 函数在我关闭其他工作簿时不起作用或者可能是其他方法?
这是我使用的公式:
=VLOOKUP('Operation base Q'!$H$5,OFFSET(('[Database_IRR 200-2S.xlsm]Changes'!$A$1:$FZ$1000),2,0),ROWS($A$1:$A6),FALSE)
这是从文件路径“[Database_IRR 200-2S.xlsm]Changes”中查找数据的屏幕截图:
另一种替代解决方案我正在尝试使用带有小数组的索引公式(输入数组时按住 Ctrl+Shift+Enter)。该数组使我的工作表非常慢,并且如果第二行未填充查找值,它将不会获取“第一个”查找值(如第三行及以下)(请参见下面的工作簿截图Database_IRR 200-2S.xlsm]Changes'! 在我查找 TEST 1 时第二行不同,所以当我希望它返回第三行时,我的公式返回第四行。
这是我用于此替代方案的公式:
=INDEX(INDEX('[Database_IRR 200-2S.xlsm]Changes'!$A$2:$FZ$10001,0,ROWS($1:6)),SMALL(IF('Operation base Q'!$H$5='[Database_IRR 200-2S.xlsm]Changes'!$A:$A,ROW('[Database_IRR 200-2S.xlsm]Changes'!$A:$A),""),1))*
第三种解决方案我尝试使用的是 Double INDEX & MATCH 组合,但是每当我向另一个工作簿添加新行时,绝对引用也会发生变化,这就是我的意思:
这是我尝试使用的公式(第三种选择):
=INDEX(INDEX('[Database_IRR 200-2S.xlsm]Changes'!**$A$3:$FZ$10000**,0,ROWS($1:6)),MATCH('Operation base Q'!$H$5,'[Database_IRR 200-2S.xlsm]Changes'!**$A$3:$A$1000**,0))
但是每当我在 Database_IRR 200-2s 工作簿中插入一个新行时,绝对引用就会像这样改变(见粗体):
=INDEX(INDEX('[Database_IRR 200-2S.xlsm]Changes'!**$A$4:$FZ$10001**,0,ROWS($1:6)),MATCH('Operation base Q'!$H$5,'[Database_IRR 200-2S.xlsm]Changes'!**$A$4:$A$1001**,0))
交叉引用我发表的另一篇文章:https://www.mrexcel.com/board/threads/vlookup-offset-value-error.1139372/
【问题讨论】:
标签: arrays excel indexing vlookup offset