如何求和数组然后找到最小值
How to sum up arrays to then find the minimum
这是我的问题:我的文档中有 2 个 sheet(我们称它们为 Sheet 1 和 Sheet 2)。它们包含类似的东西,看起来都像这样(名称和值可能不同):
A、C、D 和 F 列包含时间(在 m:ss 中)。
B列和E列均计算NameX和NameY的时间差,并根据实际差值添加“>、<或~~”(忽略颜色)。
现在我的问题来了:我想找到 3 个最小值(在 Sheet 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)(+ sheet 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)(+ 时间 sheet 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 函数过滤掉空列(此中有 none例子)。第二个 IFERROR 函数过滤掉 FILTER 函数,当它们根本没有输入时 return 出错(sheet 中的所有列都是空的)。我想过滤掉这些,因为我不想得到 0:00 结果
我的问题是这样的:在我实际的 sheet 中,我有 11 sheet 行加起来有 16 行,但我不想使用上面的公式来创建一个疯狂的怪物一个公式的长度是上面公式的 x 倍。
所以我的问题是:对于我没有看到的最小值 3(因此是 4、5、6 ...),是否有更简单的方法来解决这个问题?
有点怪异,但这可能有效:
=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}))
这是我的问题:我的文档中有 2 个 sheet(我们称它们为 Sheet 1 和 Sheet 2)。它们包含类似的东西,看起来都像这样(名称和值可能不同):
A、C、D 和 F 列包含时间(在 m:ss 中)。 B列和E列均计算NameX和NameY的时间差,并根据实际差值添加“>、<或~~”(忽略颜色)。
现在我的问题来了:我想找到 3 个最小值(在 Sheet 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)(+ sheet 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)(+ 时间 sheet 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 函数过滤掉空列(此中有 none例子)。第二个 IFERROR 函数过滤掉 FILTER 函数,当它们根本没有输入时 return 出错(sheet 中的所有列都是空的)。我想过滤掉这些,因为我不想得到 0:00 结果
我的问题是这样的:在我实际的 sheet 中,我有 11 sheet 行加起来有 16 行,但我不想使用上面的公式来创建一个疯狂的怪物一个公式的长度是上面公式的 x 倍。
所以我的问题是:对于我没有看到的最小值 3(因此是 4、5、6 ...),是否有更简单的方法来解决这个问题?
有点怪异,但这可能有效:
=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}))