Google工作表中的嵌套ArrayFormula - Uniques上的AverageIfs

时间:2015-12-04 22:18:30

标签: google-sheets

我试图找到一种方法将一些函数应用于表中的值,其中描述符位于唯一描述符数组中。

例如,平均唯一描述符的所有值。但是,我有unique数组函数,所以我想将它应用于vlookup给出的数组给出的所有值。

我希望这个公式作为一个数组公式(在一个单元格中输入,创建所需数组的长度,而不是必须复制未知数量的行)

=ARRAYFORMULA(AVERAGEIFS(values_to_avg,descriptors,UNIQUE(descriptors)))

或者,对于更一般的解决方案,我们希望能够采用与平均值不同的功能 - 我的不良尝试就是:

=ARRAYFORMULA(AVERAGE(ARRAYFORMULA(VLOOKUP(UNIQUE(descriptors),CHOOSE({1,2},descriptors, values_to_avg), 2,0))))

所以,我希望VLOOKUP唯一描述符的所有值,其中范围已由CHOOSE重新排列。现在我们想要这个独特的desirptor所在的所有值,所以我们必须使用ARRAYFORMULA。然后我们想要所有这些值的平均值,但是对于每个唯一的desriptor,所以我们需要另外一个arrayformula。

然而,这不起作用。

所以我不确定如何使用VLOOKUPFILTER s嵌套数组公式。

有没有人建议使用arrayformula来获取它?

示例

我有两列实验数据或用户输入:

sheet

我希望得到所有唯一值的平均值数组。 像这样:

=ARRAYFORMULA(AVERAGEIFS($A$2:$A,$B$2:$B,UNIQUE($B$2:$B)))

或者这个:

=ARRAYFORMULA(AVERAGE(arrayformula(VLOOKUP(UNIQUE($B$2:$B),CHOOSE({1,2},$B$2:$B, $A$2:$A), 2,0))))

这个嵌套数组公式函数可以工作吗?

1 个答案:

答案 0 :(得分:0)

查询适用于avg,但STDEV不适用于查询。在过滤唯一描述符之后,Arrayformula似乎存在列长度不匹配的问题。我提出的最好的是你的D2样本数据

=IFERROR(average(FILTER($A$2:$A$7, $B$2:$B$7=$C2)),"")

在E2中

=iferror(stdev(FILTER($A$2:$A$7, $B$2:$B$7=$C2)),"")

在添加新数据时解决公式问题。将以下内容放在脚本编辑器中并运行它。它将填补公式。

function FillFormulasDown() {
var ss= SpreadsheetApp.getActiveSpreadsheet()
sheet= ss.getActiveSheet()
var originRange = sheet.getRange("D2:E2");
var target = sheet.getRange("D3:E10");
originRange.copyTo(target);
}

我将目标(将公式复制到10以进行测试的距离)设置为D3:E10但是D3:E会填满整个工作表。 iferror会将这些显示为 空白,直到数据可用。看看这是否适合你。