2013-04-03 32 views
0

我想知道是否有人能够提供一些关于最佳方式的建议,请:Excel函数帮助 - 将2个工作表中的单元格与另一个工作表中的2个单元格进行比较,如果匹配,则返回不同列中的值

数据在表#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* 

In Worksheet#2 in Cell C2 - 我想检查A1中的Part-1是否在的Worksheet#1中找到。如果是,那么我也想确保B2中的B2与中的Col B的数量相同,如果Part#和Qty都匹配,那么我想复制整个数值的Worksheet#1中的对应单元,至CWorksheet#2。如果不匹配,我希望它返回0

+0

您可以重新格式化问题中的问题表吗?间距不匹配。在提交之前,在行尾使用两个空格来制作一个换行符并检查预览窗口。 – wilsjd

+0

如果我已经理解了你的问题,那么你可以使用公式来比较两个单元格,使用IF(),然后在数据匹配的情况下返回列C的值。 –

+0

我试图重新格式化,请问我知道这看起来如何请。 – user2241640

回答

1

基本上,你在做什么是基于两列值的查找。从这个角度来看,你可以使用任何版本的Excel都支持的SUMPRODUCT函数。输入Sheet2下,细胞C2

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

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

这仅适用于Sheet1C中的值为数字。如果Sheet1的列AB中的值对出现多次,那么它会中断,但您首先并未在您的问题中解决这种情况。

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列中的替代方法。

+0

嗨Reinier - 非常感谢您的回复。这是我第一次参加一个论坛,我非常感谢你甚至不知道的其他人的帮助!不幸的是,我忽略提及一个非常关键的问题,现在即时通讯阅读您的味精,我有Excel 2003:(因此想知道如果有什么办法可以修改这个版本在我的版本中工作?) – user2241640

+0

欢迎使用StackOverflow。请务必阅读[FAQ ](http://stackoverflow.com/faq),尤其是关于投票和接受答案的章节[我在这里问问题?](http://stackoverflow.com/faq#howtoask)。我认为'SUMPRODUCT '方法应该与Excel 2003一起工作,你是否尝试过?我上传了一个[以旧格式保存的工作簿版本](http://temp-share.com/show/Pf3Y1AbK20),但我无法验证它2003 ... –

1

这是Reinier第二种方法的一种变体,它可以在任何版本的Excel中工作。您可以使用对特定数据范围的引用,正如我在此处所做的那样,或对整个列。

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

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

相关问题