Excel formel für Datum + X Tage gesucht gesucht

Bei uns in der Firmensoftware ist es möglich beim Datum, z.b. „+2“ einzutragen und automatisch zählt die Software das heutige Datum + 2 Tage hinzu und schreibt es mir in das Feld wo ich vorher „+2“ eingetragen habe.

Geht das auch bei Excel, wo ich in eine Zelle „+2“ eintrage und Excel trägt automatisch das Datum +2Tage ein?

Geht das auch bei Excel, wo ich in eine Zelle „+2“ eintrage
und Excel trägt automatisch das Datum +2Tage ein?

Hallo Grußlose®,

A1: Datum
B1: =A1+2

Gruß
Reinhard

Hallo Denis

Verstehe ich Dich richtig? In A1 steht z. B. 15.10.2011. Wenn Du jetzt in der gleichen Zelle A1 die Zahl 2 eingibst, soll in A1 das Datum 17.10.2011 ausgegeben werden.

Wenn dem so ist, dann schau mal meine Datei an:
http://www.file-upload.net/download-6703010/zelle-au…

Sie ist sehr diffizil und unausgegoren! Vor allem musst Du beachten: Wenn einmal ein Fehler aufgetreten ist, musst Du diese Datei schliessen und Excel herunterfahren und wieder neu starten. - Ich hab das nicht recht im Griff!

Viele Grüsse Niclaus

Sie ist sehr diffizil und unausgegoren! Vor allem musst Du
beachten: Wenn einmal ein Fehler aufgetreten ist, musst Du
diese Datei schliessen und Excel herunterfahren und wieder neu
starten. - Ich hab das nicht recht im Griff!

Hallo Niclaus,

vllt. ist dieser Ansatz für dich interessant

Option Explicit

Dim Wert(1 To 20)

Private Sub Worksheet\_Change(ByVal Target As Range)
Dim Zelle As Range
Set Target = Intersect(Target, Range("A1:A20"))
Application.EnableEvents = False
If Target Is Nothing Then Exit Sub
For Each Zelle In Target
 Zelle.Value = Zelle.Value + Wert(Zelle.Row)
 Wert(Zelle.Row) = Zelle.Value
Next Zelle
Application.EnableEvents = True
End Sub

Gruß
Reinhard

1 „Gefällt mir“

vllt. ist dieser Ansatz für dich interessant

Hallo Reinhard

Und wie!!! Sehr interessant! SUPER !!!

Du hast hier im Forum den „makro-internen“ Speicher - hier mit Wert(1) bis Wert(20) - auch schon demonstriert und erklärt. Ich hoffe, ich habe ihn jetzt auch internalisiert :wink:

Einen Hinweis noch: Ich hatte Dein Makro in eine Tabelle eingefügt. Es funktionierte auch alles bestens. Ich speicherte und schloss die Datei mit einigen erfassten Zahlen im Bereich A1:A20. Beim nächsten Oeffnen war die Enttäuschung riesig: Die Additionen funktionierten nicht mehr bei den Zahlen, die in der gespeicherten Datei bereits vorhanden waren.

Bei der Durchsicht des Makros war mir auch klar warum: Der „Speicher“ mit Wert(1) bis Wert(20) ist ja beim ersten Durchlauf leer. Eine Lösung habe ich mit folgendem Vorgehen gefunden: Bevor ich an den bereits erfassten Zahlen etwas ändere, kopiere ich den Bereich A1:A20 und füge ihn an der gleichen Stelle wieder ein. Damit ist der Werte-Speicher „initialisiert“ und es klappt alles bestens. - Wichtig: Dieser Copy-Paste-Vorgang darf nur einmal gemacht werden!

Gibt es dafür eine professionellere Lösung? Mit Workbook_open?

Noch einmal vielen Dank und herzliche Grüsse Niclaus

Grüezi zusammen

Der „Speicher“ mit Wert(1) bis Wert(20) ist ja beim ersten
Durchlauf leer. Eine Lösung habe ich mit folgendem Vorgehen
gefunden: Bevor ich an den bereits erfassten Zahlen etwas
ändere, kopiere ich den Bereich A1:A20 und füge ihn an der
gleichen Stelle wieder ein. Damit ist der Werte-Speicher
„initialisiert“ und es klappt alles bestens. - Wichtig: Dieser
Copy-Paste-Vorgang darf nur einmal gemacht werden!

Gibt es dafür eine professionellere Lösung? Mit Workbook_open?

Eine Variante wäre es, den Kommentar der Zellen als ‚Zwischenspeicher‘ zu verwenden und darüber dann die Berechnungen anzustellen. Die Kommentare bleiben ja beim Schliessen der Mappe erhalten:

Private Sub Worksheet\_Change(ByVal Target As Range)
Dim rngZelle As Range
Dim rngBereich As Range
 Set rngBereich = Intersect(Target, Range("A1:A20"))
 If Not rngBereich Is Nothing Then
 Application.EnableEvents = False
 For Each rngZelle In rngBereich
 With rngZelle
 If .Comment Is Nothing Then
 .AddComment CStr(.Value)
 Else
 .Comment.Text CStr(DateValue(.Comment.Text) + .Value)
 .Value = DateValue(.Comment.Text)
 End If
 End With
 Next rngZelle
 Application.EnableEvents = True
 End If
End Sub

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Grüezi zusammen

Eine Variante wäre es, den Kommentar der Zellen als
‚Zwischenspeicher‘ zu verwenden und darüber dann die
Berechnungen anzustellen. Die Kommentare bleiben ja beim
Schliessen der Mappe erhalten.

Salü Thomas
Mit den Kommentaren arbeitet auch das Makro in der Datei, die ich vor zwei Tagen zu diesem Thema hochgeladen habe. Das Makro von Reinhard ist halt schon viel eleganter: Diese Leichtigkeit des Seins … :wink:
Viele Grüsse
Niclaus

Grüezi Niclaus

Eine Variante wäre es, den Kommentar der Zellen als
‚Zwischenspeicher‘ zu verwenden und darüber dann die
Berechnungen anzustellen. Die Kommentare bleiben ja beim
Schliessen der Mappe erhalten.

Mit den Kommentaren arbeitet auch das Makro in der Datei, die
ich vor zwei Tagen zu diesem Thema hochgeladen habe.

Ich muss gestehen, dass ich die Mappe erst jetzt näher angesehen habe… :.-(

Das Makro
von Reinhard ist halt schon viel eleganter: Diese Leichtigkeit
des Seins … :wink:

Soooo viel schwerer ist mein Sein aber auch nicht… :wink:

Mit freundlichen Grüssen

Thomas Ramel

  • MVP für MS-Excel -

Gibt es dafür eine professionellere Lösung? Mit Workbook_open?

Hallo Niclaus,

klassisch wäre das so:

In DieseArbeitsmappe

Option Explicit

Private Sub Workbook\_Open()
Call Einlesen
End Sub

Private Sub Workbook\_SheetChange(ByVal Sh As Object, ByVal Target As Range)
If Sh.Name = "Tabelle1" Then Call Werte(Target)
End Sub

**In ein Modul:**

Option Explicit

Dim Wert(1 To 20)

Sub Werte(ByVal Target As Range)
Dim Zelle As Range
Set Target = Intersect(Target, Range("A1:A20"))
Application.EnableEvents = False
If Target Is Nothing Then Exit Sub
For Each Zelle In Target
 Zelle.Value = Zelle.Value + Wert(Zelle.Row)
 Wert(Zelle.Row) = Zelle.Value
Next Zelle
Application.EnableEvents = True
End Sub

Sub Einlesen()
Dim N As Integer
With Worksheets("Tabelle1")
 For N = 1 To 20
 Wert(N) = .Range("A" & N)
 Next N
End With
End Sub

Gruß
Reinhard

Gibt es dafür eine professionellere Lösung? Mit Workbook_open?

Hallo Niclaus,

klassisch wäre das so:

Das ist high class!

Vielen Dank
Niclaus