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

时间:2017-05-15 17:02:52

标签: arrays excel sumifs

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

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

我的问题是我在范围上做SUMIF时遇到了麻烦。我知道我可以使用ISNUMBER(SEARCH())来确定我的列C字符串是否包含在A列中,并且我知道我可以根据是否在A中搜索C来使用SUMIF B列,但我不能以这样的方式应用它,我得到一个公式我可以应用到整个列D,因为C中的单词不匹配该单词出现在A中的行。此外,SEARCH()似乎在我和#39;我正在搜索一个数组,我认为因为它不再是一个字符串所以我得到类型不匹配?

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

示例:此处的工作表1. A是字符串,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中断,因为我无法通过所有A列搜索C中的特定单词,并且仅当C包含在A中时才取出B值。

2 个答案:

答案 0 :(得分:1)

例如:单词组合位于A1:A20B1:B20中的随机值以及C1:C10.中的唯一字词列表 输入数组公式( 输入 Ctrl + Shift + 输入 而不只是输入):

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

并拖放/复制。

enter image description here

修改

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

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))

答案 1 :(得分:1)

将SUMIF与Wild卡一起使用:

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

enter image description here