我想知道是否有人能够就最佳方式提供一些建议:
工作表#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-1
中A1
中A
是否找到了Worksheet#1
。如果是,那么我还要确保B2
中的数字Worksheet#2
与同一部分#旁边的Col B
中的数量匹配,如果部分#和数量相同匹配,然后我想将C
中Col Worksheet#1
中相应单元格的值复制到C
中的Col Worksheet#2
。如果不匹配,我希望它返回0
。
答案 0 :(得分:1)
基本上,您正在做的是基于两列中的值的查找。从这个角度来看,你可以使用任何版本的Excel都支持的SUMPRODUCT
函数。在Sheet2
,单元格C2
中输入以下内容:
=SUMPRODUCT((Sheet1!$A:$A=$A2)*(Sheet1!$B:$B=$B2)*Sheet1!$C:$C)
选择并向下拖动C2
的右下角以完成列C
。
这只能通过Sheet1
,列C
中的值是数字来实现。如果A
的列B
和Sheet1
中的值对出现多次,则会中断,但您首先没有在问题中解决这种情况。
对于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
,但您仍然可以使用与here所述类似的方法。
我上传了一个示例工作簿here,其中包含D
列Sheet2
中的替代方法。
答案 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。)