Besoin d'une aide, si vous seriez si gentil.
Dans MS Excel, j'essaie de travailler au nombre de mois qu'un élève assiste à l'université basée à l'université. P>
Par exemple, un étudiant inscrit et termine l'université sur les dates suivantes: p>
Et il y a plusieurs années académiques que l'étudiant assiste: p>
01/08/2017 - 31/07/2018 P> LI>
01/08/2018 - 31/07/2019 P> LI>
01/08/2018 - 31/07/2020 P> LI> ul>
Je veux calculer combien de mois l'étudiant assiste à chaque année académique: p>
3 Réponses :
= DATDIF (A1, B1, "M") donnera le nombre de mois entiers entre 2 dates (c'est-à-dire excluant les mois de début et de fin) où des dates sont entrées dans A1 et B1. Le "M" signifie que vous souhaitez que les informations rapportées depuis des mois. p>
Pour un plus em> résultat précis, essayez: = (DATDIF (A1, B1, "D") / 365) * 12. Si les dates s'étendent plusieurs années - y compris les années de saut - essayez de diviser par 365,25 VS 365. P>
Bonjour, j'ai examiné votre réponse et j'ai essayé précédemment - ce n'est pas en mesure de faire référence à la référence des années académiques / termes.
Veuillez essayer ce UDF.
Function MonthsOverlap(Rng As Range, _
AccYear As Integer) As String
' 016
Const Ststart As Long = 1 ' index of array 'Study'
Const Stend As Long = 2 ' index of array 'Study'
Dim Fun As Integer ' Months of overlap
Dim YearStart As Date, YearEnd As Date
Dim Study As Variant
YearStart = DateSerial(AccYear, 8, 1) ' modify year and day as required
YearEnd = DateAdd("yyyy", 1, YearStart)
Study = Rng.Value ' Rng columns must be adjacent
With Application.WorksheetFunction
If Study(1, Ststart) <= YearStart Then
Fun = DateDiff("m", .Max(Study(1, Ststart), YearStart), .Min(Study(1, Stend), YearEnd))
ElseIf Study(1, Ststart) <= YearEnd Then
Fun = DateDiff("m", .Max(Study(1, Ststart), YearStart), YearEnd)
End If
Fun = .Max(Fun, 0)
End With
MonthsOverlap = Fun & " month" & IIf(Fun = 1, "", "s")
End Function
Désolé, ne suffit pas: / Merci de toute façon.
Désolé, ne suffit pas: si vous avez une solution, publiez-la ici comme votre propre réponse. Si vous n'en avez pas, travaillez avec moi sur l'arrondi. En 2017, l'étudiant a étudié pendant 1 mois et 7 jours. Vous voulez cela arrondi à 1 mois. Ma formule dit qu'il a étudié pendant deux mois. Ce résultat peut être arrondi mais vous auriez besoin de définir les règles par lesquelles l'arrondi est effectué. Ces informations sont manquantes dans votre question.
Salut Variatus - J'ai publié une solution ci-dessous :)
@MR Agent Smith Merci. Votre solution a l'air très agréable mais elle ne s'attaque pas à la tâche d'arrondir. Par conséquent, il est probable que tous les résultats ne produisent pas seront à votre goût. Les tests devraient inclure des dates laissant moins d'une demi-mois à tours, plus d'une demi-mois à tours, ne nécessitant aucun arrondi (assiduité et année académique alignée précisément) et exactement des demi-mois, ce qui signifie 14, 15 et 16 jours, selon le mois, en fonction du mois, aux deux extrémités. C'est pourquoi je ne voulais pas approfondir le sujet sans vous former de tête. Mais je vous recommande de tester soigneusement avant de vous réjouir. Bonne chance!
Pouvez-vous nous montrer une présentation visuelle de la façon dont vos données ressemblent à vos données et comment / où sont les résultats attendus?
Bonjour, j'ai ajouté une critique à travers des modifications. J'ai également réussi à se rapprocher de la solution:
ronding (max (0, (min (term_end_date, étudiant_end_date) - max (étudiant_start_date, term_start_date))) / (365/12), 0) code>Jim n'a-t-il pas étudié en 16/17 pour
1 code> mois et12 code> mois en 17/18?@JVDV - Mise à jour de l'image - Mistinged 2017 au lieu de 2018.
Avez-vous plus d'exemples. Je pense avoir une réponse, mais j'aimerais tester un peu plus de choses sur vos données
Capture d'écran sûre, mise à jour maintenant.
Éponge Bob n'a-t-il pas eu 10 mois entiers assistés en 17/18? Ce serait ce que ma réponse revient. Sinon, il devient assez arbitraire. Et s'il s'est inscrit au 29/09/2017? De plus, avec votre logique, il aurait eu 1 mois de classe en 2021/2022, no 0.
Oui, 10.78 mois.
Il y a un calcul financier inclus (que j'ai exclu dans la capture d'écran) qui dépend de plusieurs mois.
Je comprends des mois entiers, mais logicly serait
10 code> mois pour l'éponge Bob en 17/18 (puisqu'il n'a passé que 10 mois entiers dans cette année d'étude). Sinon, avec votre logique actuelle, vous devez également ajouter un mois au 21/22 pour lui au lieu de 0.Bonjour, j'ai mis à jour la capture d'écran. Essentiellement, je sais que chaque élève reçoit un financement à l'université pendant toute la durée du cours. J'essaie de faire correspondre le total des paiements par année scolaire et des totaux de chaque année scolaire pour égaler le financement total du cours. Les mois fractionnaires leur créent un problème. : /