Excel 基于不同表中的列条件对表中的行执行SUMIF

Excel 基于不同表中的列条件对表中的行执行SUMIF,excel,excel-formula,Excel,Excel Formula,我有一个具有以下标题和总计行的表: . 它有包含模块名称和其他列编号的数据行 我还有这张桌子: . 在分配列中,每个特定段都会获得以下其中之一:编码区、施工区或随机区 对于段值中的每个模块(行),我需要根据段中的分配,将其代码区、常量区或内存区单元格作为分配的所有段的总和。我尝试过这个公式:=SUMIF(Segments[Allocation],“code_ZONE”,SegmentValues[@[DIFUNCT]:[SECUID]]),但它只适用于第一个元素。在这种情况下应该使用什么函数以及

我有一个具有以下标题和总计行的表: . 它有包含模块名称和其他列编号的数据行

我还有这张桌子: . 在
分配
列中,每个特定段都会获得以下其中之一:
编码区
施工区
随机区


对于段值中的每个模块(行),我需要根据段中的分配,将其
代码区
常量区
内存区
单元格作为分配的所有段的总和。我尝试过这个公式:
=SUMIF(Segments[Allocation],“code_ZONE”,SegmentValues[@[DIFUNCT]:[SECUID]])
,但它只适用于第一个元素。在这种情况下应该使用什么函数以及如何使用?

尝试使用
MMULT
函数如下:

=MMULT(段值[@[DIFUNCT]:[SECUID]],(段[分配]=“代码区”)+0)

MMULT
将一行中的每个值与相同大小的一列中的相应值相乘(并将结果相加为一个值)。所有值都必须是数字,因此
(段[分配]=“代码区”)
返回一个
真/假
值数组,添加0将这些值转换为
1/0


SegmentValues
范围不能包含空格,但零是可以的

我使用以下公式成功地做到了这一点:

=SUMPRODUCT(SegmentValues[@[DIFUNCT]:[SECUID]]*(SegmentValues[[#Headers],[DIFUNCT]:[SECUID]]=Segments[Segments])*(Segments[Allocation]="CODE_ZONE")
它是一个只有一个数组的SUMPRODUCT,只从一个范围中获取,但有两个条件:

  • 要从SegmentValues添加的单元格标题与Segments中的段名称匹配
  • 与所述段单元对应的分配列中的单元为
    code\u区域

  • 你试过我的建议吗?是的,我试过了,结果完全一样。唯一的问题是,它施加了两个限制:为转换添加零和不包含空格的分段值。是的,“无空格”是一个限制,但+0实际上不是一个限制,更像是公式的人工制品。如果需要,还可以在数组公式中转置其中一个数组,如
    =SUM((段[Allocation]=“code\u ZONE”)*转置(段值[@[DIFUNCT]:[SECUID]])
    -需要数组条目