Explanation
This formula is uses the WORKDAY function, which returns a date in the future or past, based on start date and required work days. WORKDAY automatically excludes weekends, and can also exclude holidays if provided as a range of dates.
In the example shown, the project end date is in column C, and days is in column D. The end date represents a due date or target date, and days represents duration in work days. In column E, the WORKDAY function calculates a date by which the project must start in order to finish by the end date.
In this case, we need to count backwards from the end date, so we supply days as a negative number. For holidays, we provide the named range"holidays", which includes the dates in G5:G9. The dates will not be included as workdays.
With a negative value for days, WORKDAY moves in time from the end date, taking into account weekends and holidays, and returns December 19, 2018 as the start date. If holidays are not provided, the same formula returns a start date of December 24.
Note the WORKDAY function does not count the start date as a workday.
Custom workdays
If your schedule requires custom workdays (i.e. weekdays are not Monday-Friday) you can substitute the WORKDAY.INTL function for WORKDAY. For example, to calculate a start date for a project where workdays include Saturday, you could use:
=WORKDAY.INTL(C5,-D5,11,holidays)
WORKDAY.INTL can be configured in many ways. This page provides details.