我有一张带有唯一标识符的资产表。该工作表称为“资产”。标识符在B列中。
同一工作簿中的另一个工作表称为“位置”。
如果在Location!E2中输入唯一的资产标识符,我希望Location!H2在“资产”页面的B列中检查匹配项,然后返回相应行E列中的值。想要Location!I显示“ Assets!D(Assets!E)”,还有其他一些列也希望显示其价值。
在不使用VLOOKUP或INDIRECT的情况下是否有可能?
原因,我不希望VLOOKUP是因为我希望能够同时进行过滤和排序,并且由于工作簿中其他公式的复杂性,如果重新组织列,则INDIRECT会带来很大麻烦。
VLOOKUP和INDIRECT确实提供了我正在寻找的基本功能,但是它们并不理想。我当前正在做的是在Location!F列中运行MATCH。这给了我行号。然后在Location!H中,使用INDIRECT。
我当前正在使用以下公式:
=MATCH(E2,Assets!$B:$B,0)
(查找行号)=INDIRECT("'Assets'!G"&F2)
(显示我想要的值)我希望有一种更好的方法来达到相同的结果,因为我不想记住手动更新每个“ INDIRECT”公式。特别是因为我不是唯一从事此工作的人。
答案 0 :(得分:1)
如果Vlookup不起作用(正如泰勒所说,..我相信它应该“。”)..如果没有,那么此选项可能就是您想要的..
请勿使用INDIRECT(用户抵消)。
我经常使用MATCH + OFFSET ..的组合在更复杂的情况下“模仿” VLOOKUP。
因此在H2中(在位置表上)..您的公式将如下所示:
=MATCH(E2,Assets!B:B,0)
有效地为您提供匹配项的行号(如果没有匹配项,则为错误)。 然后在其他列中,您可以在OFFSET函数中使用它:
比方说,在col I2中,您可以使用Match返回的值:
=OFFSET(Assets!E1,I2-1,0,1,1)
表示为: 转到资产表,单元格E1。 向下移动等于单元格I2中值(减1)的行数。 (即,如果I2中的值为4,即行“ 4”。我们需要从E1 ..“向下”移3行以到达E4) 下一个值“ 0”是列偏移..因此0 ..请勿更改列。 1,1是返回集的大小(是的,偏移量可以返回范围..对于动态列表等非常有用)。就您而言,只需要一个单元即可。
然后,您可以为其他列重复该偏移量。 假设在Col J2中..您要从col T中获取该行的值:
=OFFSET(Assets!T1,I2-1,0,1,1)
希望有帮助!
答案 1 :(得分:0)
您仍然应该能够使用VLOOKUP,而不会在排序/过滤时弄乱它。您只需要确保在方程式中使用无穷大即可。例如:
VLOOKUP(A1, B1:C5, 2, 0)
在数据被过滤掉或通过排序重新排列时可能会失败。VLOOKUP(A1, B:C, 2, 0)
这并不关心您的查找范围,因此它仍然可以工作,而且我相信它将仍然检查被滤除的单元格。