复杂的嵌套Excel函数

时间:2010-11-24 19:59:53

标签: excel

我正在使用Excel中的一个函数,如果列前面的列包含单词“pre”,我可以对列进行求和

这是一个模拟电子表格:

                   Grade          Points Possible

C++ Pre Test         20                   20
Homework Week 1      30                   30
C++ Test             90                  100

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

到目前为止,我所拥有的似乎并不起作用:

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

我打算这样说“如果在a2:a4范围内的任何单元格中找到'pre'一词,请从b列中的相应等级中提取值”。我希望模拟电子表格的输出为'20',因为预先只显示一次。

也许VB宏会按顺序排列?

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

3 个答案:

答案 0 :(得分:3)

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

答案 1 :(得分:1)

以上不起作用。如果数组超过2(我知道它是)你可以在sumproduct函数最多30次迭代上扩展它

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

如果您使用sumsumproduct并且30是最大值,我确实看不出任何差异,您只需像=SUM() + SUM()这样的倍数就会生成60。

另一种选择是使用列C并将其惰性化为C1并将其复制下来

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

并在最后总结。

下一个选项就像你提到的那样 - 一个用于i的滚动总和的宏,下一个

答案 2 :(得分:0)

拆开你的公式。

=Search("Pre",A2)返回5 - 我认为你在你的总结中不想要那个。

请改为尝试:

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

现在sumproduct(B:B,D:D)应该为您提供预测试所获得的积分,sumproduct(C:C,D:D)应该为您提供积分。