← Al Davies, 250 High Street

Make a SharePoint column required only when another column has a value

Short answer: SharePoint has no built-in "required if" setting. Add a list validation formula such as =IF([Stage]="3 Closed",NOT(ISBLANK([Closing note])),TRUE) in List settings, Validation settings, so the item will not save until the dependent column is filled. Then add the show-if rule on the column so the field only appears when it applies.

The problem

Picture a support list where every row carries a Stage and a Closing note. A row at Stage 1 Open has nothing to write in the note yet. A row at Stage 3 Closed needs one. Switch Require on for the note and nobody can create an open row. Leave it off and closed rows pile up with empty notes that nobody can explain later.

What SharePoint gives you

Microsoft's column page covers the plain Require switch and a Column Validation box that takes a formula and a message. The Q&A answers in the sources use the list-level Validation settings. Exact names may differ on your screen.

Two separate tools do two separate jobs:

Pair them. One decides when the box shows. The other decides whether the row may be saved.

A worked example: a support case list

A rich text Multiple lines of text column may not show up in Validation settings, so this example uses Single line of text for Closing note.

Our advice, not a Microsoft rule: number the Choice values so you type each one the same way every time.

Sample rows: Client 12 at Stage 1 Open with an empty note must save. Client 31 at Stage 3 Closed with an empty note must fail. Client 31 with the note "Refund sent" must save.

The target rule: Stage 3 Closed demands a Closing note. Stages 1 and 2 leave it optional.

Step 1. Add the validation formula

  1. In the list, click the gear, then List settings. Exact names may differ.
  2. Under General Settings, click Validation settings.
  3. Paste this into the Formula box:

=IF([Stage]="3 Closed",IF(ISBLANK([Closing note]),FALSE,TRUE),TRUE)

  1. In the User message box, type: "Add a closing note before you close this case."
  2. Click Save.

Reading it aloud: the formula asks whether Stage equals 3 Closed. If yes, it checks the note, and a blank note returns false, so the save is refused. If no, it returns true and the row goes through.

The shape matches the Microsoft Q&A answers: an IF wrapped around an ISBLANK test. Our advice, not a Microsoft rule: put square brackets around every column name, and make the quoted text match the Choice value exactly, number included. Your list may need a different formula, so run it.

Step 2. Add the show-if rule

This part hides the note until Stage reaches Closed. You can skip it, but forms get shorter. The click path lives in "Make the new-item form shorter: sections and show-if rules". Brief version:

  1. Open any item, click Edit form, then Edit columns. Exact names may differ.
  2. Locate Closing note and open its options menu.
  3. Click Edit conditional formula and paste:

=if([$Stage] == '3 Closed', 'true', 'false')

Microsoft's form page says the name after the $ is the internal column name. A column renamed after creation can keep its first name inside.

  1. Click Save.

A fresh case now opens without the note box. Choosing 3 Closed reveals it. Try to save with it empty and the validation rule answers with your message.

Microsoft's form page lists column types a show-if formula does not support, including Choice with multiple selections, Currency and Calculated columns. Trigger from a single-select Choice or a Yes/No column, which the page gives examples for.

A second pattern: required when another column has any value

Some triggers are not a fixed choice. Example: once a Review date holds anything, a Review outcome must hold something too. Test the trigger for blank instead:

=IF(ISBLANK([Review date]),TRUE,IF(ISBLANK([Review outcome]),FALSE,TRUE))

Blank date: pass. Date present and outcome blank: fail. Use Single line of text, Choice, Date or Number columns here. Person and Lookup columns may not be available in the formula. Test it before you rely on it.

A third pattern: each value needs a different column

Suppose Stage 2 Escalated needs an Escalation reason and Stage 3 Closed needs a Closing note. An accepted Microsoft Q&A answer nests one IF inside another, one per value. Applied to this list:

=IF([Stage]="2 Escalated",IF(ISBLANK([Escalation reason]),FALSE,TRUE),IF([Stage]="3 Closed",IF(ISBLANK([Closing note]),FALSE,TRUE),TRUE))

Read it in order. Stage 2 with no reason fails. Stage 3 with no note fails. Any other Stage passes. Add one more nested IF for each further value, and test every branch.

Test before you tell the team

Run these in order on the support list:

  1. Save Client 12 at Stage 1 Open with no note. Expect a save.
  2. Set Client 31 to 3 Closed, no note. Expect a refusal and your message.
  3. Type a note into Client 31. Expect a save.
  4. Open the new-item form. Expect no note box.
  5. Our advice, not a Microsoft rule: if your team edits in grid view, imports files or runs a flow that sets Stage, repeat the case there.

What to avoid

When a custom form fits better

Reach for a Power Apps custom form when you need separate messages per rule, a field required midway through a long process, or a check against a second list. Someone has to maintain it afterward. The side-by-side is in "Power Apps or a SharePoint list form: which one do you need?".

For plain date and two-field checks, see "SharePoint list validation: end date after start date, and one of two fields".

Honest limits

Validation blocks a save but gives no warning beforehand, so write a clear message. It fires only when a row is saved, which leaves existing rows unchecked until someone edits them. 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

Can I make a field required based on another value in a modern list form?

Not with the Required switch. A Microsoft Q&A answer from Microsoft External Staff says to use list validation: List settings, Validation settings, with a formula.

How do I require one of several columns based on a choice value?

Nest one IF inside another, one for each value, as an accepted Microsoft Q&A answer shows. Test every branch.

Does the show-if rule make a field required?

No. It only shows or hides the field. Use a validation formula to make it required.

Why does SharePoint say the formula must reference only this column?

A formula that points at another column was entered as column validation. A Microsoft Q&A answer says to move it to List settings, Validation settings.

Can I base the rule on a lookup column?

Microsoft's formula examples page says lookup fields are not supported in a formula. Copy the lookup value into a Choice or text column and base the rule on that.

Will the rule block a flow or an import?

It can. Validation runs when a row is saved, whatever saved it. Test your flow or import after you add the rule.

Sources