Since Opportunity
has a lookup field to the Market Project
, this makes the Market Project
a parent of the Opportunity
. Workflow rules can't work on child elements, but all is not lost. Using a Flow and the Process Builder, you can easily do what you're trying to do automatically.
First, create a new Flow (Setup > Create > Workflows and Approvals > Flows). In this Flow, create a new SObject Collection variable for Opportunity, and create a new Variable, type Text, with the Input parameter option. Then, add a Fast Lookup that finds all opportunities by Market Project Id, and assign it to the SObject Collection. Mark this element as the Start element (the green circle/arrow icon), then add a Fast Update element that uses the SObject collection. Finally, link the first element to the second, and save this Flow as an Autolaunched flow. Activate the flow.
Next, go to Process Builder (Setup > Create > Workflow & Approvals > Process Builder), and create a new Process. First, select the Market Project object as your starting object, then choose to evaluate on each edit, and add optional criteria if you want to (e.g. Event Cancelled equals true), and then go to the condition box, and choose to always evaluate the action, then finally add an immediate action that launches your flow. Make sure you assign the Market Project's Record Id to the Input variable on the flow. Finally, activate this Process.
After all that, your edits to the Market Project will now cause the related opportunities to be updated. This, in turn, will cause the workflow rules on those opportunities to fire, and if the record no longer meets the criteria, should automatically be removed from the Time Delay queue.
Alternatively, you could have just written a trigger about five lines long that does the same thing, but you'd also have to write appropriate unit testing. Going the visual way does take longer, but requires less knowledge of coding.