๐ Lesson 3.2: Data Validation & Dropdowns
The cheapest way to clean data is to never let it get dirty. In this lesson you'll put guardrails on your cells: a dropdown so a Category is always chosen from the same tidy list, and validation rules that quietly reject a bad date or an out-of-range number before it ever lands. Clean input now saves hours of untangling later โ and it's what makes your future sorts, filters, pivots, and lookups actually work.
๐ What You'll Learn
By the end of this lesson, you will be able to:
- Explain why validating at the point of entry beats cleaning data after the fact
- Create a dropdown from a typed list and from a range, and read the new chip UI
- Apply other rules โ number ranges, dates, "text contains", checkboxes, and a custom formula
- Choose between reject and warn, add help text, and remove validation
- Store option lists on a separate helper tab and reference them โ and see where named ranges come next
โฑ๏ธ Estimated Time: 45 minutes ยท Level: Intermediate
๐ฏ Project: Add a Category dropdown and a Status dropdown to your expense dataset, plus a rule that rejects an out-of-range amount and one that requires a valid date โ then watch the chips and the rejection message in action.
In This Lesson
Why Validate at the Point of Entry
Picture a form on a clipboard passed around an office. If it just has a blank line labeled "Department," you'll get back "Sales", "sales", "Sales Dept", "Slaes", and one heroic soul who writes "the sales team, third floor." Every one of those means the same thing, but to a spreadsheet they're five different categories. Now imagine the form had five checkboxes instead. Everyone picks one; the data comes back perfectly consistent. That's the entire idea of data validation: make the right entry the only easy entry.
You have two moments to keep data clean: at entry or later. Cleaning later means hunting down every "sales" variant, fixing typos, and re-standardizing dates โ tedious, error-prone, and never truly finished because new mess arrives daily. Validating at entry means the mess mostly can't happen in the first place. It's the difference between installing a filter on a tap versus straining every glass of water by hand.
๐ง Mindset: Consistency is what powers everything downstream
Clean, consistent data isn't just tidy โ it's the fuel for the powerful features coming later. A
pivot table that groups expenses "by Category" only works if every grocery row literally says
Groceries, not five spellings of it. A VLOOKUP or XLOOKUP finds
a match only when the text matches exactly. A chart is only as honest as the categories under it. When
you add a dropdown today, you're not being fussy โ you're guaranteeing that Lessons 5.1 (pivots) and
4.x (lookups) will actually behave.
Validation lives under Data โธ Data validation, where you "Add a rule," pick the range it applies to, and choose what kind of rule it is. Everything in this lesson starts there. Because it protects the Cells layer of our Cells โ Formulas โ Views model, good validation makes every layer above it more trustworthy.
Creating a Dropdown
A dropdown turns a cell into a menu: click it, pick from the offered options, done. It's the single most useful validation rule because it eliminates typos and spelling drift entirely. There are two ways to supply the options.
From a list of items you type
Select the column of cells you want to control (say the whole Category column), open Data โธ Data
validation โธ Add rule, and choose "Dropdown". Type your options one per line:
Groceries, Dining, Transport, and so on. Great for a short, stable
set of choices you can hold in your head.
From a range on the sheet
Instead of typing, choose "Dropdown (from a range)" and point it at a range like
Lists!A2:A10 โ a column of options living elsewhere. Now the dropdown mirrors whatever is in
that range: add "Health" to the range and it instantly appears in every dropdown, no rule editing needed.
This is the professional approach for lists that grow or change, and it sets up the helper-tab pattern in
Section 5.
โ Pro Tip โ the chip appearance
Modern Sheets shows dropdown values as rounded chips, often color-coded (each option can get its own color in the rule editor). A chip makes it obvious at a glance that a cell is a controlled dropdown, not free text โ and color-coding a Status column (green "Done", amber "In progress", red "Blocked") turns a plain list into a mini dashboard. You choose "Chip" vs the older "Arrow" display style right in the rule's advanced options.
Single vs multi-select
By default a dropdown holds one value per cell โ pick "Dining" and that replaces whatever was there. Newer Sheets also offers multi-select, letting a single cell hold several chips at once (handy for tags like "urgent, finance"). Multi-select is powerful but be cautious: a cell with "urgent, finance" is a single text value to formulas, so it won't group cleanly in a pivot the way a single-value column does. For data you'll analyze, prefer one value per cell; save multi-select for informal tagging.
โ ๏ธ Important Note: Dropdowns guide new entries, but they don't retroactively fix data already in the cells. If your Category column already contains "sales" and "Sales Dept", adding a dropdown won't rewrite them โ it'll just flag them as invalid (a little warning corner) and offer the clean options going forward. Clean the existing values once, then let the dropdown keep them clean.
Other Validation Rules
Dropdowns are the star, but validation covers far more than lists. The same Data โธ Data validation dialog offers rules for numbers, dates, text, and checkboxes โ and even a custom formula for anything else.
| Rule type | What it checks | Example |
|---|---|---|
| Number range | The value is a number within limits you set | Amount is between 0 and 10000 |
| Date | The entry is a valid date, optionally in a window | Date is a valid date on or after 2026-01-01 |
| Text contains | The text includes, equals, or is a valid email or URL | Text contains the word "invoice" |
| Checkbox | Turns the cell into a tickable TRUE or FALSE box | A "Paid?" checkbox column |
| Custom formula | Any formula that returns TRUE for allowed entries | Accept only whole numbers |
Number ranges and dates
These are your everyday guardrails. A number-range rule on Amount ("greater than 0" or "between 0 and
10000") catches a fat-fingered negative or an accidental extra zero. A date rule ("is a valid date")
rejects Sept 5th-ish and insists on a real, sortable date โ which matters enormously, because
Sheets can only sort and calculate with dates it recognizes as dates.
Checkboxes
Choose the Checkbox rule and the cell becomes a tick box that stores TRUE
when checked and FALSE when not. Those are real values you can count: =COUNTIF(E2:E17,
TRUE) tells you how many rows are marked paid. Checkboxes are validation and a friendly
input control in one.
Custom formula validation (brief)
When no built-in rule fits, a custom formula lets you write your own test. The rule accepts the entry
only when your formula returns TRUE for that cell. For example, to force whole numbers in
cell A2 you'd use a formula like =A2=INT(A2). You'll get comfortable writing formulas over the
next module; for now, just know this escape hatch exists for the rare case the menus don't cover.
๐ก Dates are a common trap
A "date" that Sheets stored as text (because it was typed oddly, or pasted from elsewhere) looks fine but won't sort or do date math. A date-validation rule set to "is a valid date" is a cheap way to force genuine dates at entry, so your timelines and filters behave. We dig into how Sheets stores dates as numbers later; for now, validating them is the quick win.
Reject vs Warn, Help Text & Removing Rules
Every validation rule has to decide what happens when someone breaks it. That's the reject vs warn choice, and picking the right one is about how strict the data needs to be.
into a validated cell"] --> B{"Does it pass
the rule?"} B -->|"yes"| C["โ Valid entry accepted
value stays"] B -->|"no, rule set to reject"| D["๐ซ Invalid entry rejected
entry refused, old value kept"] B -->|"no, rule set to warn"| E["โ ๏ธ Warning shown
value kept with a red flag"]
- Reject the input โ a bad entry is refused outright and the cell keeps its previous value, with a message explaining why. Use this when clean data is non-negotiable, like a Category that must match your pivot exactly.
- Show a warning โ the entry is allowed but the cell gets a red flag in the corner and a note on hover. Use this when you want to nudge without blocking, or when occasional exceptions are legitimate.
Help text
Every rule lets you add help text โ a short message shown when someone selects the cell or trips the rule. "Choose a category from the list" or "Enter an amount between 0 and 10000" turns a confusing rejection into helpful guidance. Always write help text for rules other people will use; it's the difference between a guardrail and a mystery.
Removing or editing validation
Rules aren't permanent. Open Data โธ Data validation, and you'll see every rule on the sheet listed. Click one to edit its range, options, or reject/warn setting; click Remove rule (the trash icon) to delete it. There's also a "Remove all" option if you want to clear the slate. Editing a rule updates every cell it covers at once.
โ ๏ธ Watch Out
"Warn" is friendlier but leaks bad data โ a warned cell still contains the messy value, so your pivots and lookups can still choke on it. If the whole point is consistency for analysis, choose reject. And remember: validation only guards new typing in the browser. Data arriving by import, paste, or the API can sometimes bypass rules, so validate and spot-check imported data rather than trusting the rule alone.
Dropdowns + a Helper "Lists" Tab
When your dropdown options live "from a range," where should that range be? The professional habit is a dedicated helper tab โ call it Lists โ that holds nothing but your option columns: Categories in column A, Statuses in column B, and so on. Your data tab stays clean; the machinery lives out of the way.
Why a separate tab beats stuffing lists into spare cells on your data sheet:
- Nothing gets sorted or deleted by accident. Options tucked next to your data can get swept up in a sort or overwritten; on their own tab they're safe.
- One place to update. Add "Health" to
Lists!Aonce, and every dropdown pointing there updates instantly โ no rule editing. - It scales. As your workbook grows, a tidy Lists tab keeps all your controlled vocabularies in one obvious spot.
Point a dropdown-from-a-range rule at, say, Lists!A2:A20, leaving room to grow. A small
caution: if the range is exactly the current items, a newly added option below it won't be picked up until
you extend the range โ so give it a little headroom, or use a whole-column reference like
Lists!A2:A.
๐ก Foreshadowing named ranges (Lesson 3.3)
Referring to Lists!A2:A20 works, but it's a little cryptic and it breaks if the list
moves. In the very next lesson you'll learn named ranges: you'll name that range
something like CategoryList, and then your dropdown rule and your formulas can simply say
CategoryList instead of a coordinate. It reads plainly, survives moving the data, and is
the natural next step from the helper-tab habit you're building here.
โ ๏ธ Important Note: Keep your Lists tab's options spelled and cased exactly how
you want them stored โ because a dropdown copies the option's text verbatim into the data cell. If the
list says groceries lowercase, every entry will be lowercase. Decide your canonical
spelling once, put it on the Lists tab, and every dropdown enforces it for free.
๐ฏ Project: Dropdowns & a Rejection Rule
You'll upgrade the expense dataset from last lesson (or a fresh copy) with real guardrails: two dropdowns fed from a helper tab, a number rule that rejects impossible amounts, and a date rule that insists on genuine dates. Then you'll deliberately break each rule to see the chips and the rejection message do their job.
๐๏ธ Add validation to your expense sheet
Objective: Make Category and Status controlled dropdowns, reject an Amount outside a sensible range, and require a valid Date โ all wired to a tidy Lists tab.
Instructions (about 22 minutes):
- (3 min) Open your expense sheet. Add a new tab called
Lists. In it, put a headerCategoryin A1 with options below (Groceries, Dining, Transport, Utilities, Shopping โ hold Health back for Step 6) and a headerStatusin B1 with options (Pending, Cleared, Refunded). - (4 min) Back on your data tab, select the Category column (below the header). Go to Data โธ Data validation โธ Add rule, choose Dropdown (from a range), and point it at
Lists!A2:A. Set the display to Chip and, on reject, choose Reject the input. Add help text like "Pick a category from the list." - (3 min) Add a new
Statuscolumn to your data. Give it a dropdown fromLists!B2:Bthe same way, and color-code the chips if you like (green Cleared, amber Pending, red Refunded). - (3 min) Select the Amount column. Add a rule: Number โธ between
0and10000, set to Reject the input, with help text "Enter an amount between 0 and 10000." - (3 min) Select the Date column. Add a rule: Date โธ is a valid date, set to Reject the input. Add help text "Enter a real date, e.g. 2026-09-05."
- (4 min) Now break things on purpose: try typing "sales" in Category,
-20in Amount, andnext tuesdayin Date. Watch each get rejected with your help text. Then enter valid values and confirm the chips appear. Add "Health" to your Lists tab and watch it show up in the dropdown automatically. - (2 min) Open Data โธ Data validation to see all four rules listed, and practice editing one (widen the Amount range) and confirming the change applies.
๐ก Hint โ the Lists tab layout and a custom-formula bonus
Lists tab
A B
1 Category Status
2 Groceries Pending
3 Dining Cleared
4 Transport Refunded
5 Utilities
6 Shopping
7 Health (added in Step 6)
Dropdown ranges (from a range):
Category column -> Lists!A2:A
Status column -> Lists!B2:B
Bonus custom-formula rule (whole-number amounts only).
A cell holds ONE validation rule, so to keep the 0โ10000
check, combine both tests in one custom formula:
=AND(D2>=0, D2<=10000, D2=INT(D2))
D2=INT(D2) is TRUE only when the amount has no decimals,
so every amount with cents gets flagged. Try it on a
copy of the Amount column first.
Using Lists!A2:A (whole column below the header) means new options you add are
picked up automatically โ no need to keep extending the range.
โ Project Completion Checklist
- You created a separate
Liststab holding your Category and Status options - Category and Status are dropdowns from a range, showing as chips
- Amount rejects values outside 0โ10000; Date rejects non-dates
- You saw the rejection messages and help text by breaking each rule on purpose
- Adding an option to the Lists tab appeared in the dropdown automatically
- You viewed all rules under Data โธ Data validation and edited one
๐ฏ Quick Quiz
Question 1: Your Category column will feed a pivot table later, so every value must match exactly. When someone types a category that isn't on your list, which validation setting best protects your analysis?
Question 2: Why is it better to build your dropdown "from a range" on a Lists tab than to type the options directly into the rule?
Best Practices for Data Validation
โ Do's
- Validate the columns that feed analysis โ categories, statuses, dates, amounts โ before you rely on them.
- Keep option lists on a dedicated Lists tab and reference them "from a range."
- Write help text so a rejection guides rather than frustrates.
- Prefer one value per cell for anything you'll sort, filter, or pivot.
โ Don'ts
- Don't rely on "warn" when consistency matters โ a warned cell still holds the messy value.
- Don't assume validation fixes existing data โ clean current values once, then let the rule keep them clean.
- Don't hard-code long option lists into the rule if they'll change; a range is easier to maintain.
๐ก Pro Tips
- Color-code a Status dropdown so a column of chips doubles as an at-a-glance dashboard.
- Leave headroom in your list range (or use
Lists!A2:A) so new options appear without editing the rule.
๐ Learning Journal
Keep a learning journal as you work through this course โ a document, a note, or even a tab in your own spreadsheet. After each lesson, take a few minutes to write down:
- Key concepts you learned
- Techniques that clicked for you
- Questions or confusion points to revisit
- Ideas you want to try in your own sheets
- Your progress and feelings about learning this โ including where your confidence grew
โ๏ธ This lesson's prompt: Think about data you (or a team) type in regularly. Where does inconsistency creep in โ a category typed five different ways, dates in mixed formats, an amount with a stray zero? Which one would a dropdown or a reject rule fix, and would you set it to reject or warn? What made you choose?
๐ Lesson Summary
๐ Key Takeaways
- Clean at the source. Validating at the point of entry beats cleaning later, and consistent data is what powers pivots, lookups, and honest charts.
- Dropdowns can be built from a typed list or from a range; modern Sheets shows them as color-codeable chips, and single value per cell is best for analysis.
- Other rules cover number ranges, valid dates, "text contains", checkboxes, and a custom formula for anything else.
- Reject vs warn: reject refuses bad input and keeps consistency; warn only flags it. Add help text, and edit or remove rules any time from Data โธ Data validation.
- A helper "Lists" tab keeps options safe and updates every dropdown at once โ and it sets up named ranges in the next lesson.
๐ What You've Accomplished
Your sheet now defends itself. Categories and statuses come from tidy dropdowns, amounts and dates are forced to be sensible, and your option lists live safely on their own tab. You've moved from arranging data (last lesson) to protecting it โ the foundation that makes everything in the analysis modules trustworthy.
โ Common Questions at This Stage
Does adding a dropdown change the values already in the cells?
No. Validation guards new entries. Existing values that don't match are flagged as invalid but not rewritten. Clean the current data once, then the dropdown keeps future entries consistent.
Should I use "reject" or "warn"?
Use reject whenever consistency matters for analysis โ it refuses bad input and keeps the previous value. Use warn when you only want to nudge, or when legitimate exceptions happen. Remember a warned cell still contains the messy value.
My dropdown ignores an option I just added to the list โ why?
Your rule's range probably stops just above the new item. Extend it, or point the dropdown at a
whole-column range like Lists!A2:A so new options are picked up automatically. Named
ranges (next lesson) make this even cleaner.
๐ญ Looking Ahead
In the next lesson โ Lesson 3.3: Named Ranges & Organizing Large Sheets โ we give
your ranges plain-English names (so Lists!A2:A becomes CategoryList), rewrite a
formula to read clearly, and reorganize a workbook into clean Data / Lists / Summary tabs. It's the natural
next step from the helper-tab habit you just built.
โ Before the Next Lesson
- Keep your validated expense sheet with its Lists tab โ you'll name ranges on it next
- Make sure at least one dropdown is built "from a range" (not just typed options)
- Write your Learning Journal entry for this lesson
๐ Additional Resources
- Create a dropdown list & data validation (Google Support)
- Google Sheets Help Center โ full topic list
- sheets.google.com โ open the app
๐ Encouragement for the Journey
Validation is one of those quiet skills that makes you look like a pro without any flash. Every dropdown you added today is a typo that will never happen and a pivot that will just work. You're building sheets that protect themselves โ and future-you will be grateful. Next, we make them readable with names and structure. ๐