首页 > 解决方案 > 如何为 Google 表格中的每一行重复查询单独的数据集?

问题描述

我在 Google 表格中有以下简单数据,我想自动扩展结果的query结果。 在此处输入图像描述

在 G3 中,我有:

=product(QUERY(A3:C, "Select C where B='Z' and A<date'"&TEXT(F3,"yyyy-mm-dd")&"' "))

它返回 F1 之前日期的 C 列中数字的乘积,其中 B 是“Z”(2*5=10)。出于某种原因,当我在 H3 中使用数组公式时,这不会扩展到所有 F 列:

=arrayformula(product(QUERY(A3:C, "Select C where B='Z' and A<date'"&TEXT(F3:F,"yyyy-mm-dd")&"' ")))

似乎仅编辑查询以包含F3:F范围而不是单个F3单元格是不够的。那么有什么解决方案或解决方法吗?

标签: arraysgoogle-sheetsgoogle-sheets-formula

解决方案


产品很像 MAX 和 MIN,它在全局范围内处理一个范围或数组,而 AFAIK 你不能让它一次处理一个行。

这是另一种方法的第一次切割,对于固定范围并假设 C 列中没有零:

=ArrayFormula(10^mmult((F3:F12>transpose(A3:A6))*(transpose(B3:B6)="Z"),log10(C3:C6)))

在此处输入图像描述

编辑

这是使用间接变量范围的公式:

=ArrayFormula(10^mmult((indirect("F3:F"&count(F:F)+2)>transpose(indirect("A3:A"&count(A:A)+2)))*(transpose(indirect("B3:B"&count(A:A)+2))="Z"),log10(indirect("C3:C"&count(A:A)+2))))

编辑 2

对于 C 列中可能有零的情况,这是一种可能的解决方法。零并不会真正与日志混合,但您可以通过添加一个大的负指数来解决它:

=ArrayFormula(10^mmult((indirect("F3:F"&count(F:F)+2)>transpose(indirect("A3:A"&count(A:A)+2)))*(transpose(indirect("B3:B"&count(A:A)+2))="Z"),log10(indirect("C3:C"&count(A:A)+2)+1E-99)))

推荐阅读