Excel函数帮助 – 将工作表中的2个单元格与另一个工作表中的2个单元格进行比较,如果匹配,则返回不同列中的值
我想知道是否有人能够提供一些build议,请最好的方法来做到这一点:
数据在工作表#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*
在单元格C2
Worksheet#2
中 – 我想检查A1
的Part-1
是否在Worksheet#1
A
中find。 如果是这样,那么我也想确保在Worksheet#2
中的数字B2
与在相同部分#旁边的列B
中的数量匹配,如果部分#和数量匹配,那么我想跨越值从Worksheet#1
中Col C
中的相应单元格复制到Worksheet#2
Col C
如果不匹配,我希望它返回一个0
。
这是Reinier第二种方法的一种变体,它可以在任何版本的Excel中工作。 您可以使用对特定数据范围的引用,正如我在这里所做的,或者对整个列。
=SUM((A2=Sheet1!$A$2:$A$5)*(Sheet2!B2=Sheet1!$B$2:$B$5)*Sheet1!$C$2:$C$5)
这是一个数组公式,所以需要用Control – Shift – Enter组合键 input 。 它执行与SUMPRODUCT相同的操作。 (还有其他几种方法可以做到这一点,例如使用带INDEX或OFFSET的MATCH。)
本质上,你在做什么是基于两列值的查找。 从这个angular度来看,您可以使用任何版本的Excel都支持的SUMPRODUCT
函数。 在工作表Sheet2
,单元格C2
input以下内容:
=SUMPRODUCT((Sheet1!$A:$A=$A2)*(Sheet1!$B:$B=$B2)*Sheet1!$C:$C)
select并向下拖动C2
右下angular以完成C
列。
这只能依靠Sheet1
列C
中的值是数字这一事实。 如果Sheet1
A
和B
列中A
值对出现多次,它就会中断,但是您首先不会在您的问题中解决这种情况。
对于版本2007及更高版本,您可以使用更方便的函数SUMIFS
和基本相同的方法:
=SUMIFS(Sheet1!$C:$C,Sheet1!$A:$A,$A1,Sheet1!$B:$B,$B1)
或者,您可以使用IF
和VLOOKUP
函数的组合。 适用于Excel 2007或更高版本的公式如下:
=IFERROR(IF(VLOOKUP($A1,Sheet1!$A:$C,2,FALSE)=$B1,VLOOKUP($A1,Sheet1!$A:$C,3,FALSE),0),0)
早期版本的Excel不支持IFERROR
,但您仍可以使用类似的方法,如此处所述。
我已经在这里上传了一个示例工作簿,其中还包括Sheet2
D
列中的另一种方法。