如果相邻列满足特定条件,有条件地添加一列的值?

Conditionally add values of one column if a neighboring column meets certain criteria?

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

然后我有一个单独的 sheet,带有 C 列,其中包含原始 A 列中出现的每个唯一单词。我想要做的是将 C 列单词出现在 A 中匹配行中的所有 B 列值相加,并将其放入 D 列中。

我的问题是我在对范围执行 SUMIF 时遇到问题。我知道我可以使用 ISNUMBER(SEARCH()) 来确定我的列 C 字符串是否包含在列 A 中,并且我知道我可以根据是否在 A 中搜索 C 来 SUMIF 列 B,但我不能应用它通过这种方式,我得到了一个可以应用于整个 D 列的公式,因为 C 中的单词与该单词在 A 中出现的行不匹配。另外,当我搜索时,SEARCH() 似乎中断了一个数组,我想因为它不再是一个字符串所以我得到类型不匹配?

我可以根据需要澄清,我知道这有点令人困惑。非常感谢您的帮助。

例子:这里是Sheet 1.A是字符串,B是Int

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

和Sheet 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 中断,因为我无法让它在所有 A 列中搜索 C 中的特定单词,并且仅当 C 包含在 A 中时才提取 B 值。

例如:单词组合在A1:A20, B1:B20 中的随机值,以及 C1:C10. 中的唯一单词列表 输入数组公式 ( 输入Ctrl+Shift+Enter 而不仅仅是 Enter):

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

D1和drag/copy下。

编辑

假设一个词不能成为另一个词的一部分, 像 nightknight,在这种情况下 FIND(...) 应替换为

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

D1中的数组函数改为

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

将 SUMIF 与通配符一起使用:

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