Google sheets 在Google工作表中使用具有多个数量的单个值计算数据集的统计数据

Google sheets 在Google工作表中使用具有多个数量的单个值计算数据集的统计数据,google-sheets,average,google-sheets-formula,standard-deviation,iqr,Google Sheets,Average,Google Sheets Formula,Standard Deviation,Iqr,在谷歌表单中,我一直在研究各种价格的数据集,将它们与实际成本进行比较,并排除正常范围以外的值。我以前得到过帮助,但我无法根据我得到帮助的原始公式设计更多的公式 在我的数据集中,我手动输入了非常大的扩展数据集,其中多次出现多个数字。我用多个值将每个值记为value(x),其中x表示数据集中出现的数量或总量,以使其更小;因为我需要手动键入每个 计算平均值的公式如下: =ARRAYFORMULA(SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY

在谷歌表单中,我一直在研究各种价格的数据集,将它们与实际成本进行比较,并排除正常范围以外的值。我以前得到过帮助,但我无法根据我得到帮助的原始公式设计更多的公式

在我的数据集中,我手动输入了非常大的扩展数据集,其中多次出现多个数字。我用多个值将每个值记为
value(x)
,其中x表示数据集中出现的数量或总量,以使其更小;因为我需要手动键入每个

计算平均值的公式如下:

=ARRAYFORMULA(SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(ISNUMBER(A19:AP19), "♦"&A19:AP19&" 1", IF((A19:AP19<>"")*(NOT(ISNUMBER(A19:AP19))), "♦"&REGEXREPLACE(A19:AP19, "[()]", ), ))),,99^99)),,99^99), "♦")), " "), 
 "select Col1*Col2 label Col1*Col2 ''", 0))/SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(ISNUMBER(A19:AP19), "♦"&A19:AP19&" 1", IF((A19:AP19<>"")*(NOT(ISNUMBER(A19:AP19))), "♦"&REGEXREPLACE(A19:AP19, "[()]", ), ))),,99^99)),,99^99), "♦")), " "), 
 "select Col2", 0)))
例如:( 如果(ISNUMBER(A19:AP19),”♦"&A19:AP19和“1”,如果((A19:AP19“”)*(不是(ISNUMBER(A19:AP19)),”♦®EXREPLACE(A19:AP19,“[()]”,),),,,,99^99)),99^99♦")), " "), 选择Col1*Col2标签Col1*Col2'',0))/SUM(查询(拆分)(转置)(拆分)(查询(转置)(查询( 如果(ISNUMBER(A19:AP19),”♦&A19:AP19&“1”,如果((A19:AP19“”)*(不是(ISNUMBER(A19:AP19)),”♦®EXREPLACE(A19:AP19,“[()]”,),),,,,99^99)),99^99♦")), " "), “选择列2”,0))) 这非常有效。我还有一个公式可以计算数据集的最小值和最大值

我试图编辑代码,为自己提供模式(不会读取
value(x)
value)和IQR(四分位数范围),但绝对没有成功

我希望在使用
值(x)

以下是数据集示例的链接:

解决方案 Google Sheets为这些统计变量提供了自定义公式。使用这些公式如下:

  • 标准偏差:
    =STDEV(B14:B113)
  • 平均(平均)偏差:
    =AVEDEV(B14:B113)
  • IQR:
    =四分位数(B13:B14,3)

我希望这对您有所帮助。如果您还需要什么,或者您不了解什么,请告诉我。

基本公式(B14:B,并扩展格式为
值(x)
的所有值)


平均值(B3)
中位数(B5)
模式(B6)
最大值(B7)
最小值(B8)
IQR-四分位范围(B9)
平均偏差(B10)
标准偏差(B11)
Is工作得很好,我注意到有些数据在重复数据超过一定数量时,Is会导致#值错误,例如9094会导致错误,如果复制或减少到1000以下,它就会工作。这很好,非常感谢您对其进行研究。我在数据中使用了公式,但我发现如果我使用1个数据集,其中包含空白区域未来的数据集。中位数、Mod、IQR、Mean Dev、StrDev都有错误。我相信问题在于单元格是否为空。这个答案可以修改为适用于较大的空白区域吗?此外,当数字分布在数据表中而不是一列时,数字也不准确。请参阅此处链接的电子表格:检查我问题中的注释。I我想我有它的可用性…但IQR仍然有问题Side注:IQR是
=四分位(B13:B14,3)-四分位(B13:B14,1)
问题:当范围大于数据集时,公式不起作用。在分割数据以填充部分空白区域时,公式显示的数字不正确。在计算中位数、偏差之前,我拼接了每个公式以分割每列。
=ARRAYFORMULA(中位数)(转置)(拆分)查询(报告)(索引)(IF(B14:B=”“,)拆分(IF)(ISNUMBER)(B14:B)…对于每一列:
TRANSPOSE(SPLIT)(查询)REPT(索引)(IF(B14:B=”“,)SPLIT(IF(ISNUMBER)(B14:B)),TRANSPOSE(SPLIT)(查询)REPT(索引)(IF(C14:C=“”,)SPLIT(IF(ISNUMBER)(C14:C)
=ARRAYFORMULA(TRANSPOSE(SPLIT(QUERY(REPT(
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦", 
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦")))
=ARRAYFORMULA(SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(ISNUMBER(B14:B), "♦"&B14:B&" 1", IF((B14:B<>"")*(NOT(ISNUMBER(B14:B))), 
 "♦"&REGEXREPLACE(B14:B, "[()]", ), ))),,99^99)),,99^99), "♦")), " "), 
 "select Col1*Col2 label Col1*Col2 ''", 0))/
 SUM(QUERY(SPLIT(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(
 IF(ISNUMBER(B14:B), "♦"&B14:B&" 1", IF((B14:B<>"")*(NOT(ISNUMBER(B14:B))), 
 "♦"&REGEXREPLACE(B14:B, "[()]", ), ))),,99^99)),,99^99), "♦")), " "), 
 "select Col2", 0)))
=B7-B8
=ARRAYFORMULA(MEDIAN(TRANSPOSE(SPLIT(QUERY(REPT(
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦", 
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦"))))
=ARRAYFORMULA(MODE(TRANSPOSE(SPLIT(QUERY(REPT(
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦", 
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦"))))
=ARRAYFORMULA(MAX(QUERY(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(B14:B)
,,99^99)),,99^99), " ")), "where not Col1 contains '-'", 0)))
=ARRAYFORMULA(MIN(QUERY(TRANSPOSE(SPLIT(QUERY(TRANSPOSE(QUERY(TRANSPOSE(B14:B)
,,99^99)),,99^99), " ")), "where not Col1 contains '-'", 0)))
=ARRAYFORMULA(QUARTILE(TRANSPOSE(SPLIT(QUERY(REPT(
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦", 
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦")), 3)-
 QUARTILE(TRANSPOSE(SPLIT(QUERY(REPT(
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦", 
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦")), 1))
=ARRAYFORMULA(AVEDEV(TRANSPOSE(SPLIT(QUERY(REPT(
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦", 
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦"))))
=ARRAYFORMULA(STDEV(TRANSPOSE(SPLIT(QUERY(REPT(
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,1)&"♦", 
 INDEX(IF(B14:B="",,SPLIT(IF(ISNUMBER(B14:B), B14:B&" 1", B14:B), " ()"))*1,,2)),,999^99), "♦"))))