如果相邻列符合某些标准,是否有条件地添加一列的值?

我有两列A和B. A包含单词('word1 word2','word3','word1 word4'等)的string组合,列B包含一个数字。

然后我有一个单独的工作表,C列,其中包含每个独特的词出现在原来的A列。 我想要做的就是将所有列C的值加起来,其中列C出现在A的匹配行中,并放到列D中。

我的问题是我在执行范围上的SUMIF时遇到问题。 我知道我可以使用ISNUMBER(SEARCH())来判断列C是否包含在列A中,而且我知道我可以根据是否在A中searchC来获得SUMIF列B,但是我不能应用它以这样的方式,我得到一个公式,我可以适用于整个列D,因为在C中的单词不匹配的行与该单词出现在A的位置。此外,search()似乎打破了,当我通过search一个数组,我想因为它停止了一个string,所以我得到types不匹配?

我可以根据需要澄清,我明白这有点混乱。 提前谢谢你的帮助。

示例:这里是工作表1. A是string,B是Int

A | B word1 word2 | 1 word2 word3 | 5 word4 word1 | 10 

和工作表2。

 C | D word1 | 11 (because row 1 and row 3 both contain word1) word2 | 6 (row 1 and row 2 contain word2) word3 | 5 (only row 2 contains word3) word4 | 10 (only row 3 contains word4) 

我想填充D. SumIf中断,因为我不能通过C中的特定单词的所有列A进行search,只有当C被包含在A中时,才会提取B值。

与通配符一起使用SUMIF:

 =SUMIF(Sheet1!A:A,"*" & C1 & "*",Sheet1!B:B) 

在这里输入图像说明

例如:单词的组合在A1:A20B1:B20随机值和C1:C10.中的唯一单词列表C1:C10. 键入数组公式 (键入Ctrl + Shift + Enter而不是Enter ):

 =SUM(IF(ISERR(FIND(C1,$A$1:$A$20)),0,SIGN(FIND(C1,$A$1:$A$20))*$B$1:$B$20)) 

D1拖放/复制下来。

在这里输入图像说明

编辑

假设一个单词不能成为另一个单词的一部分,如nightknight ,在这种情况下, FIND(...)应该被replace为

 FIND(" "&C1&" "," "&$A$1:$A$20&" ") 

那就是D1的数组函数变为

 =SUM(IF(ISERR(FIND(" "&C1&" "," "&$A$1:$A$20&" ")),0,SIGN(FIND(" "&C1&" "," "&$A$1:$A$20&" "))*$B$1:$B$20))