如何创建一个查找函数或VBA代码,它可以仅针对第一个找到的结果返回值?

时间:2017-04-07 11:28:03

标签: excel excel-vba vba

假设在Sheet1中,我有一个Order表

OrderNo.  ShipmentNo.  Rate
54321          AP2312
54321          AP2312
29781          AP2312
32181          AP2312
54321          AP2312

在sheet2中,我有费率表

OrderNo.     Rate
S4321          65

下表是我试图通过基于sheet2费率表应用某种查找来获得的最终结果

OrderNo.  ShipmentNo.  Rate
54321     AP2312       65
54321     AP2312       0
29781     AP2312       NA
32181     AP2312       NA
54321     AP2312       0

这意味着,公式应该仅针对第一个找到的结果返回值。在这种情况下54321。

2 个答案:

答案 0 :(得分:0)

你可以试试这个

在Sheet1上 在C2

=IFERROR(IF(COUNTIF(A$2:A2,A2)=1,VLOOKUP(A2,Sheet2!A:B,2,0),0),"NA")

编辑: 或者更准确地说这个

=IF(ISNUMBER(MATCH(A2,Sheet2!A:A,0)),IF(COUNTIF(A$2:A2,A2)=1,VLOOKUP(A2,Sheet2!A:B,2,0),0),"NA")

答案 1 :(得分:0)

不需要VBA

首先检查记录是否是下面的第一个记录:

=IF(MATCH(A2,A:A,-1)=ROW(),1,0)

然后返回你的vlookup值:

=IF(MATCH(A2,A:A,-1)=ROW(),VLOOKUP(A2,H:I,2,0),0)

假设OrderNo位于A列,而您的第二个表位于同一张的H1:I2