diff --git a/aleksis/apps/alsijil/model_extensions.py b/aleksis/apps/alsijil/model_extensions.py
index 9e758d682d3f7f1ffc68df14b46cf92b6d0a6b3f..926a67ec34e9e6e9c5040543cf427a830c9b3671 100644
--- a/aleksis/apps/alsijil/model_extensions.py
+++ b/aleksis/apps/alsijil/model_extensions.py
@@ -35,12 +35,19 @@ def mark_absent(
     wanted_week = CalendarWeek.from_date(day)
 
     # Get all lessons of this person on the specified day
-    lesson_periods = self.lesson_periods_as_participant.on_day(day).filter(
-        period__period__gte=from_period
+    lesson_periods = (
+        self.lesson_periods_as_participant.on_day(day)
+        .filter(period__period__gte=from_period)
+        .annotate_week(wanted_week)
     )
 
     # Create and update all personal notes for the discovered lesson periods
     for lesson_period in lesson_periods:
+        sub = lesson_period.get_substitution()
+        if sub:
+            if sub.is_cancelled:
+                continue
+
         personal_note, created = PersonalNote.objects.update_or_create(
             person=self,
             lesson_period=lesson_period,