从过滤范围中找到最接近的更大
Finding closest greater from a filtered range
我有一个 sheet,其中包含有关两台机器运行时间的信息。它有三个主要列: "A" 是机器的编号; "B"是开始运行的时间和日期; "C" 是操作的结束时间和日期。
我正在尝试编写一个公式(第四列)来查找下一个操作的 "starting time" - 以机器编号为条件。为此,我必须输入 "ending time" 并从另一行中找到最接近的更大的 "starting time" - 以机器编号为条件。
我尝试了两种方法,none 100% 正确。
首先,我 "filtering" B 的范围,以 A 为条件。然后,我将这个过滤后的范围插入到一个公式中,寻找最接近的较大值。
一个示例 sheet 如下(颜色仅用于 tracking/debugging 目的,它们不必出现在公式中):
这是我试过的两个公式:
=small(filter(B:B;A:A=A1);COUNTIF(filter(B:B;A:A=A1);"<"&C1)+1)
=INDEX(filter(B:B;A:A=A1);MATCH(MIN(ABS(filter(B:B;A:A=A1)-C1));ABS(filter(B:B;A:A=A1)-C1);0))
在第一个例子中,只有最后一个结果正确。该列的其余部分重复相同的值。
第二个不稳定,有时会带来最接近的较大数字,有时会带来最接近的较小数字,但比第一个效果更好。
尝试:
=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))+1; FILTER({A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))\
TEXT(B2:B; "dd/mm/yyyy hh:mm:ss")};
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))>1); 2; 0)))
我有一个 sheet,其中包含有关两台机器运行时间的信息。它有三个主要列: "A" 是机器的编号; "B"是开始运行的时间和日期; "C" 是操作的结束时间和日期。
我正在尝试编写一个公式(第四列)来查找下一个操作的 "starting time" - 以机器编号为条件。为此,我必须输入 "ending time" 并从另一行中找到最接近的更大的 "starting time" - 以机器编号为条件。
我尝试了两种方法,none 100% 正确。
首先,我 "filtering" B 的范围,以 A 为条件。然后,我将这个过滤后的范围插入到一个公式中,寻找最接近的较大值。
一个示例 sheet 如下(颜色仅用于 tracking/debugging 目的,它们不必出现在公式中):
这是我试过的两个公式:
=small(filter(B:B;A:A=A1);COUNTIF(filter(B:B;A:A=A1);"<"&C1)+1)
=INDEX(filter(B:B;A:A=A1);MATCH(MIN(ABS(filter(B:B;A:A=A1)-C1));ABS(filter(B:B;A:A=A1)-C1);0))
在第一个例子中,只有最后一个结果正确。该列的其余部分重复相同的值。
第二个不稳定,有时会带来最接近的较大数字,有时会带来最接近的较小数字,但比第一个效果更好。
尝试:
=ARRAYFORMULA(IFERROR(VLOOKUP(A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))+1; FILTER({A2:A&
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))\
TEXT(B2:B; "dd/mm/yyyy hh:mm:ss")};
COUNTIFS(A2:A; A2:A; ROW(A2:A); "<="&ROW(A2:A))>1); 2; 0)))