2010-11-24 40 views
0

我工作的Excel中的一个功能,让我如果列包含单词“预”复杂的嵌套Excel函数

这里是一个模拟的电子表格之前总结列:

    Grade   Points Possible 

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

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

这里是到目前为止,我似乎没有工作:

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

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

也许一个VB宏将按顺序?

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

回答

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

谢谢,这解决了我要做的事情,在我更复杂的实际电子表格中,它以如下的平均函数结束: = AVERAGE(SUMIF(A4:A100,“= * pre *”,B4: B100),COUNTIF(A4:A100,“= * pre *”)) – 2010-11-24 20:28:53

1

以上将无法使用。如果数组超过2(我知道这是),你可以在多达30次迭代延长本作的SUMPRODUCT函数

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

我实在看不出任何区别,如果你使用sumsumproduct,虽然30是MAX,你只是不喜欢=SUM() + SUM()倍数将使60

另一种选择是使用列C和惰性到这个C1,并将其复制下来

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

并在最后加上总和。

下一个选项是你提到 - 使用我的滚动和宏,接下来我

0

拆开公式。

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

试试这个:

创建一个新的列D看起来在A列单词“预”。也许像=iferror(Search("Pre",A2),1,0)) [如果预先在该单元格存在,返回1,否则返回0]

现在sumproduct(B:B,D:D)应该给你赚上预测试点,sumproduct(C:C,D:D)应该给你点可能。