Excel - Jour et date du mois

0

J'ai essayé quelques formules "Date" mais je ne parviens pas à le faire fonctionner.

Voici mon problème:

Je souhaite configurer une feuille de calcul qui permettra à l'utilisateur de saisir A1 - le mois et l'année.

J'aimerais que ma feuille de calcul remplisse automatiquement la colonne A avec les "jours" du mois, par exemple. si le mois commence le mercredi, le mercredi sera le premier jour. Je voudrais ensuite que la colonne B indique les dates, par exemple. 01/12/2018 (format UK).

Aussi, je voudrais que dimanche soit omis. J'ai une version manuelle de ceci où je dois taper les valeurs chaque mois mais je voudrais l'automatiser car cela doit être fait 80 fois et je ne veux pas avoir à remplir d'abord manuellement, puis copier et coller 79 fois.

Aucune suggestion?

Grungefreak
la source
à quoi ressemblera le format de A1? Oct 2018, 10/18, une autre variante? Ou peut-être la date du premier du mois? 18/10/01? Si le format numérique est utilisé et que le mois est avant octobre, il y aura-t-il un précédent 0? 01/18 ou 1/18?
Forward Ed

Réponses:

1

En supposant que votre entrée dans la cellule A1 pour le mois et l'année soit une entrée numérique telle que 01/18, 1/18, 01/2018 ou 1/2018, vous pouvez utiliser les formules suivantes pour développer votre liste.

Commencez par placer la formule suivante dans B3.

=DATE(RIGHT(A1,LEN(A1)-FIND("/",A1)),LEFT(A1,FIND("/",A1)-1),1)+(WEEKDAY(DATE(RIGHT(A1,LEN(A1)-FIND("/",A1)),LEFT(A1,FIND("/",A1)-1),1))=1)

Cela semble un peu compliqué, mais cela est dû au fait que nous avons essayé de traiter les 4 entrées de date différentes possibles dans A1. Si vous avez un format de saisie de date différent, une formule différente sera nécessaire pour développer la date pour le premier du mois.

Dans la formule ci-dessus, il trouve essentiellement le "/" et utilise sa position pour déterminer la quantité de chaîne à déchirer pour saisir les chiffres du mois et de l'année respectivement. Après avoir saisi les chiffres du mois et de l'année, les informations sont insérées dans la formule DATE qui recherche des informations au format suivant:

=DATE(year, month, day)

Comme il est connu que la date correspond au début du mois sur lequel porte l’enquête, définissez day = 1. La partie suivante de l’équation WEEKDAY détermine le jour de la semaine. SI le jour de la semaine est DIMANCHE, le premier jour du mois doit être augmenté de 1. Puisqu'un résultat booléen de VRAI équivaut à 1 dans les opérations mathématiques excel et que FAUX est l’ÉQUIVALENT de 0, simple addition du SEMAINE () = 1 correspond à la formule permettant de déterminer le premier du mois.

Une fois que vous avez reçu le germe pour le début de votre liste, vous devez ajouter 1 à la date de la rangée suivante et ajouter un 1 à la date indiquée, la rangée ci-dessus étant un samedi. De plus, vous voulez vous assurer que votre nouvelle valeur de date ne dépasse pas la fin du mois et, pour ma procédure, je veux également m'assurer que la ligne ci-dessus n'est pas vide. Utilisez la formule suivante dans B4 et copiez-la suffisamment loin pour pouvoir couvrir le nombre maximum de dates possibles.

=IF(B3<>"",IF(B3+1+(WEEKDAY(B3)=7)>EOMONTH($B$3,0),"",B3+1+(WEEKDAY(B3)=7)),"")

Cela générera la liste des dates qui sautent le dimanche.

Vous avez deux options pour afficher le jour de la semaine. L'option 1 consiste à le faire avec une formule. Fondamentalement, la formule suivante prendra la date de la colonne B et formatera la valeur pour afficher le jour de la semaine uniquement sous forme de chaîne. En A3, utilisez la formule suivante et notez-la:

=TEXT(B3,"DDDD")

OR

=IF(B3<>"",TEXT(B3,"DDDD"),"")

La deuxième équation sera vide si vous finissez par copier la formule au-delà des formules dans B et par référencer une cellule vide à la place d'une cellule contenant "".

POC

Forward Ed
la source
1

Entrez la valeur comme "3 2020" en cellule A1 et courir:

Sub INeedDates()
    Dim A1 As Range: Set A1 = Range("A1")
    Dim d As Date, i As Long

    i = 2
    arr = Split(A1, " ")
    d = DateSerial(arr(1), arr(0), 1)

    While CInt(Month(d)) = CInt(arr(0))
        If Format(d, "dddd") <> "Sunday" Then
            Cells(i, "A").Value = Format(d, "dddd")
            Cells(i, "B").Value = d
            Cells(i, "B").NumberFormat = "d/m/yyyy"
            i = i + 1
        End If
        d = d + 1
    Wend
End Sub

enter image description here

Gary's Student
la source
0

Quand je fais (vaguement) Pour des choses similaires, je préfère généralement garder les entrées Mois et Année séparées, afin de les garder très simples à utiliser ultérieurement. (J'ai vu un nombre étonnamment élevé de personnes ayant des difficultés à saisir correctement les dates dans Excel.)

Je recommande la configuration suivante: (Désolé pour les sauts de ligne, certaines de ces formules sont trop longues pour une ligne de ce tableau.)

╔════╦═════════════════════════════════════════════════╦════════════════════════════════╗
║CELL║                   DATA/FORMULA                  ║               COMMENTS         ║
╠════╬═════════════════════════════════════════════════╬════════════════════════════════╣
║    ║                                                 ║                                ║
║ A1 ║  "Month"                                        ║ Locked cell with bold, centered║
║    ║                                                 ║ text, yellow fill, and red bor-║
║    ║                                                 ║ der on left, right & top sides ║
║    ║                                                 ║                                ║
║ B1 ║  "Year"                                         ║ Locked cell with bold, centered║
║    ║                                                 ║ text, yellow fill, and red bor-║
║    ║                                                 ║ der on left, right & top sides ║
║    ║                                                 ║                                ║
║ A2 ║  11                                             ║ Unlocked cell with Data Valid- ║
║    ║                                                 ║ ation requiring a whole number ║
║    ║                                                 ║ from 1 to 12 (inclusive), right║
║    ║                                                 ║ justified with red border on   ║
║    ║                                                 ║ left, right & bottom sides     ║
║    ║                                                 ║                                ║
║ B2 ║  2018                                           ║ Unlocked cell with Data Valid- ║
║    ║                                                 ║ ation requiring a whole number ║
║    ║                                                 ║ from 1 to 12 (inclusive), left ║
║    ║                                                 ║ justified with red border on   ║
║    ║                                                 ║ left, right & bottom sides     ║
║    ║                                                 ║                                ║
║ A3 ║  "Day"                                          ║ Locked cell, formatted as      ║
║    ║                                                 ║ heading to below table         ║
║    ║                                                 ║                                ║
║ B3 ║  "Date"                                         ║ Locked cell, formatted as      ║
║    ║                                                 ║ heading to below table         ║
║    ║                                                 ║                                ║
║ A4 ║  =IF(B4="","",TEXT(B4, "DDDD"))                 ║ This shows the name of the day ║
║    ║                                                 ║ of the date found in cell B4   ║
║    ║                                                 ║                                ║
║ B4 ║ =IF(WEEKDAY(DATE(B2, A2, 1))-1, DATE(B2, A2, 1),║ This picks the date of the 1st ║
║    ║  DATE(B2, A2, 2))                               ║ day of the month chosen above, ║
║    ║                                                 ║ unless it's a Sunday, then it  ║
║    ║                                                 ║ is the following day (Monday)  ║
║    ║                                                 ║                                ║
║ A5 ║  Copy A4 to these cells                         ║ As you copy A4 to these cells  ║
║ to ║                                                 ║ Excel will automatically alter ║
║ A29║                                                 ║ each to reference the cell in  ║
║    ║                                                 ║ column B of this row           ║
║    ║                                                 ║                                ║
║ B5 ║ =IF(B4="","",IF(IF(WEEKDAY(B4+1)-1,B4+1,B4+2)>= ║ This picks the date after B4   ║
║    ║ EOMONTH(B4,0),"",IF(WEEKDAY(B4+1)-1,B4+1,B4+2)))║ unless it's a Saturday, then it║
║    ║                                                 ║ picks the next Monday, unless  ║
║    ║                                                 ║ it would go into the next month║
║    ║                                                 ║                                ║
║ B6 ║  Copy B5 to these cells                         ║ As you copy B5 to these cells, ║
║ to ║                                                 ║ Excel will automatically alter ║
║ B29║                                                 ║ each one to reference the cell ║
║    ║                                                 ║ above it instead of B4         ║
╚════╩═════════════════════════════════════════════════╩════════════════════════════════╝

Et voici une capture d'écran en action:
Table in Excel displaying the days other than Sunday in November 2018 in both 'day name' and 'date' formats.

3D1T0R
la source
-2

Pas la solution la plus simple, mais rapide et facile. Si vous entrez le premier jour du mois dans la cellule A1, ajoutez cette formule dans A2 ....

=IF(TEXT(A1,"DDDD")="Sunday",A1+1,A1)
then A3
=IF(TEXT(A2+1,"DDDD")="Sunday",A2+2,A2+1)

Vous pouvez ensuite copier la formule à partir de là. Il laisse les dimanches en dehors de votre liste. Le seul dimanche qui apparaîtra est celui que vous pourriez entrer dans la cellule A1. J'ai testé cela pour septembre 2019 car le premier est dimanche. Il retourne

02/09/2019
03/09/2019
04/09/2019
05/09/2019
06/09/2019
07/09/2019
09/09/2019

J'espère que cela pourra aider.

Brad

BradR
la source
au lieu de convertir en chaîne, en utilisant weekday serait beaucoup plus efficace
phuclv