Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/google-sheets/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Google sheets 在Google Sheets中,不使用查询从数组中获取前n个结果_Google Sheets_Statistics_Google Sheets Query - Fatal编程技术网

Google sheets 在Google Sheets中,不使用查询从数组中获取前n个结果

Google sheets 在Google Sheets中,不使用查询从数组中获取前n个结果,google-sheets,statistics,google-sheets-query,Google Sheets,Statistics,Google Sheets Query,我有一张桌子: W.Avg中的公式。“小”尺寸的每点值为: 我还尝试使用SORTN()。但这不起作用的原因有很多 =ARRAYFORMULA(SORTN(FILTER( INDEX(INDIRECT("recent_sdcalcs_size"),0,2), INDEX(INDIRECT("recent_listings"),0,3) = H15, INDEX(INDIRECT("recent_sdcalcs_size"),0,2)<>"" ),TRANSPOSE($C4

我有一张桌子:

W.Avg中的公式。“小”尺寸的每点值为:

我还尝试使用SORTN()。但这不起作用的原因有很多

=ARRAYFORMULA(SORTN(FILTER(
  INDEX(INDIRECT("recent_sdcalcs_size"),0,2),
  INDEX(INDIRECT("recent_listings"),0,3) = H15,
  INDEX(INDIRECT("recent_sdcalcs_size"),0,2)<>""
),TRANSPOSE($C46:$L46)))
=数组公式(排序)(过滤器(
指数(间接(“最近的SDC大小”),0,2),
指数(间接(“最近上市”),0,3)=H15,
索引(间接(“最近的SDC大小”),0,2“
),转置($C46:$L46)))

关于间接():处理工作表中的已知错误。当通过应用程序脚本调整命名范围的大小时,google会将所有对这些命名范围的引用更改为
#REF打破公式。而且(因为从中提取数据的工作表上的行数不是静态的),我有一个脚本,它每隔一段时间调整该工作表和其上的命名范围的大小,以避免有数百个空白行减慢我的公式。至于QUERY():它几乎可以工作。需要更多的调整才能得到我想要的。但是,正如我所说的,如果电子表格的任何单元格中都包含QUERY()函数,那么与该电子表格关联的应用程序脚本突然需要20倍的时间才能运行。即使应用程序脚本没有访问该单元格或受其影响的任何单元格。这似乎是谷歌表单中的另一个错误。我可以再次检查。。。在
ARRAYFORMULA()
中包装
QUERY()
基本上应该为数组H27:H36和C46:L46中的每个项运行一次查询(总共10倍,将其视为for..in循环)。但是我认为
QUERY()
是否有效并不重要。。。由于其他问题,我无法使用
QUERY()
进行此操作。不幸的是,
ARRAY\u constraint()
是我不能与
ARRAFORMULA()
一起使用的少数函数之一。经验法则是,如果函数以数组作为输入(并且它不是查找函数),它就不能与
ARRAYFORMULA()
一起使用。很显然,@I'-'I是正确的,
QUERY()
也不能与
ARRAYFORMULA()
一起使用。。。另一个原因是我不能使用它。我确信当上面的
QUERY()
W.Avg下的任何单元格的工作表中时,总是会发生这种情况。每个点的值
中值
,或
保留的数据点
列。我所看到的是,我的应用程序脚本中的所有getNamedRange()调用都从一秒的零头变为超过5秒。这包括
getNamedRage()
调用既不被相关单元格引用也不受其影响的范围。而受影响的函数需要>20倍的时间才能完全执行。我确信当电子表格中没有
QUERY()
函数时,这种情况不会发生。
=AVERAGE.WEIGHTED(
  FILTER(
    ARRAYFORMULA(QUERY(
      INDIRECT("recent_data"),
      "select ( E * F ) where (
        D = '"&$H$27:$H$36&"' and
        C = '"&$H15&"' and
        V > 0
      ) limit "&$C46:$L46
    )),
    ISNUMBER(ARRAYFORMULA(QUERY(
      INDIRECT("recent_data"),
      "select ( E * F ) where (
        D = '"&$H$27:$H$36&"' and
        C = '"&$H15&"' and
        V > 0
      ) limit "&$C46:$L46
    )))
  ),
  FILTER(
    ARRAYFORMULA(QUERY(
      INDIRECT("recent_data"),
      "select F where (
        D = '"&$H$27:$H$36&"' and
        C = '"&$H15&"' and
        V > 0
      ) limit "&$C46:$L46
    )),
    ISNUMBER(ARRAYFORMULA(QUERY(
      INDIRECT("recent_data"),
      "select F where (
        D = '"&$H$27:$H$36&"' and
        C = '"&$H15&"' and
        V > 0
      ) limit "&$C46:$L46
    )))
  )
)
=ARRAYFORMULA(SORTN(FILTER(
  INDEX(INDIRECT("recent_sdcalcs_size"),0,2),
  INDEX(INDIRECT("recent_listings"),0,3) = H15,
  INDEX(INDIRECT("recent_sdcalcs_size"),0,2)<>""
),TRANSPOSE($C46:$L46)))