web-dev-qa-db-fra.com

Comment ajouter chaque dimanche dans un ordre séquentiel?

J'ai donc essayé d'utiliser la formule simple:

=date(2019,3,10) 
=date(2019,3,10)+7
=date(2019,3,10)+14
=date(2019,3,10)+21

... etc.

Mais lorsque je mets en surbrillance les premières 3-4 premières cellules à faire glisser vers le bas et à formuler le motif, cela ne fonctionne pas dans ce cas. Mon objectif est que ma feuille se remplisse automatiquement tous les dimanches de l'année, même dans les deux prochaines années.

Des recommandations?

1
timmyturner
  • au lieu de =DATE(2019,3,10)+7 utilisez cette formule et faites-la glisser vers le bas

    =DATE(2019,3,10)+ROW(A1)*7

    0

0
user0

Bienvenue! J'espère que vous le ferez fonctionner comme vous le souhaitez. Avez-vous envisagé une ARRAYFORMULA ?

=ARRAYFORMULA(DATE(2019,3,10)+(ROW(1:10)-1)*7)

Essayez de coller cela dans une cellule avec 10 cellules vides en dessous. Cela ne concerne que 10 dates pour cet exemple, mais cela peut être la durée que vous choisissez. Les formules matricielles sont excellentes car elles effectuent les calculs et opérations demandés sur un ensemble entier de cellules ou de valeurs entrantes, plutôt que pour la seule cellule qu'elles occupent. Je tape cela dans les moindres détails pour plus de clarté, mais personne ne lisant cela ne devrait être intimidé - ils sont faciles à utiliser une fois que l'on se familiarise avec eux.

=ARRAYFORMULA( DATE(2019,3,10) + ( ROW(1:10) -1 ) *7 )

En anglais, par ordre de calcul:
=ARRAYFORMULA()
signifie faire la formule contenue encore et encore pour couvrir toutes les données entrantes.
DATE(2019,3,10)
comme vous le savez, DATE génère simplement une date au format Sheets, puis comprend.

+(ROW(1:10)-1)*7
Votre exemple contenait une liste croissante de multiples de 7. C'est la dernière chose dont nous avons besoin ici aussi; votre 7, 14, 21… liste "addends". Mais nous ne voulons pas avoir à les taper, ni même à les faire glisser, alors ici, j'utilise une astuce courante et je demande à Sheets ' ROW pour afficher "le numéro de ligne des dix premières lignes". ROW(1:10)

Pas de surprise - les numéros de ligne des dix premières lignes ne sont que les numéros 1 à 10. Étant donné que c'est tout un tableau de nombres, l'ARRAYFORMULA fera le calcul une fois pour chaque entier de 1 à 10.

Un détail doit être abordé; nous pouvons considérer votre liste comme commençant réellement en ajoutant 0 jour au premier jour - nous ne voulons pas ajouter une semaine à la première date. Ici, nous ne voulons pas de 1 à 10; nous voulons ajouter 0 à 9. Ainsi, pour chaque répétition, il -1 soustrait un du nombre actuel.

Enfin, nous multiplions ce nombre par sept *7, Donc notre liste 0, 1, 2… devient 0, 7, 14…
Cette liste, de 0 à 63, est ensuite ajoutée à la DATE que vous avez choisie, avec une cellule de sortie pour chaque numéro d'entrée. Donc, pour générer, disons 52 semaines, il suffit de le changer en ROW(1:52).

Tout cela "vit" dans une seule cellule, vous pouvez le changer à un seul endroit dans le futur, il est flexible, il est automatique et il est très rapide même pour des ensembles de sortie énormes. J'espère que je ne vous ai pas effrayé, ni personne d'autre - les ARRAYFORMULA sont un outil incroyable.

0
Joel Reid
  • vous pouvez également utiliser ARRAYFORMULA et lister tous les dimanches de 2019-3-10 à 2020-3-10
=ARRAYFORMULA(TO_DATE(FILTER(ROW(INDIRECT("A"&
 DATEVALUE("2019-3-10")&":A"&
 DATEVALUE("2020-3-10"))), MOD(ROW(INDIRECT("A1:A"&COUNTA(ROW(INDIRECT("A"&
 DATEVALUE("2019-3-10")&":A"&
 DATEVALUE("2020-3-10"))))))-1, 7)=0)))

0

0
user0
  1. Dans la première cellule, entrez la date souhaitée.

    Par exemple, dans la cellule A23, entrez 3/10/2019

  2. Dans la cellule juste en dessous, mettez la formule:

    = A23 + 7

  3. copiez cette cellule autant que vous le souhaitez.

C'est ça.

0
mhoran_psprep