1 votes

Comment obtenir la différence entre deux dates dans des colonnes aléatoires dans Excel ?

J'ai une feuille de calcul d'environ 8000 lignes dans laquelle j'ai un ID de ligne et 11 colonnes remplies de dates.  Chaque ligne comporte deux dates et seulement deux dates ; c'est-à-dire que les neuf autres colonnes sont vides.  Je veux calculer la différence entre les deux dates.  Il me semble terriblement inélégant d'utiliser un tas d'éléments imbriqués de type IF fonctions pour identifier les deux colonnes qui ne sont pas vides.  Existe-t-il un moyen simple de le faire ?

Toute suggestion est acceptée avec gratitude.

sample data (same as the below)

| RowID    | Random1    | Random2    | Random3    | Random4    | Random5 | Random6    | Random7    | Random8    | Random9    | Random10   | Random11   |
|----------|------------|------------|------------|------------|---------|------------|------------|------------|------------|------------|------------|
| 63868570 |            | 10/11/2020 | 21/11/2020 |            |         |            |            |            |            |            |            |
| 63882092 | 10/11/2020 |            | 15/11/2020 |            |         |            |            |            |            |            |            |
| 64387749 |            | 13/11/2020 |            | 10/11/2020 |         |            |            |            |            |            |            |
| 64455143 |            | 13/11/2020 |            |            |         |            | 10/11/2020 |            |            |            |            |
| 64523533 |            | 10/11/2020 |            |            |         | 18/11/2020 |            |            |            |            |            |
| 64609166 |            | 10/11/2020 |            |            |         |            | 21/11/2020 |            |            |            |            |
| 64720036 | 13/11/2020 |            |            |            |         |            |            |            |            |            | 10/11/2020 |
| 64738281 |            | 10/11/2020 |            |            |         |            |            |            | 21/11/2020 |            |            |
| 64778400 |            | 13/11/2020 | 10/11/2020 |            |         |            |            |            |            |            |            |
| 64857763 |            | 13/11/2020 |            |            |         |            |            | 10/11/2020 |            |            |            |
| 64934656 |            | 13/11/2020 | 10/11/2020 |            |         |            |            |            |            |            |            |
| 64962687 |            | 10/11/2020 | 20/11/2020 |            |         |            |            |            |            |            |            |
| 64966825 |            | 15/11/2020 | 10/11/2020 |            |         |            |            |            |            |            |            |
| 64979371 | 19/11/2020 |            |            |            |         |            |            |            |            |            | 10/11/2020 |
| 65054149 |            | 19/11/2020 |            |            |         |            |            |            |            |            | 10/11/2020 |
| 65065845 |            | 13/11/2020 | 10/11/2020 |            |         |            |            |            |            |            |            |
| 65078532 |            | 13/11/2020 |            |            |         |            |            |            |            | 10/11/2020 |            |
| 65092915 |            | 13/11/2020 | 10/11/2020 |            |         |            |            |            |            |            |            |
| 65210760 |            | 10/11/2020 |            |            |         |            |            |            | 19/11/2020 |            |            |
| 65211080 |            | 10/11/2020 |            |            |         |            |            |            | 19/11/2020 |            |            |
| 65228686 |            | 10/11/2020 | 18/11/2020 |            |         |            |            |            |            |            |            |
| 65366207 |            | 10/11/2020 | 20/11/2020 |            |         |            |            |            |            |            |            |
| 65464270 |            | 19/11/2020 |            |            |         |            |            |            |            |            | 10/11/2020 |
| 65464473 |            | 19/11/2020 |            |            |         |            |            |            |            |            | 10/11/2020 |
| 65480131 |            | 20/11/2020 | 10/11/2020 |            |         |            |            |            |            |            |            |
| 65505910 |            | 13/11/2020 | 10/11/2020 |            |         |            |            |            |            |            |            |

Les dates sont affichées ci-dessus au format jj/mm/aaaa ; supposez qu'elles sont stockées comme des dates Excel correctes.

2voto

Scott Points 20468

Faites

=LARGE(B2:L2,1)-LARGE(B2:L2,2)

LARGE trouvera la plus grande et la deuxième plus grande valeur de la ligne.  D'après la description de votre feuille de travail, ce seront les deux valeurs non vides.

Utilisez le DATEDIF si vous le souhaitez (si vous l'avez).

2voto

Máté Juhász Points 20291

Il pourrait y avoir plusieurs approches ici :

  1. =MAX(B2:L2)-MIN(B2:L2)
  • C'est probablement la formule la plus simple, qui fonctionne correctement si vous voulez toujours avoir des résultats positifs.
  • Si vous devez parfois montrer une différence négative, cela ne fonctionnera pas.

enter image description here

  1. =SUMPRODUCT(FILTER(B2:L2,B2:L2<>""),{-1,1})
  • FILTER est une fonction très puissante, introduite récemment et disponible dans Office 365.
  • Avec cette formule, vous pouvez également respecter l'ordre des dates et renvoyer une différence négative si nécessaire.

enter image description here

0voto

Rajesh Sinha Points 8611

Cette fonction trouve les JOURS entre deux dates sous forme de colonnes aléatoires dans la rangée :

enter image description here

  • Formule dans la cellule L2 :

    =DAYS(SMALL(B2:K2,2),SMALL(B2:K2,1))

  • La fonction DAYS retourne le nombre de jours entre deux dates, ici SMALL trouve le deuxième et le premier plus bas.

Ajustez les références des cellules dans la formule si nécessaire.

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