What takes longer is knowing when removal is the right call, what breaks downstream, and how to do it cleanly across a model with 10+ linked tabs.
The Standard Method
Select the range, go to Data > Data validation, and click the trash icon next to the rule (or "Remove all" if multiple rules exist in your selection). You can also right-click any validated cell and choose View more cell actions > Data validation to reach the same panel.
One underused shortcut: hold Ctrl (or Cmd on Mac) to select non-contiguous ranges before opening the validation panel. You can strip B3, B7, and B12:B15 in one pass instead of clicking through each cell separately.
Removing Validation Across Multiple Tabs
This is where 3 seconds turns into a 20-minute job if you do it manually. For multi-tab models, Apps Script is the right approach.
| Method | Best for | Approximate time |
|---|---|---|
| Data menu | Single range, one tab | 3 seconds |
| Ctrl+select + Data menu | Non-contiguous ranges, one tab | 10-15 seconds |
| Apps Script | All ranges across all tabs | 2-3 seconds |
This script removes all validation from every sheet in the workbook:
function removeAllDataValidation() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var sheets = ss.getSheets();
// Clears validation from every cell that contains data, across all tabs
sheets.forEach(function(sheet) {
sheet.getDataRange().clearDataValidations();
});
SpreadsheetApp.getUi().alert('Done - validation cleared from all sheets.');
}
To run it: Extensions > Apps Script, paste the code, click Run. You authorize once on the first run, then it executes in under 3 seconds on a typical 10-tab model. getDataRange() targets only cells that contain data, so it won't waste time processing thousands of empty rows.
If you only want to clear a specific tab:
function removeValidationFromAssumptions() {
var sheet = SpreadsheetApp.getActiveSpreadsheet().getSheetByName('Assumptions');
sheet.getRange('B3:B50').clearDataValidations();
}
What Actually Breaks When You Remove Validation
This is the part that matters in a real model.
Conditional formatting tied to validation values. If a CF rule fires on =$B$3="Base Case", the conditional formatting keeps evaluating after you kill the dropdown. The risk isn't the CF breaking - it's that without the dropdown constraint, someone typing "base case" (lowercase) or "BaseCase" triggers no formatting at all, and the model silently misbehaves. You won't see an error; you'll just see a number that doesn't move when it should.
Named ranges with downstream IF chains. In a three-statement model where Scenario_Flag controls 20+ SWITCH statements, removing the validation doesn't break the named range or any formula referencing it. =SUMIFS('P&L'!C:C, 'P&L'!B:B, ">=" & Assumptions!$B$3) still calculates. It just might calculate against a value you didn't intend, with no error to catch it.
Cascading dropdowns. If you built dependent dropdown lists (Region > Sub-region, or Product Line > SKU via INDIRECT), removing the parent validation silently breaks the child list. The child may go stale or the range it pulls from may resolve incorrectly, depending on how it was built.
Quarterly board pack inputs. If this model gets emailed out periodically, the validation was probably protecting cells from "$4.2M" text entries instead of 4200000 numbers. Removing it shifts that risk back to you.
Remove vs. Loosen: The Right Call
Half the time when analysts want to remove validation, they actually need to change the rejection behavior, not eliminate the rule.
According to Google's Sheets API reference, the DataValidationRule resource includes a strict boolean that controls exactly this - true rejects invalid data outright, false shows a warning and lets the entry through. In the UI, this maps to the "On invalid data" dropdown inside Data > Data validation: Reject input vs. Show warning.
Switching from Reject to Warning lets you type any value - including outside the allowed list - while keeping the rule intact for documentation and for other collaborators. The dropdown still shows; the guardrail just becomes advisory.
Use "Show warning" when you're running a one-off sensitivity on a model you'll return to normal state afterward. Remove the rule entirely when you're redistributing a cleaned-up model or when the validation was wrong to begin with.
Auditing Before Removing
If you inherited a model and aren't sure what validation exists or where, run this before changing anything:
function auditDataValidation() {
var ss = SpreadsheetApp.getActiveSpreadsheet();
var output = [['Sheet', 'Cell', 'Criteria Type']];
ss.getSheets().forEach(function(sheet) {
var rules = sheet.getDataRange().getDataValidations();
rules.forEach(function(row, rowIdx) {
row.forEach(function(rule, colIdx) {
if (rule !== null) {
output.push([
sheet.getName(),
sheet.getRange(rowIdx + 1, colIdx + 1).getA1Notation(),
rule.getCriteriaType().toString()
]);
}
});
});
});
var auditSheet = ss.insertSheet('Validation Audit');
auditSheet.getRange(1, 1, output.length, 3).setValues(output);
}
This creates a "Validation Audit" tab listing every validated cell, which sheet it lives on, and the criteria type. getCriteriaType() returns values like VALUE_IN_LIST, NUMBER_BETWEEN, DATE_IS_VALID_DATE - enough context to decide what's protecting something that matters versus what's just noise. Run this first, then make targeted decisions rather than wiping everything and debugging afterward.
As of May 2026, this works cleanly with the current Google Sheets Apps Script API and handles workbooks with up to Google Sheets' 10-million-cell cap without timeout issues on typical FP&A model sizes.