
Ich möchte, dass die Zellen C5–C39 automatisch mit dem heutigen Datum ausgefüllt werden, wenn Daten in die Zellen B5–B39 eingegeben werden.
Ich habe versucht, es zum Laufen zu bringen, =TODAY()
weiß aber nicht, wie ich die Formel strukturieren soll.
Antwort1
Ich würde sagen, dass dies am einfachsten mit einer benutzerdefinierten Funktion möglich ist. Diese Funktion wird aktualisiert, wenn sich eine Zelle ändert, auf die sie verweist, sodass Sie sie nicht an irgendwelche Ereignisse binden müssen.
Eine Funktion für Ihr Problem wäre:
Function Updating_Date(dependent_cell as Range) As Date
Updating_Date = Date
End Function
Nachdem Sie diesen Code in ein Modul in Ihrer Arbeitsmappe eingefügt haben, können Sie ihn einfach eingeben =Updating_Date(B5)
und C5
dann nach unten kopieren. Dadurch sollte das Datum in C5 aktualisiert werden, wenn sich die Werte in Spalte C ändern.
Damit das Datum nur angezeigt wird, wenn die Zelle in Spalte B nicht leer ist, können Sie eine if-Formel in der Zelle in Spalte C anwenden, wie ich bereits indie andere Frage, die du gestellt hast. Geben Sie einfach dieselbe Bedingung ein, die ich dort gezeigt habe (also ISBLANK(B5)
), und lassen Sie den Rückgabewert eine leere Zeichenfolge ( ""
) sein, wenn die Bedingung erfüllt ist, und die UDF ( Updating_Date(B5)
), wenn die Bedingung falsch ist.
Antwort2
Im Folgenden wird das heutige Datum in Zelle „B“ eingetragen, wenn sich in Zelle „A“ eine Änderung ergibt:
Private Sub Worksheet_Change(ByVal Target As Range)
' Auto Date
Dim Cell As Range
For Each Cell In Target
If Cell.Column = Range("A:A").Column Then
If Cell.Value <> "" Then
Cells(Cell.Row, "B").Value = Int(Now)
Else
Cells(Cell.Row, "B").Value = ""
End If
End If
Next Cell
End Sub
Dieser Code muss in das VBA-Modul für das Arbeitsblatt eingefügt werden, in dem dieses Verhalten auftreten soll.
Antwort3
Sie können dies ohne VBA tun. Ich musste meine Spalte C mit dem heutigen Datum füllen, basierend auf der Eingabe in Spalte B. Mit dieser Formel wird es richtig eingefügt.
=IF(ISBLANK(B2)," ",NOW())
Ich habe dies in die Zelle C2 eingefügt, da ich dort mit meiner Spalte C begonnen habe. Sie können dies in die Zelle jeder beliebigen Spalte einfügen, in der Sie beginnen. Stellen Sie dann einfach sicher, dass meine B2-Referenz durch die Spalte und Zelle ersetzt wird, in die Ihr Wert eingegeben wird. Wenn Ihre Startzelle beispielsweise F3 ist, sollten Sie die Formel wie folgt ändern:
=IF(ISBLANK(F3), " ",NOW()).
Und wenn Ihre entsprechende Datumszelle K3 ist, platzieren Sie die Formel dort. (Sie können die Formel in die restlichen Zellen der Spalte ziehen, sobald sie in der ersten Zelle ist.)
Diese Formel hält die Datumszellen leer, bis in die Zelle „Kick-off“ ein Wert eingegeben wird. Sobald dieser Wert eingegeben ist, wird das Datum hinzugefügt. Wenn der Wert gelöscht wird, entfernt Excel das Datum automatisch. Es ist also nicht perfekt, aber wenn Sie etwas Anspruchsvolleres benötigen, brauchen Sie wahrscheinlich einen Excel-Experten oder ein Programm, das dies für Sie erledigt.
Antwort4
Soweit ich weiß, müssen Sie dies über VBA tun. Sie können eine Funktion erstellen, die auf Änderungen in Ihrem Arbeitsblatt achtet, nur Änderungen in den Zellen B5-B39 herausfiltert und die Zellen in C entsprechend aktualisiert.
UPDATE: Sie wissen wahrscheinlich, dass Sie mit Alt-F11 in VBA gelangen.
Doppelklicken Sie auf das Excel-Objekt mit der Bezeichnung „Sheet1“ oder auf das gewünschte Arbeitsblatt (in der Baumliste oben links), um zum Code für dieses Arbeitsblatt zu gelangen.
Wählen Sie „Arbeitsblatt“ und „Ändern“ aus den beiden Dropdown-Menüs. Sie erhalten dann Code, der wie folgt aussieht:
Private Sub Worksheet_Change(ByVal Target As Range)
End Sub
Nun steht die Variable „Ziel“ zur Verfügung, die einen Verweis auf die Zelle darstellt, die sich ändert.
Fügen Sie zwischen diesen Zeilen Code hinzu:
debug.Print Target
und drücken Sie Strg-G, um das nächste Fenster anzuzeigen
Nehmen Sie einige Änderungen im Arbeitsblatt vor und wechseln Sie zurück zum Code. Die eingegebenen Daten werden im Direktfenster angezeigt.
Ändern Sie nun den Code in „say“ if Target.
und Sie sehen eine Dropdown-Liste mit möglichen Eigenschaften, die sich auf die Zielvariable beziehen.
Mit ein paar Änderungen können Sie Folgendes erreichen:
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Column = 2 And (Target.Row > 4 And Target.Row < 40) Then
Debug.Print Target.Value
End If
End Sub
Dadurch werden jetzt nur noch Änderungen in dem Bereich gedruckt, der Sie interessiert.
Wenn Sie wissen möchten, wie Sie einen Wert in einer Zelle ändern, können Sie ein Makro aufzeichnen, in dem Sie dies manuell tun, und den Code untersuchen. Hoffentlich wissen Sie jetzt genug, um weiterzumachen. Wenn nicht, lassen Sie es mich wissen.