假设我有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)
答案 0 :(得分:2)
在VBA中,问题将是微不足道的,因为您已经使用问题陈述本身正确描述了逻辑。
仅使用Excel功能,没有VBA是一个有趣的问题。您需要执行以下步骤才能获得看起来像这样的输出...
步骤如下:
(B)
和(C)
创建一个数据透视表,其中行字段为(B)
和(C)
且最小值AMOUNT(B)
作为值字段。 (见下图)(Q)
,它与列(P)
中的所有内容完全相同 Contd ... 在(R)
列中(不幸的是恰好位于工作表的第Q列,对不起那里的混淆),如图所示,对于单元格{ {1}}例如加入公式
Q20
这将导致创建类似下表的内容:
表:
=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
公式
数据透视表和帮助程序表:
最终公式:
答案 1 :(得分:1)
所以我使用Countif查看是否有基于A列的重复项。
在D列类型中,=IF(COUNTIF($A$2:$A$9,B2)>0,C2,"")