Excel VLOOKUP或INDEX MATCH

时间:2014-07-09 20:17:19

标签: excel excel-formula

假设我有3列数据

AMOUNT(A)  AMOUNT(B)     INVOICE(C)
55          49           4541
47          47           1515
42          47           4478
86          12           9993
12          100          1224
5           44           1452
            100          4287
            99           4444

我需要检查以查看A列中的值是否与B列中的值匹配。如果匹配,它将返回D列中C列的值。现在使用VLOOKUP很容易正在处理700多行,并且有多个匹配的金额。 INDEX(MATCH)可以工作但它只返回一个值。这是VB唯一的问题吗?

I.E值47在B栏中存在两次,因此D栏将返回两个发票号码(1515 - 4478)

2 个答案:

答案 0 :(得分:2)

在VBA中,问题将是微不足道的,因为您已经使用问题陈述本身正确描述了逻辑。

仅使用Excel功能,没有VBA是一个有趣的问题。您需要执行以下步骤才能获得看起来像这样的输出...

enter image description here

步骤如下:

  1. 数据透视表:从列(B)(C)创建一个数据透视表,其中行字段为(B)(C)且最小值AMOUNT(B)作为值字段。 (见下图)
  2. 帮助列:在数据透视表的一侧创建一个列,说(Q),它与列(P)中的所有内容完全相同
  3. Contd ... (R)列中(不幸的是恰好位于工作表的第Q列,对不起那里的混淆),如图所示,对于单元格{ {1}}例如加入公式

    Q20

  4. 这将导致创建类似下表的内容:

  5. 表:

    =IF(P21=P20,Q21&","&M20,M20)

    现在努力工作已经完成。您需要做的就是使用此帮助程序表(P) (Q) 12 9993 44 1452 47 4478,1515 47 4478 49 4541 99 4444 100 4287,1224 100 4287 中的VLOOKUP键值对进行查找 - 它将非常快,因为数据透视表始终对其进行排序,因此不需要精确的(P)(Q)。 - 下面显示了数据透视表以及最终LOOKUP公式

    的屏幕截图

    数据透视表和帮助程序表:

    enter image description here

    最终公式:

    enter image description here

答案 1 :(得分:1)

所以我使用Countif查看是否有基于A列的重复项。 在D列类型中,=IF(COUNTIF($A$2:$A$9,B2)>0,C2,"")

enter image description here