web-dev-qa-db-fra.com

Besoin d'identifier quand un laps de temps spécifique s'est écoulé depuis un laps de temps spécifique

J'ai une date de début et une date de paiement qui est de 70 jours à compter de la date de début. Tout au long de l'année, j'ai besoin de savoir quand il reste 70 jours et quand se situe cette date entre le début et la fin d'un mois donné.

Par exemple, si la date de début est le 1/1/17, le 3/12/17 est dans 70 jours. Sur mon calendrier, je cherche à sortir des données pour le mois de mars car le 12/03/17 est au mois de mars.

J'ai écrit des formules pour vérifier chaque colonne de mois.

Voici ce que j'ai jusqu'à présent:

 |   A    |   B    |   C    |   D    |
1| 1/1/17 |        |        |        |
2|        | 1/1/17 | 2/1/17 | 3/1/17 |
3|        |        |        | output |
  • A1 = date de début
  • B2 = Jan
  • C2 = février
  • D2 = Mar
  • D3 = où sortir

=if(ROUND(MINUS(EOMONTH(D2,0),(A1+ROUND((EOMonth(D2,0)-A1)/70)*70)))>0,if(ROUND(MINUS(D2,A1))<ROUND((EOMonth(D2,0)-A1)/70)*70,"output",""),"")

Cela fonctionne pour certains des créneaux horaires du mois mais pas tous. Je suis à la recherche de conseils sur les fonctions à utiliser lors de la mesure et du calcul de dates dans Google Sheets.

1
swilsonmcss

Dans la cellule D3, j’ai mis la formule suivante:

=if(EOMONTH($A1+70,0)=EOMONTH(D2,0),"Output","No report due")

J'ai assumé le $ A1 pour m'assurer qu'il fonctionne pour toutes les colonnes.

La formule compare simplement la fin du mois de la deuxième ligne à la fin du mois pour la date de la cellule a1 + 70 jours.

Si la date est le 01/01/2017, 70 jours plus tard, le 12/03/2017, la fin du mois est le 31/03/2017. La phrase Sortie apparaît donc lorsque la date de fin du mois en cours est égale à 31/03/2017.

Cela fonctionnera pour toutes les colonnes tant qu'elles ont une date dans la deuxième ligne.

3
mhoran_psprep

Voici la réponse que je suis venu avec. J'inclus des fonctionnalités supplémentaires qui ne faisaient pas partie de ma question initiale au cas où cela aiderait quelqu'un.

Certaines des données se trouvent sur une feuille secondaire nommée "Détails". Le $ qui précède la lettre et le numéro de chaque variable distante garantit que la référence ne changera pas si la formule est déplacée sur la feuille.

À partir de A37, j'ai répertorié verticalement chaque lettre de l'alphabet plus l'alphabet répété, chaque lettre étant précédée de "A". Cela a été fait pour imiter la séquence le long de l'axe horizontal afin de référencer les lettres pour construire des références aux coordonnées de cellules.

=if(Details!$C$14=P2,sum(indirect("B4:"&indirect("A"&Details!$C$14+37)&"4")),if(Details!$C$14=O2,indirect(indirect("A"&Details!$C$14+1+37)&4),if(Q2<=Details!$C$14,if(ROUND(MINUS(EOMONTH(Q1,0),(Details!$C$12+ROUND((EOMonth(Q1,0)-Details!$C$12)/Details!$G$5)*Details!$G$5)))>0,if(ROUND(MINUS(Q1,Details!$C$12))<ROUND((EOMonth(Q1,0)-Details!$C$12)/Details!$G$5)*Details!$G$5,sum(Details!$I$3*Details!$I$4*Details!$D$3),""),""),"")))

  • Détails! $ C $ 14 = le nombre total de mois à afficher.
  • Plage B4: A (n) représente les coordonnées horizontales de la dernière colonne (le dernier mois).
  • La Q2 contient successivement un nombre allant de 1 (à partir de B2) à autant de mois que nécessaire, comme indiqué dans Détails! $ C $ 14.
  • Q1 contient une date (par exemple 4/1/17) représentant le mois de la colonne donnée
  • Détails! $ C $ 12 = la date de début du décompte en blocs successifs de 70 jours.
  • Détails! $ G $ 5 = 70 (le nombre de jours peut être dynamique)
  • somme (Détails! $ I $ 3 * Détails! $ I $ 4 * Détails! $ D $ 3) représentent la sortie.


  • Details!$C$14=P2 est exécuté pour vérifier si nous avons atteint la colonne du mois dernier.

  • sum(indirect("B4:"&indirect("A"&Details!$C$14+37)&"4")) Additionne les éléments sur la 4ème ligne en commençant par B4 jusqu'à la dernière colonne, comme indiqué en faisant référence à la liste alphabétique verticale mentionnée ci-dessus à la référence du nombre total de mois à afficher.
  • if(Details!$C$14=O2,indirect(indirect("A"&Details!$C$14+1+37)&4) Identique à ci-dessus mais fait la même chose pour la colonne suivante à droite.
  • if(Q2<=Details!$C$14 vérifie si nous sommes dans une colonne avant la dernière colonne ou à la dernière colonne.
  • if(ROUND(MINUS(EOMONTH(Q1,0),(Details!$C$12+ROUND((EOMonth(Q1,0)-Details!$C$12)/Details!$G$5)*Details!$G$5)))>0 Soustrait le dernier jour du mois en cours de la date de début, divisé par le nombre de jours entre chaque cycle, multiplié par le nombre de jours du cycle. Il est essentiel de savoir dans quelle colonne de mois se situe le jour du début du prochain cycle en vérifiant si elle tombe après le début du mois en cours.
  • if(ROUND(MINUS(Q1,Details!$C$12))<ROUND((EOMonth(Q1,0)-Details!$C$12)/Details!$G$5)*Details!$G$5 vérifie si le début actuel du mois moins le début du calendrier est inférieur au dernier jour du mois en cours moins le début du calendrier divisé par le nombre de jours de chaque cycle, divisé par le nombre de jours du cycle . Avec le point précédent, cela détermine si la date de début du cycle suivant se situe dans la limite extérieure des jours du mois en cours.
  • sum(Details!$I$3*Details!$I$4*Details!$D$3) Représente la sortie à effectuer.
0
swilsonmcss