0

我在 Google 表格中构建了一个函数,该函数获取数据页面并将其传递以从数据集中提取指标(基于提取数据的数据透视表)。所有数据都以编程方式提取,以相同方式格式化,并按标准化约定命名。我想要集合中所有高于 100 的值的标准偏差,并且在大多数情况下,我构建的函数都有效:

=STDEV((IF(INDIRECT($A7&"!B:B")>100,INDIRECT($A7&"!B:B"),""))

然而,对于一些较小的数据集,STDEV 开始抛出错误,代表没有传递足够的参数。我尝试通过提取碎片、消除阈值并尝试其他种类的 STDEV 进行调试(STDEVA 给我一个 DIV/0 错误,STDEVP 和 STDEVPA 返回 0 作为标准偏差),当我拉出 IF 语句时,它看起来像它返回 FALSE,就好像集合中没有符合条件的数据一样。除了,当我将阈值降低到 > 0 或完全消除阈值时,它仍然不起作用,而且我知道所有错误数据集中有 4 个以上的值 > 100。事实上,同一个调用在它旁边的列中求和为非零。更重要的是,除了这些数据集之外,该函数在其他任何地方都可以使用。

是什么赋予了?

欲了解更多信息,这里有一个可查看的工作表链接:

https://docs.google.com/spreadsheets/d/1b_456W9UlkuIc6W_FjmFwgycY1xAUkD_W9aMSxG0N6o/edit?usp=sharing

这是 STDEV 抛出的错误:

“函数 STDEV 参数 1 需要数字值。但 '' 是文本,不能强制转换为数字。”

哈尔普

4

1 回答 1

1

利用:

=IFERROR(AVERAGEIF(INDIRECT($A15 & "!B:B"), ">100"))

和:

=IFERROR(STDEV(IF(INDIRECT($A15&"!B:B")>100, INDIRECT($A15&"!B:B"), )))
于 2020-06-27T17:09:44.917 回答