Wie füge ich nach Ablauf dieses Datums einem bestimmten Datum ein Jahr hinzu?


1

Ich habe eine Excel-Tabelle, in der unsere aktuellen Abonnements aufgelistet sind. Ich habe eine Spalte mit dem Datum, an dem sie sich angemeldet haben, und dann eine andere Spalte für das Erneuerungsdatum. Derzeit muss ich das Verlängerungsdatum manuell auf das nächste Jahr aktualisieren, sobald das Verlängerungsdatum verstrichen ist und eine neue Amtszeit beginnt. Gibt es eine Möglichkeit / Formel, das Jahr automatisch zu ändern / 1 Jahr hinzuzufügen?

image of spreadsheet for reference ):

Basisabonnement - Datum der Unterzeichnung 11.01.2014 - Erneuerungsdatum 11.01.2016 **

** Ich freue mich auf diese Änderung zum 1.11.2017


Wenn ich Ihre Anforderung richtig verstehe, gilt Folgendes in G3 sollte arbeiten: =IF(F3<TODAY(),DATE(YEAR(F3)+1,MONTH(F3),DAY(F3)),F3).
AFH

@AFH Vielen Dank, dies hat mit einer geringfügigen Anpassung funktioniert: = WENN (F3 & lt; HEUTE (), DATUM (JAHR (JETZT ()) + 1, MONAT (F3), TAG (F3)), F3)
rkUser

OK. Ich habe es falsch verstanden: Das habe ich mir gedacht F3 würde bei Erneuerung aktualisiert werden.
AFH

Dies hat in dem von mir angegebenen Beispiel tatsächlich funktioniert, funktioniert jedoch insgesamt nicht. Es wird zu jedem Datum ein Jahr hinzugefügt, auch wenn es noch nicht verstrichen ist. (aktualisiert am 02.09.16 bis 02.09.17). Aber es war knapp, danke.
rkUser

Wenn ich Ihre Anforderung richtig verstehe, gibt es tatsächlich eine Formel für das, was Sie versuchen, zu tun
Code Jockey

Antworten:


1

Das Folgende einschließen Ereignismakro im Arbeitsblattcodebereich:

Private Sub Worksheet_Activate()
   Dim N As Long, r As Range, rng As Range
   Dim d As Date
   N = Cells(Rows.Count, "G").End(xlUp).Row
   Set rng = Range("G3:G" & N)

   For Each r In rng
      If IsDate(r.Value) Then
         d = r.Value
         If d < Date Then
            r.Value = DateSerial(Year(d) + 1, Month(d), Day(d))
         End If
      End If
   Next r
End Sub

Bei jeder Aktivierung des Arbeitsblatts durchsucht das Makro alle Daten in der Spalte G beginne am G3 . Wenn das Datum "veraltet" ist, wird das Datum um ein Jahr vorgezogen.

Da es sich um Arbeitsblattcode handelt, ist die Installation sehr einfach und die Verwendung automatisch:

  1. Klicken Sie mit der rechten Maustaste auf den Registerkartennamen am unteren Rand des Excel-Fensters
  2. Wählen Sie Code anzeigen. Dadurch wird ein VBE-Fenster geöffnet
  3. Fügen Sie das Material ein und schließen Sie das VBE-Fenster

Wenn Sie Bedenken haben, versuchen Sie es zunächst auf einem Testarbeitsblatt.

Wenn Sie die Arbeitsmappe speichern, wird das Makro mit dieser gespeichert. Wenn Sie eine Excel-Version später als 2003 verwenden, müssen Sie diese speichern die Datei als .xlsm anstatt als .xlsx

So entfernen Sie das Makro:

  1. Öffnen Sie die VBE-Fenster wie oben
  2. Löschen Sie den Code
  3. Schließen Sie das VBE-Fenster

Weitere Informationen zu Makros im Allgemeinen finden Sie unter:

http://www.mvps.org/dmcritchie/excel/getstarted.htm

und

http://msdn.microsoft.com/en-us/library/ee814735(v=office.14).aspx

Weitere Informationen zu Ereignismakros (Arbeitsblattcode) finden Sie unter:

http://www.mvps.org/dmcritchie/excel/event.htm

Makros müssen aktiviert sein, damit dies funktioniert!


Das funktioniert einwandfrei! Ich danke dir sehr!
rkUser

2

Wenn Sie lieber keine Makros verwenden möchten (oder wenn Sie auf die Notwendigkeit stoßen), scheint eine dieser Formeln für mich zu funktionieren, abhängig von dem genauen Verhalten, das Sie bevorzugen ...

enter image description here

Wenn Sie es vorziehen, das Datum von zu ändern 1/11/16 zu 1/11/17 auf 1/11/15 ( am Tag der Erneuerung ), dann verwenden Sie diese Formel für die Zellen in Spalte G:

=(DATE(YEAR(F3)+FLOOR(YEARFRAC(F3,TODAY()),1),MONTH(F3),DAY(F3)))

Wenn Sie es vorziehen, das Datum von zu ändern 1/11/16 zu 1/11/17 auf 1/12/15 ( das Datum nach dem das Datum der Verlängerung ), dann verwende diese Formel:

=(DATE(YEAR(F3)+FLOOR(YEARFRAC(F3+1,TODAY()),1),MONTH(F3),DAY(F3)))

Das FLOOR(YEARFRAC(F3,TODAY()),1) Ein Teil der Formel bestimmt die Anzahl der vollen Jahre seit dem Datum der Unterzeichnung (in Ihrem Beispiel wären das zwei Jahre). Der Rest der Formel addiert das dann zum Datum der Unterzeichnung. Als möglichen Bonus können Sie diesen Teil der Formel auch in einer anderen Spalte verwenden, um zu berechnen und auf einen Blick anzuzeigen, wie viele Jahre sie bereits Abonnenten waren - vielleicht für das Versenden von Dankes-E-Mails oder sogar von Geschenken für Langzeit-Abonnenten und dann ... :-P


0

Sie können die Datumsfunktion ausprobieren:

= WENN (HEUTE () & gt; (DATUM (JAHR (F3) + 1, MONAT (F3), TAG (F3))), DATUM (JAHR (F3) + 1, MONAT (F3), TAG (F3)), "")

Ich musste modifizieren, um auf die richtigen Zellen zu verweisen (F3 nicht F2). Das fügt dem Datum der Unterzeichnung jedoch immer noch nur ein Jahr hinzu.
rkUser

@rkUser, das hast du gesagt, du wolltest. Was habe ich falsch verstanden? Wenn Sie jedoch 2 Jahre hinzufügen möchten, ändern Sie einfach auf +2.
BillDOe

Ich benötige das "Erneuerungsdatum", um 1 Jahr vor dem aktuellen Datum zu sein. Grundsätzlich ändert sich das unterzeichnete Datum nie, aber das Jahr in "Erneuerungsdatum" sollte jedes Jahr aktualisiert werden - es sollte den Monat und den Tag im nächsten Jahr anzeigen (in diesem Fall 2017)
rkUser

-2

Verwenden Sie in Zelle G3 die Formel =F3+365, das gibt Ihnen das Datum von F3 zurück, das ein Jahr hinzugefügt wurde.


Das fügt dem Datum der Unterzeichnung nur ein Jahr hinzu, was nicht das ist, wonach ich suche. Ich brauche es, um das aktuelle Verlängerungsdatum um 1 Jahr zu erhöhen - aber nur, wenn dieses Datum verstrichen ist. Da der 1.11.16 vergangen ist, würde er sich zum 1.11.17 ändern, der 15.03.16 jedoch erst nach dem 15. März 2016 zum 15.03.17.
rkUser

Annahmen über Zeiträume werden in der Regel die meiste Zeit funktionieren. Sie werden im schlimmsten Moment scheitern, versichert Murphy. Die meisten Tage haben 24 Stunden, aber die meisten Gebietsschemata haben einen 23- und einen 25-Stunden-Tag pro Jahr. Die meisten Jahre haben 365 Tage, aber einige haben 366 usw. Was auch immer Zeit Sie durch die bequeme Annahme gewinnen, wird Monate später in Debug-Fehlern verloren gehen.
mpez0

1
@rkUser, Ihr Titel besagt, dass Sie ein Jahr hinzufügen möchten "1 Jahr zu einem bestimmten Datum hinzufügen", und das ist nicht wirklich das, was Sie möchten, Sie möchten ein Jahr zu einem variablen Datum hinzufügen. Dies kann auf keinen Fall über eine Formel erfolgen (möglicherweise über VBA), da keine Formel dieselbe Zelle ändern kann, aus der die Daten (Jahr) entnommen werden sollen.
Yisroel Tech

@YisroelTech Ich denke, es gibt eine Formel - bitte schauen Sie sich meine Antwort an (?)
Code Jockey

@ CodeJockey, sah das jetzt. Ordentlich!!
Yisroel Tech
Durch die Nutzung unserer Website bestätigen Sie, dass Sie unsere Cookie-Richtlinie und Datenschutzrichtlinie gelesen und verstanden haben.
Licensed under cc by-sa 3.0 with attribution required.