This formula is trying to do too much at once, and that is exactly where the logic falls apart. The user's core problem is not a syntax error, it is a structural one. They have layered multiple conditional rules into a single SWITCH statement, mixing date arithmetic with text matching in a way that guarantees unpredictable results. The formula reads like a list of requirements jammed into one cell, not a deliberate calculation. We need to separate the conditions cleanly.
Here is what the formula is actually doing: It checks if `created_date` is empty, then checks if that same date is on or after March 1, 2026. If true, it subtracts 90 days from `original_dates`, but then it tacks on an additional 45 days (the second argument after the comma) regardless of the condition. Then it adds another 120-day subtraction if `delayed` equals "extended" or "extended x2." The result is a cumulative mess. For a record created after March 1, 2026, with "extended" in column B, the formula would compute `original_dates - 90 + 45 - 120`, which is `original_dates - 165`. That is almost certainly not what the user intended.
The fix is to use nested IF statements or a single IFS function that evaluates each condition in priority order and returns only one result. The logic should be: If `delayed` contains "extended" or "extended x2," return `original_dates - 120`. Otherwise, if `created_date` is on or after March 1, 2026, return `created_date + 90`. Otherwise (if before that date), return `original_dates - 45`. This is three distinct branches, not three additive adjustments. The user's current approach treats them as cumulative modifiers, which is why the numbers do not match expectations.
For anyone building date logic in spreadsheets, this is a common trap: we write what we *want* to happen, but the formula reads what we *actually* typed. The solution is to map out the decision tree on paper first. Write: "If B says extended → do X. Else if H is after March 1 → do Y. Else → do Z." Then translate that directly into a nested IF. The user's blank-handling is fine, they already check for empty `created_date` at the start. But the arithmetic must be exclusive, not cumulative. Once they rewrite the formula as a single-branch decision, the dates will align with the rules.