Tout d’abord, ajoutez une ligne d’en-tête au-dessus de vos données, à la ligne 1, et commencez par les données à la ligne 2.
Dans la cellule C2, entrez cette formule:
=IFERROR(IF(B2="s",A2-INDIRECT("A"&LOOKUP(2,1/($B$1:$B1="s"),ROW($B$1:$B1))),"-"),"n/a")
Dans la cellule D2, entrez cette formule:
=IFERROR(IF(B2<>"s",A2-INDIRECT("A"&LOOKUP(2,1/($B$1:$B1<>"s"),ROW($B$1:$B1))),"-"),"n/a")
Remplissez chaque formule dans toutes vos lignes. Vous obtiendrez ce résultat:
Explication
La formule de la colonne C fonctionne d'abord en vérifiant si la colonne B = "s", puis elle recherche ( lookup
) la colonne B vers le haut pour l'instance précédente de "s", puis utilise le numéro de ligne de cette instance ( indirect
) pour faire référence à la date la concernant. et effectue la somme de la date. La formule de la colonne D fait la même chose, sauf qu'elle correspond à autre chose que "s".
La première instance de "s" dans la colonne C et la première instance de "non-S" dans la colonne D entraîneront des erreurs (car aucune donnée précédente), de sorte que les formules sont entourées de iferror
fonctions qui modifient le # N / A résultat d'erreur dans une chaîne n / b de nettoyeur (cellules C4 et D2).
Si vos données ne commencent pas en haut à gauche
Si vos données ne commencent pas à la ligne 2, continuez de coller les formules ci-dessus à l'endroit où je dis, puis copiez-les et collez-les à l'endroit où elles devraient se trouver sur votre feuille. La plupart des références de ligne seront mises à jour en conséquence. changez les instances de $1:
pour $1:
qu'elles correspondent à votre ligne d'en-tête (par exemple, si votre ligne d'en-tête est 25, alors les instances de deviendraient $25:
). Si vos données ne commencent pas dans la colonne A, vous devrez modifier manuellement les lettres des colonnes en conséquence dans les formules. Par exemple, si vos données commencent dans la colonne F, modifiez chaque instance de A
to F
et chaque instance de B
to G
.