2010-11-24 67 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)應該給你點可能。