Excel SUMIF基于使用文本字符串的数组

时间:2014-09-10 09:36:27

标签: excel-formula

有没有办法将包含文本字符串的单元格地址替换为以下公式中的数组条件?

= SUM(SUMIF(A5:A10,{1,22,3},E5:E10))

因此,代替{1,22,3},在单元格A2中输入“1,22,3”,公式变为 = SUM(SUMIF(A5:A10,A2,E5:E10))

我试过但结果是0(参见C16)

    A   B   C   D   E   F   G   H
1   Tree                            
2   {1,22,3}                1           
3                   22          
4   Tree    Profit          3           
5   1   105                     
6   2   96                      
7   1   105                     
8   1   75                      
9   2   76.8                        
10  1   45                      
11                              
12          330 =SUM(SUMIF(A5:A10,{1,22,3},B5:B10))             
13                              
14          330 =SUMPRODUCT(SUMIF(A5:A10,E2:E3,B5:B10))             
15                              
16          0   =SUM(SUMIF(A5:A10,A2,B5:B10))               
17              NB: Custom Format "{"@"}" on Cell A2 I enter 1,22,3 so it displays {1,22,3}             

1 个答案:

答案 0 :(得分:0)

好的,经过一些进一步的搜索(见Excel string to criteria)和反复试验,我得出了以下解决方案。

使用名称管理器我创建了名为GetList的UDF,它指的是:

= EVALUATE(Sheet1!$ A $ 3)注意:单元格A3中有这个公式= TEXT(A2," {@}")

然后我使用了以下公式:

= SUMPRODUCT(SUMIF($ A $ 5:$ A $ 12的GetList,$ B $ 5:$ B $ 12))

根据其他两个公式给出所需的321结果(见下面的D12)。

如果有人能提出更好的解决方案,请随意这样做。

感谢Dennis关于我的原始帖子

        A        B          C        D          E
    1   Tree                
    2   1,22,3                       1
    3  {1,22,3} =TEXT(A2,"{@}")      22
    4   Tree    Profit               3
    5   11      105         
    6   22      96          
    7   1       105         
    8   3       75          
    9   2       76.8            
    10  1       45          
    11                  
    12                              321 =SUMPRODUCT(SUMIF($A$5:$A$12,GetList,$B$5:$B$12))   
    13                  
    14                              321 =SUM(SUMIF(A5:A10,{1,22,3},B5:B10)) 
    15                  
    16                              321 =SUMPRODUCT(SUMIF(A5:A10,E2:E3,B5:B10)) 
    17                  
    18                              0   =SUM(SUMIF(A5:A10,A2,B5:B10))   
    19                      NB: Custom Format "{"@"}" on Cell A2 I enter 1,22,3 so it displays {1,22,3}