我每个项目都有一个值列表,每个类别都有一个单独的项目列表。如何使用公式返回每个类别的总计?

时间:2019-03-25 16:38:05

标签: excel-formula

我正在尝试为每个“类别”名称做一个SUMIF公式,但是我试图求和的数据都是类别中的所有“项目”。我知道可以使用VBA做到这一点,但是如何使用公式呢?

对于一个简单的示例,我创建了3个简单的表:

每件商品的销售额(A1:B7)

每个类别的项目(D1:E7)

我想知道每个类别的销售额(G1:H3)

由于我还没有发布图片的“声誉”,因此以下是屏幕截图的链接:

1

https://imgur.com/IpLXuYF] 1] 1

很明显,仅当我在第一个表中创建新的Category列时,才会使用简单的SUMIF。由于我不愿讨论的原因,这是不可扩展的。

我还尝试过在SUMIF中使用TEXTJOIN为每个类别创建一个匹配项的数组,但是只返回0。

以下代码(输入到H2中)返回每个类别的项目列表(请注意,外部花括号来自使用Control-Shift-Enter使其成为数组公式):

file = open("file.txt", "w+")
input = file.read().split("\n")

output = {}
for line in input:
    line = line.split(" ")
    if line[1] in output:
        output[line[1]] += int(line[0])
    else:
        output[line[1]] = int(line[0])

for line in output:
    file.write(line + " " + str(output[line]) + "\n")

但是,如果我将其嵌套在SUMIF中,就像这样:

{=TEXTJOIN(",",TRUE,IF(D2:D7=G2,E2:E7,""))}

它返回0,因为它将TEXTJOIN值视为单个字符串,而不是数组。

我还没有找到将TEXTJOIN视为多个条件的方法。或其他解决我的问题的方法。

我很想找到一个解决此问题的公式,因为它也可以在许多其他应用程序中使用。

谢谢!

1 个答案:

答案 0 :(得分:0)

使用以下数组公式:

=SUM(SUMIFS(B:B,A:A,IF($D$2:$D$7=G2,$E$2:$E$7)))

作为数组公式,退出编辑模式时需要使用Ctrl-Shift-Enter而不是Enter进行确认。

![enter image description here