Aktuelles Datum wenn Dropdown ausgewählt wurde
#1
Guten Tag Community,

suche eine Möglichkeit mit einer WENN Formel mit der ich eine Spalte mit anderen Anderen in Abhängigkeit bringen kann.

Ich möchte folgendes erreichen.
In Spalte Q12 Soll das Aktuelle Datum mit Uhrzeit erscheinen, wenn in Spalte R12 (Dropdown) (Abgeschlossen, offen (Liste)) die Auswahl getroffen haben "Abgeschlossen" auswähle.
Es soll bis unendlich weiter geführt werden, und nicht nur in der Zeile 12.
Ich möchte nicht, das er das Datum Aktualisiert wie mit der Formel (=()HEUTE).

Kann mir jemand da weiter helfen?

Gruß
Rogue
Antworten Top
#2
Hi,

Zitat:Kann mir jemand da weiter helfen?


nach Deinen Vorgaben eher nicht. Dazu brauchst Du m.E. VBA.
Gruß

Edgar

Meine Antworten sind freiwillig und ohne Gewähr!
Über Rückmeldungen würde ich mich freuen.
Antworten Top
#3
Hallo Rogue 
suche hier im Forum nach "Zeit stempeln"

Da gibt es hier im Forum einiges an Beiträge, erster Treffer:
Beispiel

Gruß Holger
Antworten Top
#4
Hallo,
dazu brauchst Du VBA!

also Excel mit *.xlsm und folgenden Code in die entsprechende Tabelle Codeseite(!)

Option Explicit
Private Sub Worksheet_Change(ByVal Target As Range)
If Target.Row > 11 And Target.Column = 18 Then
    Application.EnableEvents = False
    If Target.Value = "Abgeschlossen" Then
      Target.Offset(, -1).Value = Format(Date, "dd.mm.yyyy") & Format(Time, "  hh:mm")
    Else
      Target.Offset(, -1).Value = ""
    End If
    Application.EnableEvents = True
End If
End Sub
Grüße aus Nürnberg
Armin
Ich benutze WIN 10 (64bit) und Office 19 (32bit)
Antworten Top
#5
Hallo EbyAS,

danke für die Hilfe.
Hat sofort geklappt.

Danke...

Gruß
Rogue
Antworten Top
#6
Hi,

an der Routine von @EbyAS kann man meiner Ansicht nach noch einiges verbessern.

Zunächst einmal wird mit Target.Offset(, -1).Value = Format(Date, "dd.mm.yyyy") & Format(Time, "  hh:mm") ein Text und kein echtes Datum in die Zelle geschrieben. Sobald man also mit dem "Datum" etwas anfangen möchte, wird das nicht wie erwartet funktionieren. Hier wäre Target.Offset(, -1).Value = Now besser.

Durch den Vergleich If Target.Value = "Abgeschlossen" Then muss in der Zelle der Text genau so stehen - inklusive Groß-/Kleinschreibung. Hier wäre If Target.Value Like "Abgeschlossen" Then geschickter, denn dann spielt die Groß-/Kleinschreibung keine Rolle.

Dann springt die Routine in den Debugger, falls mehrere Zellen gleichzeitig geändert werden und die erste Zelle unterhalb von R11 liegt. Ebenso wird gar nichts gemacht, falls die erste Zelle nicht unterhalb von R11 liegt, aber weitere Zellen dort liegen.

Daher würde ich die Routine so schreiben:
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Intersect(Target, Columns("R"))
If Not Bereich Is Nothing Then
    Application.EnableEvents = False
    For Each Zelle in Bereich
        If Zelle.Row > 11 Then
            If Zelle.Value Like "Abgeschlossen" Then
                Zelle.Offset(, -1).Value = Now
            Else
                Zelle.Offset(, -1).ClearContents
            End If
        End If
    Next Zelle
    Application.EnableEvents = True
End If
End Sub
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
Antworten Top
#7
Guten Morgen HKindler,

erstmal besten Dank, dein Code Verbesserung hat super geklappt.

Frage: ist es möglich, dein Code so anzupassen, dass man Datum und Uhrzeit in zwei verschiedene Spalten anzeigen zu lassen? (Datum in Spalte Y und Uhrzeit in Z), siehe Bild


Neben frage: habe in Spalte D [Datum] manuelle Eingabe, ist auch so gewollt. 
Nun möchte ich gerne dass in Spalte X Dropdown wenn in Spalte D das Datum reingeschrieben wird, dass er es auf offen stellt.
Aber nur solange bis in Spalte X von offen auf Abgeschlossen gestellt wird, ist das möglich?

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Intersect(Target, Columns("X"))
If Not Bereich Is Nothing Then
    Application.EnableEvents = False
    For Each Zelle In Bereich
        If Zelle.Row > 11 Then
            If Zelle.Value Like "Abgeschlossen" Then
                Zelle.Offset(, 1).Value = Now
            Else
                Zelle.Offset(, 1).ClearContents
            End If
        End If
    Next Zelle
    Application.EnableEvents = True
End If
End Sub


Gruß
Rogue


Angehängte Dateien Thumbnail(s)
   
Antworten Top
#8
Hi,

bin mal gespannt, ob es wieder ein halbes Jahr dauert, bis man irgendeine Reaktion bekommt...

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim Zelle As Range
Dim Bereich As Range
Set Bereich = Intersect(Target, Columns("X"))
If Not Bereich Is Nothing Then
    Application.EnableEvents = False
    For Each Zelle In Bereich
        If Zelle.Row > 11 Then
            If Zelle.Value Like "Abgeschlossen" Then
                Zelle.Offset(, 1).Value = Date
                Zelle.Offset(, 2).Value = Time
            Else
                Zelle.Offset(, 1).ClearContents
                Zelle.Offset(, 2).ClearContents
            End If
        End If
    Next Zelle
    Application.EnableEvents = True
End If
Set Bereich = Intersect(Target, Columns("D"))
If Not Bereich Is Nothing Then
    Application.EnableEvents = False
    For Each Zelle In Bereich
        If Zelle.Row > 11 Then
            If Not Cells(Zelle.Row, "X") Like "Abgeschlossen" Then
                Cells(Zelle.Row, "X").Value = "Offen"
            End If
        End If
    Next Zelle
    Application.EnableEvents = True
End If
End Sub
Gruß,
Helmut

Win10 - Office365 / MacOS - Office365
[-] Folgende(r) 1 Nutzer sagt Danke an HKindler für diesen Beitrag:
  • Stephan
Antworten Top
#9
Guten Morgen HKindler,

danke für deine mühe.
Sorry das ich mich das letzte mal nicht zurück gemeldet habe.

Ich werde den Code den du mir gepostet hast, sofort ausprobieren, und dir ein Feedback geben.

Gruß
Rogue

Guten Morgen HKindler,

dein Code ist SUPER, echt toll.

Aber eine kleine Fehler ist noch.
Wenn ich in D den Eintrag nachträglich lösche, dann geht in Spalte X das offen nicht weg, so wie bei Datum und Uhrzeit in X, Y, Z der fall ist.
Ist das möglich, wenn man Nachträglich in Spalte D wieder was löscht, dass der Eintrag in Spalte X wieder löscht?

Gruß
Rogue
Antworten Top
#10
Hallo Rogue,

du hast doch schon etwas gelernt (wenn du dich mit dem Makro beschäftigt hast) und den Sinn des Makros verstanden.
Es dürfte dir (mindestens nach einigem Probieren) klar sein, wie der Befehl heißen und wo er im Makro eingesetzt werden könnte.

Wenn du es dann nicht geschafft haben solltest, hier eine kleine Hilfestellung:

If Cells(Zelle.Row, "D") = "" And Cells(Zelle.Row, "X") Like "Offen" Then
            Cells(Zelle.Row, "X").ClearContents
End If

Etwas Arbeit bleibt also immer noch übrig.

Gruß Stephan
Antworten Top


Gehe zu:


Benutzer, die gerade dieses Thema anschauen: 2 Gast/Gäste