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