我试图找到一种方法将一些函数应用于表中的值,其中描述符位于唯一描述符数组中。
例如,平均唯一描述符的所有值。但是,我有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。
然而,这不起作用。
所以我不确定如何使用VLOOKUP
或FILTER
s嵌套数组公式。
有没有人建议使用arrayformula来获取它?
示例:
我有两列实验数据或用户输入:
我希望得到所有唯一值的平均值数组。 像这样:
=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))))
这个嵌套数组公式函数可以工作吗?
答案 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会将这些显示为 空白,直到数据可用。看看这是否适合你。