沿“ SUMIF”中总和范围的标准范围广播

时间:2019-03-06 08:11:54

标签: google-sheets

如果两个参数使用不同的范围尺寸,Google电子表格可以广播其功能中的行或列,尤其是在SUMIF中吗?

例如,我希望SUMIF(B1:F1, "Offices", B2:F4)返回56+23+23,因为在行维中将重复1x5范围B1:F1以匹配3x5范围B2:F4。 PS:这种重复称为“维度广播”。不幸的是,这行不通,SUMIF只是忽略了没有条件的两行并返回了56

     A       B            D        D     E          F
1    Month   Maintenance  Offices  Cars  Employees  Cars 
2    Jan     23           56       43    23         56
3    Feb     12           23       67    43         21
4    March   44           23       45    56         45

问题:我是否可以在SUMIF中指定一个条件,使列或行保持固定(如条件格式设置那样)?换句话说,如何在SUMIF中指定一个标准,以便广播标准范围?

为什么DSUM不起作用:请注意SUMIF(B1:F4,"Offices",B1:F4)可以解决问题,只是由于B1:F4不是一个合适的数据库,在这里它会失败,因为存在两列名为"Car"。此外,DSUM要求列标题与它们的数据相邻,而我想我想将总和放在标题和数据之间。话虽这么说,我还想学习一个强大的imho概念,而不是DSUM函数。

条件格式 Google电子表格确实提供了格式广播,例如,如果我在条件A1:F4下格式化范围=A$1="Cars",则两个“汽车”列将被格式化,即使它们是列DF

与numpy进行比较,可以广播 numpy,可以在编写Python时用作电子表格库,它执行(维度)广播。考虑一个1行3列的数组(读取电子表格)a和另一个3行3列的数组b。然后,我们可以要求numpy乘以两个元素(读取单元格),然后将a的单行重复三次以匹配b的尺寸:

import numpy

a = numpy.array([
    [0, 1, 2]
])

b = numpy.array([
    [0, 1, 2],
    [3, 4, 5],
    [7, 8, 9],
])

a * b

结果,请注意整个第一列乘以0,整个第二列乘以1,整个第三列乘以2:

numpy.array([
    [0, 1, 4],
    [0, 4, 10],
    [0, 8, 18],
])

1 个答案:

答案 0 :(得分:1)

=SUMPRODUCT(QUERY(TRANSPOSE(A1:F10), "where Col1 = 'Offices'"))

2