复杂嵌套Excel函数

复杂嵌套Excel函数,excel,Excel,我正在使用Excel中的一个函数,如果前面的列包含单词“pre”,它将允许我对列求和 这是一个模拟电子表格: Grade Points Possible C++ Pre Test 20 20 Homework Week 1 30 30 C++ Test 90 100 现在我想使用SU

我正在使用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”,因为pre只出现一次

也许VB宏是合适的


编辑:进一步研究后,可能最适合使用LOOKUP()函数,因为SEARCH()用于从正在搜索的列返回一个值。

上述方法不起作用。如果数组超过2个(我知道是这样),您可以将其扩展到sumproduct函数的30次迭代中

=SUMIF(A2:A4, "=*pre*",B2:B4)
=SUMPRODUCT(B2*IF(ISERROR(SEARCH(" Pre ",A2)),0,1),B3*IF(ISERROR(SEARCH(" Pre ",A3)),0,1))
如果你使用
sum
sumproduct
的话,我看不出有什么区别,虽然30是最大值,但你只需要做倍数,比如
=sum()+sum()
就可以得到60

另一种选择是使用列
C
并将其惰性地复制到
C1
中,然后向下复制

=IF(iError(搜索(“Pre”,A1)),“”,B1)

最后求和


下一个选项如您所述-滚动和宏用于i,下一个i

上述选项将不起作用。如果数组超过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

另一种选择是使用列
C
并将其惰性地复制到
C1
中,然后向下复制

=IF(iError(搜索(“Pre”,A1)),“”,B1)

最后求和


下一个选项如您所述-一个滚动和的宏用于i,下一个i

分解您的公式

=Search(“Pre”,A2)
返回5-我认为您不希望在sumif中出现这种情况

请尝试以下方法:

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


现在
sumproduct(B:B,D:D)
应该给你在预测试中获得的分数,
sumproduct(C:C,D:D)
应该给你可能的分数。

把你的公式拆开

=Search(“Pre”,A2)
返回5-我认为您不希望在sumif中出现这种情况

请尝试以下方法:

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


现在
sumproduct(B:B,D:D)
应该给你在预测试中获得的分数,
sumproduct(C:C,D:D)
应该给你可能的分数。

谢谢你,这解决了我的问题,在我更复杂的实际电子表格中,它最终得到了这样的平均值:=average(SUMIF(A4:A100,=*pre*”,B4:B100),COUNTIF(A4:A100,“=*pre*”)在1991年MS Excel宏培训手册的介绍中看到:“最好的宏是没有宏”。这是真的……谢谢,这解决了我的问题,在我更复杂的实际电子表格中,它最终得到了一个平均值函数,如:=average(SUMIF(A4:A100,=*pre*”,B4:B100),COUNTIF(A4:A100,=*pre*)在1991年微软Excel宏培训手册的介绍中可以看到:“最好的宏就是没有宏”。这是真的。。。