Das heutige Datum muss automatisch in eine Zelle eingetragen werden, wenn Daten in eine andere Zelle eingegeben werden

Das heutige Datum muss automatisch in eine Zelle eingetragen werden, wenn Daten in eine andere Zelle eingegeben werden

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 C5dann 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.

verwandte Informationen