如果2列或3列包含特定文本,则需要对列进行求和

时间:2015-05-15 14:32:14

标签: excel find sumifs

我有以下数据集,并希望添加反映" ABC"在任何细胞中。

      Column1      Column 2      Column 3     Column 4   Column 5   
      ABC is good    CNN           $150         ABC       NBA
      Better life    N-H           $40          LIT       MNM
      Nice Job       ABC is good   $35          MN        ABC
      Poor           H-I           $200         ITL       ABC
      Best           TI            $120         SQL       ABC  
      Poor life      N-T           $40          LT        NM
      Great          BE            $800         ABC       BEF

它应该返回的金额是150美元+ 35美元+ 200 + 120 + 400美元= 905美元,因为在单元格的某个地方它有文本" ABC"。我尝试使用sumif(find)公式,但给了我价值错误。 有什么想法吗?

2 个答案:

答案 0 :(得分:3)

简答

使用此数组公式:

=SUMPRODUCT(IF(IF(LEN(SUBSTITUTE(A:A,"ABC",""))<LEN(A:A),1,0)+IF(LEN(SUBSTITUTE(B:B,"ABC",""))<LEN(B:B),1,0)+IF(LEN(SUBSTITUTE(D:D,"ABC",""))<LEN(D:D),1,0)+IF(LEN(SUBSTITUTE(E:E,"ABC",""))<LEN(E:E),1,0)>0,1,0),C:C)

注意:使用 ctrl输入数组公式 + shift + 输入

要测试单元格是否包含ABC,我们可以使用SUBSTITUTE forumla和LEN来测试字符串长度之间的差异:

LEN(SUBSTITUTE(A:A,"ABC",""))<LEN(A:A)

然后我们可以在IF语句中包含它以获得一个很好的数组1和0&#39>

IF(IF(LEN(SUBSTITUTE(A:A,"ABC",""))<LEN(A:A),1,0)

如果我们为您的数据映射出来,它将如下所示:

IF(IF(LEN(SUBSTITUTE(A:A,"ABC",""))<LEN(A:A),1,0) = {0, 1, 0, 0, 0, 0, 0, 0}
IF(IF(LEN(SUBSTITUTE(B:B,"ABC",""))<LEN(B:B),1,0) = {0, 0, 0, 1, 0, 0, 0, 0}
IF(IF(LEN(SUBSTITUTE(D:D,"ABC",""))<LEN(D:D),1,0) = {0, 1, 0, 0, 0, 0, 0, 1}
IF(IF(LEN(SUBSTITUTE(E:E,"ABC",""))<LEN(E:E),1,0) = {0, 0, 0, 1, 1, 1, 0, 0}
                                                 += {0, 2, 0, 2, 1, 1, 0, 1}

然后我们要做的就是检查数组中的数字是>0并使用SUMPRODUCT将其乘以C列:

      {0, 2,   0,  2,  1,   1,   0,  1  }
>0    {0, 1,   0,  1,  1,   1,   0,  1  }
*C:C  {0, 150, 40, 35, 200, 120, 40, 800}
=     {0, 150, 0,  35, 200, 120, 0,  800}
-----------------------------------------
SUM = 1305

答案 1 :(得分:2)

由于我们在任何单元格中查找ABC,我们可以使用CONCATENATE-FIND将所有单元格连接在一起,然后在新字符串中找到ABC。这节省了大量代码并简化了逻辑。它总是可以更容易地扩展到更多的细胞。

范围供参考

ranges

G1中的

公式。这是一个数组公式(使用CTRL + SHIFT + ENTER输入)。

=SUM(IF(ISERR(FIND("ABC",CONCATENATE(A1:A7,B1:B7,D1:D7,E1:E7))), 0, C1:C7))

工作原理

  • CONCATENATE形成一个包含所有列的单个大字符串
  • FIND在该单个字符串中查找ABC。如果找到则返回一个数字,否则返回错误(#VALUE
  • ISERR检查是否返回了错误
  • IF决定是否应该返回列C中的值,还是基于该错误0
  • SUM获取所有这些数字并添加它们