Nem változtattam semmit, csak az event-et Calculate-ra (-re?).
Közben rájöttem, hogy nem kell volatile függvény, mert a figyelendő terület egyébként is függvény, szóval minden frissítéskor újraszámolódik és izgatja a Calculate event-et.
Private Sub Worksheet_Calculate()
Dim wsLog As Worksheet, rLog As Range
Dim rQuery As Range, c As Range, Hit As Range
Set wsLog = Worksheets("Munka5")
Set rQuery = Range("B1", Range("B" & Rows.Count).End(xlUp))
For Each c In rQuery
Set rLog = wsLog.Range("B" & Rows.Count).End(xlUp).Offset(1)
Set Hit = wsLog.Range("B:B").Find(what:=c.Value, after:=rLog, LookIn:=xlValues, lookat:=xlWhole, searchdirection:=xlPrevious)
If Hit Is Nothing Then
rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value
rLog.Offset(, 2) = Now
ElseIf Hit.Offset(, 1) <> c.Offset(, 1) Then
rLog.Offset(, -1).Resize(, 3).Value = c.Offset(, -1).Resize(, 3).Value
rLog.Offset(, 2) = Now
End If
Next
End Sub