复杂的嵌套Excel函数

我正在Excel中的一个函数,这将允许我总结列,如果它之前的列包含单词“pre”

这是一个模拟电子表格:

Grade Points Possible C++ Pre Test 20 20 Homework Week 1 30 30 C++ Test 90 100 

现在我想用SUMIF()函数和一个嵌套在其中的SEARCH()函数来检查单元格A2到A4,如果find单词“pre”,它将在列B中求和相应的数字。

这是我迄今为止似乎没有工作:

 =SUMIF(A2:A4,SEARCH("pre",A2:A4),B2:B4) 

我打算这样说的是“如果在范围a2:a4的任何单元格中find单词”pre“,则从b栏中的相应等级拉出该值。 我期望的模拟电子表格的输出是'20',因为pre只出现一次。

也许一个VBmacros将是为了?

编辑:进一步调查也许LOOKUP()函数可能是最适合的,因为SEARCH()用于从它正在search的列中返回一个值。

 =SUMIF(A2:A4, "=*pre*",B2:B4) 

以上将无法正常工作。 如果数组大于2(我知道是这样),那么可以将它扩展到sumproduct函数的最多30次迭代

 =SUMPRODUCT(B2*IF(ISERROR(SEARCH(" Pre ",A2)),0,1),B3*IF(ISERROR(SEARCH(" Pre ",A3)),0,1)) 

如果你使用sum或者sumproduct ,并且30是最大值,那么你真的没有什么区别,你只需要使用=SUM() + SUM()就可以得到60的倍数。

另一个select是使用列C和惰性这到C1并复制下来

=IF(ISERROR(SEARCH(" Pre ",A1)),"",B1)

并在最后总结。

下一个选项就像你提到的 – 一个macros观的滚动和用于我,下一个我

拆开你的配方。

=Search("Pre",A2)返回5 – 我不认为你想在你的总和。

试试这个:

创build一个新的列D ,在列A中查找单词“pre”。 也许像=iferror(Search("Pre",A2),1,0)) [如果Pre存在于该单元格中,返回1,否则返回0]

现在, sumproduct(B:B,D:D)应该给你预testing所得的积分,而sumproduct(C:C,D:D)应该给你可能的点数。