Possibly...
Private Sub Worksheet_Change(ByVal Target As Range)
    Dim lRow As Long, rg As Range, c As Range
    Dim b As Boolean, s As String

    If Target.Column > 1 Then Exit Sub
    
    b = False
    lRow = Sheet1.Cells(Rows.Count, 3).End(xlUp).Row
    Set rg = Sheet1.Range("C6:C" & lRow)
    With rg
        Set c = .Find(Target.Value, Cells(6, 3))
        If Not c Is Nothing Then
            s = c.Address
            Do
                If c.Offset(, 3) = vbNullString Then
                    c.Offset(, 3) = Target.Value
                    c.Offset(, 4) = Now()
                    b = True
                Else
                    Set c = .FindNext(c)
                End If
            Loop Until c.Address = s
        Else
            b = True
            
        End If
        If b = False Then
            Sheet1.Cells(lRow + 1, 3) = Target.Value
            Sheet1.Cells(lRow + 1, 4) = Now()
        End If
    End With
End Sub
...placed in sheet2 code module.