Tipps & Tricks 29.08.2003, 21:00 Uhr

Excel: Veränderlichen Wert in absoluten Wert umwandeln

Ich möchte, dass in einer Excel-Tabelle automatisch das aktuelle Datum eingefügt wird, wenn ich in der zweiten Spalte eine Zahl eingebe. Ich habe es mit der Formel: =WENN(B7>0;HEUTE();"")soweit geschafft, aber das Datum sollte gespeichert werden und nicht immer den aktuellen Tag anzeigen. Gibt es für mein Problem eine einfache Lösung?
Die Funktion HEUTE() fügt immer das aktuelle Datum ein. Um das aktuelle Datum als unveränderlichen Wert einzufügen, müssen Sie Umwege gehen - bspw. über Kopieren und Einfügen. Steht in einer Zelle die Funktion HEUTE(), nehmen wir als Beispiel die Zelle D1, dann können Sie diese Zelle kopieren und anschliessend über "Einfügen/Inhalte einfügen/Werte" den Wert der Zelle D1 in eine andere Zelle, bspw. Zelle A1, schreiben. Während nun der Wert in Zelle D1 je nach aktuellem Datum variiert, bleibt die absolute Zahl in A1 immer gleich.
Um diesen Vorgang zu automatisieren, ist es am einfachsten, ein Makro zu verwenden. In Ihrem Fall soll das Makro immer dann gestartet werden, wenn in eine Zelle in Spalte B ein Wert eingetragen wird.
Öffnen Sie den Visual Basic Editor entweder über das Menü "Extras/Makro" oder indem Sie die Tastenkombination Alt+F11 drücken. Doppelklicken Sie im linken Projektfenster auf den Namen der Tabelle, in der das Datum automatisch eingefügt werden soll:
Hier im Beispiel ist es "Tabelle1". Nach dem Doppelklick haben Sie ein leeres Fenster vor sich, in das Sie den Code für das Makro eintragen:
Zum Herauskopieren:
Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 Then
Range("$D$1").Select
Selection.Copy
Cells(Target.Row, Target.Column - 1).Select
Selection.PasteSpecial Paste:=xlPasteValues, _
Operation:=xlNone, SkipBlanks _
:=False, Transpose:=False
Application.CutCopyMode = False
Cells(Target.Row + 1, Target.Column).Select
End If
End Sub
Mit "Worksheet_Change" wird die Tabelle auf Änderungen hin überwacht, sämtliche Änderungen werden in die Variable "Target" geschrieben. Anschliessend wird abgefragt, ob die Änderung in Spalte B stattfand (Column = 2). Wahlweise kann hier auch eine andere Spalte, eine bestimmte Zelle oder ein Zellbereich eingetragen werden.
Ist die Bedingung erfüllt, wurde also eine Zelle in Spalte B geändert, dann wird der Wert aus D1 (die Zelle mit der HEUTE()-Funktion) herauskopiert und in die Zelle links neben der geänderten geschrieben. Wird also bspw. Zelle B5 geändert, dann wird in A5 das Datum hineinkopiert. Beachten Sie dabei, dass die Spalte A mit dem Zellenformat "Datum" versehen sein muss.
In der Anwendung sieht das dann so aus:
In Zelle D1 steht das Datum ermittelt durch die Funktion HEUTE(). Jetzt schreiben Sie etwas in Zelle B1 und drücken "ENTER". Automatisch wird in Zelle A1 das Datum eingefügt.
In Zelle A1 steht das Datum nun als absoluter Wert; dieser Wert ändert sich nicht mehr.
Soll nicht die gesamte Spalte B im Makro erfasst werden, sondern nur B1:B20, dann ändern Sie die Bedingung entsprechend ab:
If Target.Column = 2 And (Target.Row >= 1 And Target.Row <= 20) Then ...
Hinweis: Wenn Sie den Eintrag nicht von einer anderen Zelle abhängig machen, sondern direkt in der Zelle vornehmen wollen, gibt es eine Tastenkombination, mit der Sie das realisieren können, nämlich "CTRL" (bzw. STRG) + "." Dies funktioniert jedoch nur, wenn Sie sich direkt in der Zelle befinden, in der das Datum erscheinen soll.



Kommentare
Es sind keine Kommentare vorhanden.