Это нехорошо, но эта формула в условном форматировании для ячеек в столбце А должна делать то, что вы хотите:
=OR(
MOD((A1-MAX($A$1:$A$999*($B$1:$B$999="DW")*(WEEKDAY($A$1:$A$999,2)=6))),21)=0,
MOD((A1-MAX($A$1:$A$999*($B$1:$B$999="DW")*(WEEKDAY($A$1:$A$999,2)=7))),21)=0
)
Здесь будут выделены субботы или воскресенья, кратные целым числам от 3 недель до последней субботы или воскресенья с "DW" в столбце B.
Измените ссылки на строки 999 в соответствии с вашим фактическим набором данных.
EDIT:
Это будет выделено, только если в столбце B есть хотя бы одна суббота / воскресенье с "DW";
=OR(
AND(
MAX(($B$1:$B$999="DW")*(WEEKDAY($A$1:$A$999,2)=6)),
MOD((A1-MAX($A$1:$A$999*($B$1:$B$999="DW")*(WEEKDAY($A$1:$A$999,2)=6))),21)=0
),
AND(
MAX(($B$1:$B$999="DW")*(WEEKDAY($A$1:$A$999,2)=7)),
MOD((A1-MAX($A$1:$A$999*($B$1:$B$999="DW")*(WEEKDAY($A$1:$A$999,2)=7))),21)=0
)
)