【问题标题】:How to sum up arrays to then find the minimum如何对数组求和以找到最小值
【发布时间】:2020-12-02 04:50:59
【问题描述】:

这是我的问题:我的文档中有 2 张纸(我们称它们为 Sheet 1 和 Sheet 2)。它们包含相似的东西,看起来都像这样(名称和值可能不同):

A、C、D 和 F 列包含时间(以 m:ss 为单位)。 B 列和 E 列都计算 NameX 和 NameY 之间的时间差,并根据实际差值添加 ">、

现在我的问题来了:我想找到 3 个最小值(在表 3 上)。 最小 1 很简单,因为我可以使用这个函数(它会自动过滤掉 B 列和 E 列):

MIN('Sheet 1'!A2:F2, 'Sheet 2'!A2:F2)

至少 2 和 3 是我挣扎。

最小值 2: 使用示例值,我想找到 (1:01+1:02)、(1:02+1:05)、(1:01+) 的最小值1:01) 和 (1:01+1:02) (+ 第 2 页上的任何时间)。结果应该是 2:02。

最小值 3: 同样,使用示例值,我想找到 (1:01+1:02+1:03)、(1:02+1:05+) 的最小值0:30)、(1:01+1:01+1:12) 和 (1:01+1:02+2:02)(+ 第 2 页上的任何时间)。结果应该是 2:37。

我目前正在使用这个公式(至少 3 个):

=MIN(
IFERROR(FILTER(IFERROR(ARRAYFORMULA({'Sheet 1'!A2:F2}+{'Sheet 1'!A3:F3}+{'Sheet 1'!A4:F4})),
IFERROR(ARRAYFORMULA({'Sheet 1'!A2:F2}+{'Sheet 1'!A3:F3}+{'Sheet 1'!A4:F4}))<>0)),
IFERROR(FILTER(IFERROR(ARRAYFORMULA({'Sheet 2'!A2:F2}+{'Sheet 2'!A3:F3}+{'Sheet 2'!A4:F4})),
IFERROR(ARRAYFORMULA({'Sheet 2'!A2:F2}+{'Sheet 2'!A3:F3}+{'Sheet 2'!A4:F4}))<>0))
)

一些注意事项:需要内部 IFERROR 函数来过滤在尝试将 B 列和 E 列相加时明显发生的错误。FILTER 函数过滤掉空列(本示例中没有)。第二个 IFERROR 函数过滤掉在根本没有输入时返回错误的 FILTER 函数(工作表中的所有列都是空的)。我想过滤这些,因为我不想得到 0:00 作为结果

我的问题是:在我的实际工作表中,我有 11 个工作表,其中有 16 行要加起来,但我不想使用上面的公式并创建一个公式的疯狂怪物,只要 x 倍上面的公式。

所以我的问题是:对于我没有看到的最小 3(因此是 4、5、6 ...),有没有更简单的方法来解决这个问题?

【问题讨论】:

  • 请使用工具栏上的图像按钮将图像添加到您的代码中,而不是链接到您自己的位置。图片需要放置到 SO imgur 位置,以便它们在您的问题中可供将来使用。
  • 分享您的工作表副本

标签: google-sheets google-sheets-formula array-formulas


【解决方案1】:

这有点可怕,但这可能会奏效:

=MIN(FILTER({
MMULT(SEQUENCE(1,ROWS(Sheet1!A2:F),1,0),N(Sheet1!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet2!A2:F),1,0),N(Sheet2!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet3!A2:F),1,0),N(Sheet3!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet4!A2:F),1,0),N(Sheet4!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet5!A2:F),1,0),N(Sheet5!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet6!A2:F),1,0),N(Sheet6!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet7!A2:F),1,0),N(Sheet7!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet8!A2:F),1,0),N(Sheet8!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet9!A2:F),1,0),N(Sheet9!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet10!A2:F),1,0),N(Sheet10!A2:F));
MMULT(SEQUENCE(1,ROWS(Sheet11!A2:F),1,0),N(Sheet11!A2:F))},
{1,0,1,1,0,1}))

【讨论】:

  • 不得不调整一些东西,但基本上解决了它。谢谢!
猜你喜欢
  • 2015-08-30
  • 2021-02-10
  • 1970-01-01
  • 2019-07-06
  • 2014-10-23
  • 2019-08-21
  • 2013-12-23
  • 1970-01-01
  • 2018-07-04
相关资源
最近更新 更多