有人可以解释一下此VLOOKUP-MATCH-INDEX公式的工作原理吗


0
(VLOOKUP($C10,Trans_CIQ!$A$8:$AZ$95,MATCH(D$9,Trans_CIQ!$A$8:$AZ$8,INDEX(Trans_CIQ!$A$886:$AZ$886,1,0)),0)*100000)

此公式因某些原因起作用,但我不知道如何操作。我试图通过分离功能来遵循它,但是仍然不明白。

Vlookup(查找值(公司名称),表数组(查找位置),col_index_num(要查找的列),[范围查找](始终为0))给出与条件匹配的值

Match(lookup_value(CapIQ图表标题),lookup_array(在何处查找,[match type](精确))在列表中给出项目编号

索引(数组(表),row_num,[column num])返回单元格中的值


您可能会使用=(VLOOKUP($C10,Trans_CIQ!$A$8:$AZ$95,Trans_CIQ!$A$886,0)*100000)
PeterH,

@PeterH不能维护公式的功能。 INDEX(Trans_CIQ!$A$886:$AZ$886,1,0)实际上是将52个值的1维数组返回到要搜索的匹配项。
Scott Craner '18

@Scott在索引为行1和列0的地方,会不会总是与单元格$ A $ 886相同?
PeterH

Yup跳过了第二个条件。它应该只删除INDEX部分,而剩下的MATCH则用-1,0,1 @PeterH代替INDEX
Scott

而且0在INDEX中使用时不会返回整行或整列@PeterH
Scott

Answers:


1

INDEX(Trans_CIQ!$A$886:$AZ$886,1,0)

由于第三个条件是0它实际上返回所引用范围的整个第一行的数组。该1通知的第一行想要的公式。

但是由于范围仅为一行,因此INDEX只是增加了噪音,可以将其删除。

Trans_CIQ!$A$886:$AZ$886

将返回相同的数组。

MATCH(D$9,Trans_CIQ!$A$8:$AZ$8,INDEX(Trans_CIQ!$A$886:$AZ$886,1,0))

在索引返回的数组中查找D9中的值,并返回相对列号。返回给VLOOKUP的此列号指示返回哪一列作为答案。

但指数如上规定是不需要的,而且它在第三个标准是应该返回一个错误,而不是工作,以取代它-10或者1

MATCH(D$9,Trans_CIQ!$A$8:$AZ$8,0)

因此,可以说MATCH返回第5列,因为D9中的值落在其中包含的列表中Trans_CIQ!$A$8:$AZ$8 ,它将返回5VLOOKUP的第三个条件。

VLOOKUP($C10,Trans_CIQ!$A$8:$AZ$95,5,0)

然后C10Trans_CIQ!$A$8:$A$95 And中找到,并从找到该值的该行的第5列(在本例中为E列)中返回值。

之后,将*100000收益乘以100000


谢谢你斯科特!还有一个后续问题,为什么在match_type中出现INDEX / Array,我以为那应该是-1,0或1?
德米特里(Dmitriy)'18年

不是,而是在第二点,这是要搜索的范围。第三个条件留为空白,这很好,因为它是可选的。
Scott Craner '18

1
MATCH(lookup_value,lookup_array,match_type)所以对于查找值是D $ 9,对于lookup_array是Trans_CIQ!$ A $ 8:$ AZ $ 8,对于match_type是Trans_CIQ!$ A $ 886:$ AZ $ 886理解,还是不正确?
德米特里(Dmitriy)'18年

Yup错过了这一点,不确定为什么会出现在里面。
Scott Craner '18

是对数据进行了排序,并且想要相对匹配还是完全匹配,只需将整个INDEX替换为-1,0,1。我将更新
Scott Craner '18
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.