高峰后找零

我正在处理数据集,直到达到高峰,然后迅速下降到零; 我想find高峰后第一个零的位置,因为这会给我失败的时间。 然而,达到峰值的值有时包含零,而我现在的公式正在返回那些时间。 示例值集合可以是[1; 1; 2; 6; 7; 10; 9; 0; 0; 0]或类似[-1; -1; 0; 4; 7; 11; 10; 0; 0; 0]。

我们会说“时间”列是A,“值”列是B.我已经计算出峰值后的最小值:

=MIN(OFFSET(B1,MATCH(MAX(B2:B4001),B:B,0),0,(4001-MATCH(MAX(B2:B4001),B:B,0)))) 

使用它作为帮助单元,我正在检索这个值出现的时间:

 =IF(*min_after_peak*>0,"PASS",INDEX(A:A,MATCH(*min_after_peak*,B:B,0))) 

注意 – “峰值”会持续一次以上的测量,并且可能会稍有波动,所以如果峰值后的最小值为正数,则意味着样本没有失败。 峰值之后的最小值总是正数或零(分别为合格或不合格)。

问题是,我不知道如何让MATCH在高峰之后只看价值,或者如果这是正确的路要走。

有关如何获得峰值后第一个零点所对应的时间的任何想法?

假设你的数据是在配对的列(从A1开始),请尝试:

  =INDEX(A1:A10,MATCH(0,INDIRECT(CHAR(COLUMN()+65)&MATCH(MAX(B1:B10),B1:B10,0)&":"&CHAR(COLUMN()+65)&"10"),0)+MATCH(MAX(B1:B10),B1:B10,0)-1) 

我用你的第一组数据创build了一个电子表格。

 0 ispeak peakExists peakAndZero 1 TRUE TRUE FALSE 1 FALSE TRUE FALSE 2 TRUE TRUE FALSE 6 TRUE TRUE FALSE 7 TRUE TRUE FALSE 10 TRUE TRUE FALSE 9 FALSE TRUE FALSE 0 FALSE TRUE TRUE 0 FALSE TRUE TRUE 0 FALSE TRUE TRUE 

我在a1中添加了一个0,在B1,C1和D1中添加了标题。

在isPeak列的第一行,即B2,我join=IF(AND(A2>A1,A2>0),TRUE,FALSE) 。 如果左边的值(A2)大于前面的(A1)并且大于0,则这将在单元格中为真。

在peakExists列的第一行,即C2,我加了=OR($B$2:B2) 。 如果以前从b2(绝对)到我的行有任何一个真正的单元格,这将在单元格中成立。

在高峰和零柱的第一行,即D2,我加=AND(C2,A2=0) 。 如果存在峰值并且值为0,则在单元格中input真值。

它看起来像你知道如何创build行的索引,你知道如何select最低的一个真正的peakAndZero,所以我将离开这个作为OP的练习。

想出适应我原来的公式,避免帮助列(我有这个项目数百数据集)。 使用OFFSET在MATCH中设置峰后范围:

 =IF(min_after_peak>0,"PASS",INDEX(A:A,MATCH(MAX(B2:B4001),B:B,0)+MATCH(min_after_peak,OFFSET(B1,MATCH(MAX(B2:B4001),B:B,0),0,(3603-MATCH(MAX(B2:B4001),B:B,0))),0))) 

为了使它更容易阅读:

 =IF(min_after_peak>0,"PASS",INDEX(A:A,peak_row+MATCH(min_after_peak,OFFSET(B1,peak_row,0,(4001-peak_row)),0))) 

哪里

 peak_row = MATCH(MAX(B2:B4001),B:B,0)