SUMIF等效于数组公式

时间:2018-01-17 15:16:21

标签: excel excel-formula

我有一系列值(比如说H6:H20),其中包含值" g"," y"或" r"。
为了计算每个状态并将其用作圆环图的来源,我制作了一系列3个单元格来计算=COUNTIF($H$6:$H$20,"Green")等...

然后我尝试更优雅,并创建一个数组公式,返回每个字母的计数,我最终可以将其用作图表的来源,而不需要中间计算范围。但我无法做到这一点。

输入:

g
r
y
g
g
r
g
g
y

预期输出(使用单数组公式):

5
2
2

我的尝试:=COUNTIF({"g","y","r"},$H$6:$H$20) - >错误

其他尝试:=SUMPRODUCT(1*$H$6:$H$20={"g","y","r"}) - >错误

(两者都输入3个单元格范围, Ctrl + Shift + 输入,当然)

什么是正确的公式?

4 个答案:

答案 0 :(得分:2)

这就是FREQUENCY功能的用途。选择3个单元格并按以下公式按CTRL + SHIFT + ENTER:

=FREQUENCY(MATCH($H$6:$H$20,{"g","y","r"},0),MATCH($H$6:$H$20,{"g","y","r"},0))

答案 1 :(得分:2)

您不需要数组公式,但您确实需要将该公式存储为名称管理器中的定义名称,例如:

名称: Series_Values

指: Settings.Builder settingsBuilder = Settings.builder() .put("cluster.name", clusterName);

根据需要更改工作表名称(此处为=COUNTIF(Sheet1!$H$6:$H$20,{"g","y","r"})

然后,您可以使用以下语法为系列值条目添加系列到图表:

Sheet1

同样,根据需要修改工作表名称,但请务必保留感叹号和撇号(如果工作表名称不包含间距,则后者不是必需的,但无论如何这是一个好习惯)。

Excel实际上会将其修改为:

='Sheet1'!Series_Values

(其中=Book1!Series_Values是假设的工作簿名称),虽然这在这里并不重要。

此致

答案 2 :(得分:0)

假设这不是动态的,并且您有一定数量的行,则可以使用以下内容。假设您将此公式放在行20中:

=COUNTIF($A$1:$A$9,INDEX({"g","r","y"},ABS(20-(ROW()+1))))

然后向下拖动。

编辑:如果您想要在同一个单元格中,只需合并COUNTIF()

=COUNTIF($A$1:$A$9,"g")&","&COUNTIF($A$1:$A$9,"r")&","&COUNTIF($A$1:$A$9,"y")

答案 3 :(得分:0)

=IF({"g","y","r"}="g",COUNTIF($H$6:$H$20,"g"),IF({"g","y","r"}="y",COUNTIF($H$6:$H$20,"y"),IF({"g","y","r"}="r",COUNTIF($H$6:$H$20,"r"))))

我没有时间做一个更优雅的解决方案。您可以在公式栏中看到带有F9的数组对象。