Trouver zéro après le pic

Je travaille avec des sets de données qui augmentent jusqu'à ce qu'ils atteignent un pic et qu'ils tombent rapidement à zéro; Je veux find l'location de ce premier zéro après le pic car cela me donnera l'heure de l'échec. Cependant, les valeurs menant au pic contiennent parfois zéro, et ma formule actuelle renvoie les time pour ceux-ci. Un set de valeurs d'exemple serait soit comme 1, 0; 0; 0].

Nous dirons que la colonne de time est A et la colonne Valeurs est B. J'ai calculé la valeur minimale après le pic avec:

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

En utilisant cela comme une cellule helper, je récupère l'heure à laquelle cette valeur se produit avec:

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

Note latérale – le "pic" dure plus d'une fois et peut fluctuer légèrement, donc si le minimum après le pic est positif, cela signifie que l'échantillon n'a pas échoué. Le minimum après le pic est toujours positif ou nul (passe ou échoue, respectivement).

Le problème est que je ne sais pas comment get MATCH pour regarder uniquement les valeurs après le pic, ou si c'est même le bon path.

Toute reflection sur la façon d'get le time correspondant au premier zéro après le pic?

En supposant que vos données se trouvent dans des colonnes appariées (à partir de A1), essayez:

  =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) 

J'ai créé une feuille de calcul avec votre premier set de données.

 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 

J'ai ajouté un 0 dans a1 et des en-têtes en B1, C1 et D1.

Dans la première ligne de la colonne isPeak, c'est B2, j'ai ajouté =IF(AND(A2>A1,A2>0),TRUE,FALSE) . Cela met un vrai dans la cellule si la valeur à gauche (A2) est supérieure à la précédente (A1) ET elle est supérieure à 0.

Dans la première rangée de la colonne peakExists, c'est C2, j'ai ajouté =OR($B$2:B2) . Cela met un vrai dans la cellule si l'un des précédents de b2 (absolute) à ma ligne a même un seul vrai.

Dans la première rangée de la colonne peakAndZero, c'est D2, j'ai ajouté =AND(C2,A2=0) . Cela met un vrai dans la cellule si un pic existe et la valeur est 0.

Il semble que vous sachiez comment créer l'index de la ligne et vous savez comment sélectionner le plus bas avec un vrai dans peakAndZero, donc je laisserai cela comme un exercice pour l'OP.

Je suis passé avec une adaptation à ma formule d'origine qui évite les colonnes auxiliaires (j'ai plusieurs centaines de jeux de données pour ce projet). Utilisé OFFSET pour définir une plage après pic dans 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))) 

Pour le rendre légèrement plus facile à lire:

 =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)