1 votes

Recherche d'une valeur, en fonction de la série de dates entre lesquelles se situe une autre date

Et je m'excuse s'il s'agit d'un doublon - si vous pouviez m'indiquer la direction des réponses existantes, ce serait formidable.

J'ai un ensemble de plages de dates dans Excel, chacune ayant une sorte d'étiquette, par exemple.

LabelA  01/01/10  31/01/10
LabelB  01/02/10  28/02/10
LabelC  01/03/10  31/03/10

Si je dispose d'une autre date, j'aimerais obtenir l'étiquette correspondant à la plage de dates dans laquelle cette date se situe. Par exemple, pour le 15/02/10, j'aimerais obtenir l'étiquette B. Je sais que les plages de dates ne se chevaucheront pas, bien qu'il puisse y avoir un écart entre la date de fin de l'une d'entre elles et la date de début de la suivante.

1voto

Amarald Points 273

Pouvez-vous ajouter un double (peut-être caché) de la colonne A sur le côté droit (ou déplacer la colonne A) et les dates sont-elles dans l'ordre ?

Dans ce cas, la fonction VLOOKUP peut être la solution. Elle recherche une valeur dans la première colonne, puis dans un certain nombre de colonnes. Ici est un exemple.

Je me rends compte que cette façon de faire est un peu désagréable, mais elle est facile et, tant que les données sont en ordre, elle devrait vous permettre d'obtenir ce que vous voulez.

1voto

Jarvin Points 6998

Vous pouvez effectuer une somme de conditions multiples en utilisant sumproduct . Vous utiliseriez (disons que Date1 est B:B, Date2 est C:C, E1 est la date que vous voulez trouver)

sumproduct(--(B1:B50<=E1),--(C1:C50>=E1),Row(B1:B50))

Cela vous donnera le numéro de ligne, puisque cette somme de conditions multiples n'est vraie que lorsque E1 est >= B et <= C, et additionnera le numéro de ligne de toutes les lignes où cela est vrai (ce qui, d'après vous, est au maximum 1). Pour rechercher l'étiquette, vous pouvez

index(A1:A50,sumproduct(--(B1:B50<=E1),--(C1:C50>=E1),Row(B1:B50)))

De même, si vous pensez que votre numéro se trouve dans l'une des lacunes, vous pouvez le faire :

if(sumproduct(--(B1:B50<=E1),--(C1:C50>=E1),Row(B1:B50))=0,"Date Not Found",index(A1:A50,sumproduct(--(B1:B50<=E1),--(C1:C50>=E1),Row(B1:B50))))

1voto

Jay Points 173

Vous pouvez le faire en créant une formule de tableau, qui compare chaque plage de dates à la date requise. Si la date est comprise dans l'intervalle, elle renvoie la date de fin.

Effectuez ensuite une recherche sur cette date de fin pour trouver la ligne appropriée.

Tout cela peut être réalisé dans une seule cellule si nécessaire.

Si les données se trouvent dans A1:C3, et que la date requise se trouve dans B4, la formule suivante s'applique :

=INDEX(A1:A3,MATCH(SUM(IF(B1:B3<B4,1,0)*IF(C1:C3>=B4,C1:C3,0)),C1:C3,0))

Il faut faire ce que l'on veut. Cela doit être saisi comme une formule de tableau.

Si la date n'est couverte par aucune des fourchettes, le système renvoie #N/A.

0voto

Ana cleto Points 11

Pour moi, c'est exactement ce que Formatage conditionnel a été créé pour. Vous pouvez définir jusqu'à 3 conditions distinctes pour une cellule ou une plage de cellules et lorsque l'une des conditions correspond, la cellule reçoit le formatage appliqué par cette condition.

C'est ainsi que sont élaborées de nombreuses feuilles de calcul de type "feux de signalisation".

SistemesEz.com

SystemesEZ est une communauté de sysadmins où vous pouvez résoudre vos problèmes et vos doutes. Vous pouvez consulter les questions des autres sysadmins, poser vos propres questions ou résoudre celles des autres.

Powered by:

X