← Al Davies, 250 High Street

SharePoint calculated column formulas for due dates and status

Short answer: a SharePoint calculated column can use IF, AND, OR, ISBLANK, DATEDIF and & to join text, but Microsoft's formula pages say TODAY and ME are not supported in calculated columns. For anything based on today's date, use a view filter, column formatting or a Power Automate flow. Use calculated columns for the parts that stay the same once the row is saved.

What teams want

Teams ask for two things:

The second one is mostly possible. The first one is not, at least not inside a calculated column. This guide shows what a calculated column can do, what it cannot, and where to go for the rest.

The limits, in plain words

Microsoft's page "Introduction to SharePoint formulas and functions" lists these limits:

Microsoft's page on the TODAY function says the same thing: "You can use the TODAY function only as a default value; you cannot use it in a calculated column." That page, and the introduction page, list SharePoint Server versions and do not name SharePoint Online. Test on your own list before you rely on either limit.

What this means for you: a "Days left" column that counts down each morning cannot be built as a calculated column. A column that says "Late" when the due date has passed cannot be built either, because the answer depends on today's date. The page also says lists do not support the RAND and NOW functions.

Some forum posts claim a TODAY formula works for them. Microsoft's own pages say it is not supported, so do not build a tracker on it.

Where days left and "Late" should come from

Pick one of these instead:

  1. A view filter. In the classic view editor (Edit current view, then Filters), you can filter on [Today]. This shows only late items. It works only in the classic view editor, and exact names may differ.
  2. Column formatting. This can color a row red when the due date is past. See "Turn overdue rows red in a SharePoint list".
  3. A scheduled flow. A flow can check dates each day and message the owner. See "Send a reminder before a due date in a SharePoint list".

For step-by-step workarounds, see "Use today's date in a SharePoint calculated column".

Formulas that Microsoft documents

Microsoft's page "Examples of common formulas in SharePoint lists" shows these patterns. Column1, Column2 and Column3 stand for your own column names. Put the formula in a calculated column and set its return type to match the result (Single line of text for words, Number for a count of days, Date and Time for dates).

=IF([Column1]<=[Column2], "OK", "Not OK")

=AND([Column1]>[Column2], [Column1]<[Column3])

=OR([Column1]>[Column2], [Column1]<[Column3])

=IF(ISBLANK([Column1]), "Not OK", "OK")

=DATEDIF([Column1], [Column2],"d")

=[Column1]&" "&[Column2]

When a formula returns a date, Microsoft says the return type must be "Date and Time". A formula that counts days, such as DATEDIF, returns a number, so set its return type to Number.

Everything below is built from these patterns. Because your column names and choices differ, treat every formula in the next section as a starting point. Exact formula may differ; test on a copy.

More patterns

Join text. Microsoft's examples use the ampersand or CONCATENATE, for example =[Column1]&" sold "&[Column2]&" units." and =CONCATENATE([Column1]," sold ",[Column2]," units.").

Blank check. Use ISBLANK, as in the examples above: =IF(ISBLANK([Column1]), "Not OK", "OK").

Three or more outcomes. Put one IF inside another. Microsoft says "A formula can contain up to eight levels of nested functions." Microsoft's formula pages do not mention a SWITCH function, so use nested IF. Pattern, with your own names:
=IF([Status]="1 Open","Working",IF([Status]="2 In progress","Started","Closed"))
Exact formula may differ; test on a copy.

Date as text. Microsoft's examples use the TEXT function to show a date inside a sentence: =[Column1]&" "&TEXT([Column2], "mmm-dd-yyyy"). For a date result instead of text, Microsoft says the return type must be "Date and Time".

Lookup columns. Microsoft says "Lookup fields are not supported in a formula." A formula also cannot read another list.

Days left. Our advice, not a Microsoft rule: add a Number column named Days left, and let a scheduled flow fill it.

  1. Create a scheduled cloud flow that runs once a day.
  2. Add the SharePoint action Get items. Set Top Count and turn Pagination on.
  3. Inside an Apply to each loop, add Update item. Write the number of days between today and the Due date into Days left.
  4. Test on a copy of the list. A flow that runs on a schedule does not wake itself up when an item changes, so it does not need a loop guard. A second flow that runs when an item is modified does need one.

Worked example: a Tasks list

Build a list with these columns:

Add two calculated columns. Make a copy of the list first.

Status text

Name it "Status text". Set the return type to Single line of text. Formula to try:
=IF([Status]="3 Done","Closed",IF(ISBLANK([Due date]),"No due date","Open"))

It reads like this: if the status is 3 Done, show Closed. If there is no due date, show No due date. Otherwise show Open. Notice the choice is written exactly as "3 Done", with the number. If your choice says something else, the formula will not match. Exact formula may differ; test on a copy.

This column does not say "Late". It cannot, for the reasons above. Use the red-row formatting for that.

Priority from the length of the task window

Name it "Priority". Set the return type to Single line of text. The idea: the fewer days between the day the task was created and the due date, the higher the priority. Formula to try:
=IF(ISBLANK([Due date]),"3 Low",IF(DATEDIF([Created],[Due date],"d")<=2,"1 High","2 Medium"))

It reads like this: no due date means 3 Low. A window of two days or less means 1 High. Anything else is 2 Medium. The cut-off of two days is only an example. One way to start is to pick the number your team already uses in its head. Exact formula may differ; test on a copy. Test a due date that comes before the created date too.

Step by step

  1. Open the list and make a copy to test in.
  2. Add the Status choices with number prefixes, as above.
  3. Add a column, choose Calculated, and give it a name.
  4. Paste the formula. Change column names to match yours exactly, including spaces.
  5. Set the return type, then save.
  6. Add three test rows: one with no due date, one done, one open with a short window. Check each result by eye.
  7. If you see #VALUE!, a part of the formula returns the wrong kind of value. Remove parts until it clears, then add them back one by one.
  8. When all test rows are right, repeat on the real list.

What to avoid

Honest limits

A calculated column is good at wording and simple math on one row. It is not a clock. If your team needs live countdowns, alerts or a "Late" flag that changes by itself, plan on a view filter, formatting or a flow from the start. Also check which of your columns can be used in a formula; some column types may not be allowed. Exact names may differ on your screen.

When to get help

You can build all of this yourself in Microsoft 365. If you would rather have it built and tested for your team, I do that. A tracker like this is a fixed price: $5,000 for one, built in 2 weeks. See "What a SharePoint tracker costs to build". Bring one example of the problem to a free call.

Tell me what's still manual

I am Al Davies. I run 250 High Street LLC and build SharePoint trackers and Power Automate flows for operations teams. I work remotely. The first call is free, and I will not try to sell you anything.

See trackers I built: Tools I built

FAQ

SharePoint calculated column days left or today not updating

Microsoft's pages say TODAY and ME are not supported in calculated columns, and a calculated column works from the values in its own row. For days left from today, use a view filter, column formatting or a flow that writes a number each day.

SharePoint calculated column formula if empty

Use ISBLANK inside IF, as in Microsoft's example =IF(ISBLANK([Column1]), "Not OK", "OK").

SharePoint calculated column concatenate

Join values with the ampersand, as in =[Column1]&" "&[Column2], or use CONCATENATE. Both patterns are in Microsoft's examples page.

SharePoint calculated column multiple IF

Nest one IF inside another. Microsoft says a formula can have up to eight levels of nested functions, and its formula pages do not mention a SWITCH function.

SharePoint calculated column with a lookup value

Microsoft says lookup fields are not supported in a formula, and a formula cannot reference another list or library.

Sources