Excel公式:对于列中的每个峰/底值实例,获取到下一个峰/底的范围/距离
我希望在Excel中解决以下问题:Excel公式:对于列中的每个峰/底值实例,获取到下一个峰/底的范围/距离,excel,Excel,我希望在Excel中解决以下问题: ID Value Distance 1 1 3 2 0 0 3 -1 3 4 1 0 5 0 0 6 -1 0 7 0 0 基本距离栏是我想要的。它查看峰/底值(1和-1),然后向下滚动以找到下一个峰或底,并计算距离。例如,对于ID 1,由于它是峰值,我们寻找第二个峰值/底部,ID 3应该被跳过,因
ID Value Distance
1 1 3
2 0 0
3 -1 3
4 1 0
5 0 0
6 -1 0
7 0 0
基本距离栏是我想要的。它查看峰/底值(1和-1),然后向下滚动以找到下一个峰或底,并计算距离。例如,对于ID 1,由于它是峰值,我们寻找第二个峰值/底部,ID 3应该被跳过,因为它是第一个,所以我们查看ID 4,得到距离=4-1=3尝试以下公式:
=IFERROR(AGGREGATE(15,6,A2:$A$18/ABS(B2:$B$18),3)/ABS(B2)-A2,0)
说明:
AGGREGATE
函数,其中前两个参数15
,6
和最后一个参数3
返回数组中第三小的值A2:$A$18/ABS(B2:$B$18)
忽略错误-在除法后的第一行中,数组如下所示[1,#DIV/0!、3、4、#DIV/0!、6、#DIV/0!…]
并返回4
接下来,将该值除以当前行的列B
的绝对值(如果除以0,则得到一个错误,IFERROR
函数返回0)
然后我们从获得的结果(第一行1
)中减去当前行A列的值,得到所需的距离-3
要获得第三个值和后续值,请相应地增加AGGREGATE
函数的最后一个参数
你能解释一下逻辑吗?如果我想修改公式以获得第三个下一个/第四个下一个/第五个下一个…,我该如何更改它?@domesome请参见编辑。我尝试了你的公式,奇怪的是它在谷歌工作表上不起作用,请参见此处@domesome此公式仅在excel中起作用。你没有要求谷歌提供表单。@有些GS应该可以使用:=IFERROR(小(过滤器(A2:$A 18/ABS(B2:$B$18),(A2:$A 18/ABS(B2:$B$18))>0),3)/ABS(B2)-A2,0)