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:
- Validation formula: runs at save time. When it returns false, the row stays unsaved and your message appears.
- Show-if rule: Microsoft's form page describes it as showing a column only when another column holds a chosen value. It changes what people see. It never forces an entry.
Pair them. One decides when the box shows. The other decides whether the row may be saved.
A worked example: a support case list
- Case label (Single line of text)
- Owner (Person)
- Details (Multiple lines of text)
- Stage (Choice: 1 Open, 2 Escalated, 3 Closed)
- Closing note (Single line of text)
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
- In the list, click the gear, then List settings. Exact names may differ.
- Under General Settings, click Validation settings.
- Paste this into the Formula box:
=IF([Stage]="3 Closed",IF(ISBLANK([Closing note]),FALSE,TRUE),TRUE)
- In the User message box, type: "Add a closing note before you close this case."
- 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:
- Open any item, click Edit form, then Edit columns. Exact names may differ.
- Locate Closing note and open its options menu.
- 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.
- 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:
- Save Client 12 at Stage 1 Open with no note. Expect a save.
- Set Client 31 to 3 Closed, no note. Expect a refusal and your message.
- Type a note into Client 31. Expect a save.
- Open the new-item form. Expect no note box.
- 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
- Do not count on the show-if rule to force an entry. It controls visibility only.
- Do not type Choice text from memory. Copy it with its number so "3 Closed" matches.
- Do not put a lookup column in the formula. Microsoft's formula examples page says lookup fields are not supported in a formula. Copy the value into a Choice or text column and test against that.
- Do not stack several conditions into one formula. Every extra clause makes it harder to read and repair.
- Do not forget the list holds a single User message. With several rules, word that message so it covers each one.
- Do not treat validation as security. It checks data only, and hiding a field is not the same as keeping it private.
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.
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
- Microsoft Support, Create a column in a list or library
- Microsoft Support, Examples of common formulas in lists
- Microsoft Q&A, Making a field mandatory based on another field in SP Modern list
- Microsoft Q&A, SharePoint validation between two date columns in the same list
- Microsoft Q&A, Validation formula to require data in one of 3 columns
- Microsoft Learn, Show or hide columns in a list form