Excel函数帮助 - 将工作表中的2个单元格与另一个工作表中的2个单元格进行比较,如果它们匹配,则从其他列返回值

时间:2013-04-03 18:09:22

标签: excel function if-statement vlookup exact-match

我想知道是否有人能够就最佳方式提供一些建议:

工作表#1中的数据

Col A  | Col B | Col C
Part-1 |     8 |     2
Part-2 |     7 |     7           
Part-7 |     9 |     4
Part-8 |     2 |     6

工作表#2中的数据

Col A  | Col B | Col C
Part-1 |     8 | *Return value* (If Part-1 is found and 8 matches, return 2)         
Part-2 |     7 | *Return value*  
Part-3 |     8 | *Return value*

在单元格Worksheet#2的{​​{1}}中 - 我想检查C2中的Part-1A1A是否找到了Worksheet#1 。如果是,那么我还要确保B2中的数字Worksheet#2与同一部分#旁边的Col B中的数量匹配,如果部分#和数量相同匹配,然后我想将C中Col Worksheet#1中相应单元格的值复制到C中的Col Worksheet#2。如果不匹配,我希望它返回0

2 个答案:

答案 0 :(得分:1)

基本上,您正在做的是基于两列中的值的查找。从这个角度来看,你可以使用任何版本的Excel都支持的SUMPRODUCT函数。在Sheet2,单元格C2中输入以下内容:

=SUMPRODUCT((Sheet1!$A:$A=$A2)*(Sheet1!$B:$B=$B2)*Sheet1!$C:$C)

选择并向下拖动C2的右下角以完成列C

这只能通过Sheet1,列C中的值是数字来实现。如果A的列BSheet1中的值对出现多次,则会中断,但您首先没有在问题中解决这种情况。

对于2007及以上版本,您可以使用更方便的函数SUMIFS,方法基本相同:

=SUMIFS(Sheet1!$C:$C,Sheet1!$A:$A,$A1,Sheet1!$B:$B,$B1)

或者,您可以结合使用IFVLOOKUP功能。适用于Excel 2007或更新版本的公式如下:

=IFERROR(IF(VLOOKUP($A1,Sheet1!$A:$C,2,FALSE)=$B1,VLOOKUP($A1,Sheet1!$A:$C,3,FALSE),0),0)

旧版本的Excel不支持IFERROR,但您仍然可以使用与here所述类似的方法。

我上传了一个示例工作簿here,其中包含DSheet2中的替代方法。

答案 1 :(得分:1)

以下是Reinier第二种方法的变体形式,适用于任何版本的Excel。您可以像我在这里一样使用对特定数据范围的引用,也可以使用对整列的引用。

  =SUM((A2=Sheet1!$A$2:$A$5)*(Sheet2!B2=Sheet1!$B$2:$B$5)*Sheet1!$C$2:$C$5)

这是一个数组公式,因此需要使用 Control - Shift - Enter 组合输入。它执行与SUMPRODUCT相同的操作。 (还有其他几种方法可以做到这一点,例如使用带有INDEX或OFFSET的MATCH。)

相关问题