【问题标题】:Excel Sum Range Match LookupExcel 总和范围匹配查找
【发布时间】:2017-06-22 08:10:44
【问题描述】:

我在excel中有下表:

__|______A_______|_________B___________|____C____|                        
1 |Client        | Description         | Amount  |
2 |Client One    | Water Services      | 50      |
3 |Client One    | Installation Fees   | 120     |
4 |Client One    | Telephone Services  | 130     |
5 |Client Two    | Food Services       | 20      |
6 |Client Two    | Pump Installation   | 40      |
7 |Client Two    | Door Installation   | 100     |
8 |Client Three  | Telephone Services  | 98      |
9 |Client Three  | Gas Services        | 34      |
10|Client Three  | Installation Fees   | 46      |

我需要一个公式来计算第二个工作表中每个客户的服务总量和每个客户的安装总量。例如,它应该检查描述是否在 B 列中包含文本“服务”,然后返回客户端的总金额,如下所示:

__|____A________|______B_________|______C_______|
1 |Client       | Description   | Total Amount |
2 |Client One   | Services      | 180          |
3 |Client One   | Installation  | 120          |
4 |Client Two   | Services      | 20           |
5 |Client Two   | Installation  | 140          |
6 |Client Three | Services      | 132          |
7 |Client Three | Installation  | 46           |

我尝试了以下公式,但我只能返回客户端的第一个值,并且表 1 中的描述(B 列)必须包含确切的文本,即“服务”或“安装” :

=INDEX(Sheet1!C2:C10,MATCH(A2&B2,Sheet1!A2:A10&Sheet1!B2:B10,0))
  1. 我需要能够获得总值而不是第一个值。
  2. 我还需要搜索描述是否包含“服务”或“安装”,然后返回金额。

【问题讨论】:

    标签: excel excel-formula


    【解决方案1】:

    这是一种方法:

    =SUM(($A$2:$A$10=A13)*(IFERROR(FIND(B13,$B$2:$B$10),0)>0)*$C$2:$C$10)
    

    这是一个数组公式,所以要输入公式按Ctrl+Shift+Enter(而不是只需 Enter)

    【讨论】:

      【解决方案2】:

      我支持 CallumDA 的解决方案,因为我个人是数组公式的粉丝。但是,由于 OP 问题的性质表明 Excel 经验有限,我认为数组公式的目标可能有点高。

      在我看来,更简单的替代方法是使用 SUMIFS-公式,例如

      =SUMIFS($C$2:$C$10;$A$2:$A$10;"Client One";$B$2:$B$10;"*Service*")
      

      只需将“客户一”替换为您列出客户的另一表的范围,我相信您应该很高兴。另外,请注意,Service 两侧的星号用作通配符,因此您可以同时获得“Water Service”、“Service Truck”和其他组合...

      【讨论】:

      • 非常好的建议。为什么不将“Service”替换为"*"&B13&"*"(例如,B13 的值为“Service”),以消除对硬编码的所有需求
      • 再次,完全支持您在 CallumDA 的建议!确实不错的补充:)
      【解决方案3】:

      你可以用SUMIF 做点什么。你可以做这样的事情来获取你所有的 Client One 条目

      =SUMIF(A2:A10,"Client One",C2:C10)
      

      要获得所有客户一号和服务,您可以使用 ISNUMBER(SEARCH)SUMIFS 执行类似的操作

      首先使用此公式为“Is a Service”添加一个额外的列

      =ISNUMBER(SEARCH("Service",B1))
      =ISNUMBER(SEARCH("Service",B2))
      ...
      

      这将返回真/假,然后像这样执行 SUMIFS

      =SUMIFS(A2:A10,C2:C10,"Client One",D2:D10,"TRUE")
      

      【讨论】:

      • 我认为这并不能解决“安装”涵盖许多不同领域的问题,例如“泵安装”、“门安装”等。
      • @CallumDA 它需要一个中间步骤来对所有安装和服务进行分组,但更新避免了这个额外步骤。
      猜你喜欢
      • 1970-01-01
      • 2016-12-24
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2021-09-05
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多