峰值后找零

时间:2015-02-02 15:25:49

标签: excel excel-formula excel-2010

我处理的数据集会增加,直到达到峰值,然后迅速降至零;我想在峰值之后找到第一个零点的位置,因为这会给我失败时间。但是,导致峰值的值有时会包含零,而我当前的公式将返回那些值。一个示例值集可以是[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只查看峰值后的值,或者这是否是正确的方法。

关于如何在峰值之后获得与第一个零相对应的时间的任何想法?

3 个答案:

答案 0 :(得分:0)

假设您的数据位于配对列中(从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)

答案 1 :(得分:0)

我使用您的第一组数据创建了一个电子表格。

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,我添加了=IF(AND(A2>A1,A2>0),TRUE,FALSE)。如果左边的值(A2)大于前一个(A1)并且它大于0,则在单元格中输入true。

在peakExists列的第一行,即C2,我添加了=OR($B$2:B2)。如果从b2(绝对)到我的行中的任何前一个甚至只有一个真,则在单元格中放置一个true。

在peakAndZero列的第一行,即D2,我添加了=AND(C2,A2=0)。如果存在峰值且值为0,则在单元格中显示true。

看起来你知道如何创建行的索引,并且你知道如何在peakAndZero中选择一个真实的最低值,所以我将把它作为OP的练习。

答案 2 :(得分:0)

对我的原始公式进行了调整,避免使用辅助列(我为此项目设置了数百个数据集)。使用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)