表中行的SUMIF基于不同表中的列标准

时间:2017-11-28 08:17:03

标签: excel excel-formula

我有一个包含以下标题和总计行的表格: SegmentValues 。它的数据行包含模块名称和其他列的数字。

我也有这张桌子: Segments 。在Allocation列中,每个特定细分受众群都会得到:CODE_ZONECONST_ZONERAM_ZONE

对于SegmentValues中的每个模块(行),我需要根据Segments中的分配,使其CODE_ZONECONST_ZONERAM_ZONE单元格为其中分配的所有段的总和。我尝试过这个公式:=SUMIF(Segments[Allocation], "CODE_ZONE", SegmentValues[@[DIFUNCT]:[SECUID]]),但它只适用于第一个元素。在这种情况下应该使用什么功能以及如何使用?

2 个答案:

答案 0 :(得分:1)

尝试使用MMULT这样的功能:

=MMULT(SegmentValues[@[DIFUNCT]:[SECUID]],(Segments[Allocation]="CODE_ZONE")+0)

MMULT会将单行中的每个值与相同大小的单个列中的相应值相乘(并将单个值的结果相加)。所有值都必须为数字,以便(Segments[Allocation]="CODE_ZONE")返回TRUE/FALSE值数组,并添加0将这些值转换为1/0

SegmentValues范围不得包含空格,但零可以

答案 1 :(得分:0)

我设法使用这个公式:

=SUMPRODUCT(SegmentValues[@[DIFUNCT]:[SECUID]]*(SegmentValues[[#Headers],[DIFUNCT]:[SECUID]]=Segments[Segments])*(Segments[Allocation]="CODE_ZONE")

这是一个只有一个阵列的SUMPRODUCT,仅从一个范围中获取,但有两个条件:

  1. 要从SegmentValues添加的单元格的标题与Segments中的段名称匹配。
  2. 与所述Segment单元格对应的Allocation列中的单元格为CODE_ZONE