Skip to main content

Deterministic In-Browser Spreadsheet Qualification

Order Dossier (€149 + VAT)

ISO/IEC 17025:2017 · Clause 7.11, control of data and information management · testing and calibration laboratories

Validate your laboratory spreadsheets for ISO/IEC 17025 Clause 7.11 — without a single customer result leaving the lab.

Excel is validated. Your calibration formulas are not.

Note 2 to Clause 7.11.2 covers Excel as it ships, not the curves, uncertainty budgets and conformity rules your analysts build in it. Clause 7.11.6 then expects calculations to be checked "in an appropriate and systematic manner". NormXL recalculates every cell with an independent engine benchmarked against the NIST Statistical Reference Datasets, tests every decision cell at its limits, and seals the workbook with SHA-256. It does all of this in your browser, so client results never leave the laboratory. About three minutes. €149 + VAT.

  • Clause 7.11.2 validation before use and Clause 7.11.6 systematic checking, evidenced rather than asserted.
  • LINEST, SLOPE, INTERCEPT, TREND, CORREL and STDEV.S agreement reported as Log Relative Error (LRE), the way numerical-software benchmarks report it.
  • Clause 4.2-safe by architecture: no upload, no cloud, no AI.
Order Your Laboratory Spreadsheet Dossier — €149 + VAT

Environmental · chemical · calibration · materials testing · No installation · No admin rights

Download Sample 24-Page Dossier (PDF)

The sample is produced in the ISO/IEC 17020 profile. The ISO/IEC 17025 profile has the same structure, with the Clause 7.11 mapping shown below.

Free: test your own Excel against NIST Norris (.xlsx, no macros) →
One result, two verdictsSuspended solids · filter + residue 30.10424 g · filter 30.10074 g · volume 100 mL. The result cell shows 35.00 mg/L and stores 35.000000000025011; limit ≤ 35 mg/L; EXCEEDS · False reject. The printed result meets the limit. The stored result does not. Observation: Display ≠ decision · flagged in §6.ABC12345filter + residue30.10424 gfilter30.10074 gvolume100 mLSuspended solids35.00 mg/Llimit≤ 35 mg/LEXCEEDSObservationDisplay ≠ decision ·flagged in §6Reproduced in Microsoft Excel 16.035.000000000025011False rejectThe printed result meets the limit. The stored resultdoes not.One result, two verdictsSuspended solids · filter + residue 30.10424 g · filter 30.10074 g · volume 100 mL. The result cell shows 35.00 mg/L and stores 35.000000000025011; limit ≤ 35 mg/L; EXCEEDS · False reject. The printed result meets the limit. The stored result does not. Observation: Display ≠ decision · flagged in §6.ABC12345filter + residue30.10424 gfilter30.10074 gvolume100 mLSuspended solids35.00 mg/Llimit≤ 35 mg/LEXCEEDSObservationDisplay ≠ decision ·flagged in §6Reproduced in Microsoft Excel 16.035.000000000025011False rejectThe printed resultmeets the limit. Thestored result does not.
  • NIST StRD agreement LRE = −log₁₀( |x − c| / |c| )
  • ILAC-G8 guarded acceptance AU = TU − w, w = U (k = 2)
  • Uncertainty arithmetic uc(y) = √Σ(ci·u(xi))² (uncorrelated inputs)

NormXL checks the arithmetic of what your workbook implements. The metrology stays yours.

The same Clause 7.11, assessed by every ILAC MRA signatory

  • ISO/IEC 17025 accreditation · uncertainty guidance in UKAS M3003
  • ISO/IEC 17025 accreditation · field-specific requirements in NATA's application documents
  • ISO/IEC 17025 accreditation under the ILAC Mutual Recognition Arrangement
  • ISO/IEC 17025 accreditation under the ILAC Mutual Recognition Arrangement
  • ISO/IEC 17025 accreditation under the ILAC Mutual Recognition Arrangement
  • ISO/IEC 17025 accreditation under the ILAC Mutual Recognition Arrangement

ISO/IEC 17025:2017 is not in transition. Clause 7.11 is sampled at routine surveillance and reassessment visits.

Named only to identify the accreditation frameworks NormXL dossiers are structured for. NormXL is independent and is not affiliated with, endorsed by or approved by any of these organisations.

Note 2 covers Excel. It does not cover your workbook.

Note 2 to Clause 7.11.2 is the most quoted and least read sentence in laboratory software validation. Commercial off-the-shelf software in general use within its designed application range "can be considered to be sufficiently validated". That covers Excel as Microsoft ships it. It does not cover:

  • the calibration curve your analyst built in it;
  • the conformity statement driven by an IF() against a limits table;
  • the conditional formatting that turns an out-of-specification result red;
  • the macro that imports instrument data.

Those are laboratory configuration. The same clause requires changes, "including laboratory software configuration or modifications to commercial off-the-shelf software", to be authorised, documented and validated before implementation. Note 1 to the same clause puts spreadsheets squarely in scope: in this standard, laboratory information management systems include computerised and non-computerised systems alike.

The rest of the standard closes the loop:

  • Clause 6.4.1 counts software as equipment.
  • Clause 6.4.13 a) requires the identity of equipment, including software version, to be recorded. The most precise identity a workbook can have is its SHA-256.
  • Clause 7.11.3 requires protection against unauthorised access, tampering and loss.
  • Clause 7.5.2 requires amendments to technical records to be traceable to previous versions.
In your workbookStatus under Clause 7.11.2GAMP® 5 category (as commonly applied)
Excel as installed, used to type and store valuesCommercial software in general use: can be considered sufficiently validated (Note 2)Category 3
Formulas, LINEST/SLOPE regressions, look-ups against limit tables, conditional PASS/FAILLaboratory configuration: validate before introduction; changes authorised, documented and validatedCategory 4
VBA macros and user-defined functionsCustom codeCategory 5

Before introduction, and after every change. Clause 7.11.2 asks for validation before a system is introduced. A calibration workbook that has been in use for three years without a validation record is not a future risk; it is a nonconformity waiting to be sampled. Every later edit that changes the software restarts the requirement: a correction factor typed into a formula, an extra replicate column, a changed limit.

"Appropriate and systematic": what an assessor actually looks for

Clause 7.11.6 is one sentence: calculations and data transfers shall be checked "in an appropriate and systematic manner". A second analyst re-keying three results into a desktop calculator checks three results. It tells you nothing about:

  • the hundreds of other formula cells in the workbook;
  • the behaviour at the decision limit;
  • what the sheet does when someone types "<LOQ" into a numeric column.

For a polynomial calibration fit, or a budget with a Welch–Satterthwaite step, it is not even a meaningful spot check. When an assessor asks how your calculations are checked, they are looking for five things:

  1. Coverage: every calculation path, not the three cells that were easy to re-key.
  2. Independence: the expected result comes from somewhere other than the spreadsheet under test.
  3. The edges: results at and around the limits, and inputs that should be rejected: text, blanks, negative concentrations, values outside the calibrated range.
  4. Version identity: evidence tied to the exact workbook in use, not to "the calibration sheet".
  5. Change control: the same evidence again after any formula, range or limit changes.

That is white-box testing of the formula logic combined with black-box testing of the outputs at the operating limits, and it is exactly the structure of a NormXL Dossier. NormXL recalculates every formula with an independent engine and compares each result with the value Excel cached in the file. It generates boundary and negative vectors at every limit and binds the result to the workbook's SHA-256. It does the same again whenever the workbook changes.

The data-transfer trap nobody tests. Instrument software exports a CSV, an analyst pastes it into an "Import" sheet, and the calculation reads Import!C2:C37. Then a firmware update adds a column to the export. Every reference now points one column to the left, the workbook keeps calculating, and nothing looks wrong. NormXL cannot predict your next firmware update. It can list every formula that reads an import area by position, so you can add a structural check and show your assessor that you thought of it. Clause 7.11.2 also asks you to check the proper functioning of interfaces.

The dual-engine flowTwo engines read the same workbook: the values Excel saved, and NormXL's independent recalculation. They are compared cell by cell, then boundary, negative and precision tests run before the Dossier is sealed with SHA-256, all inside the browser.your browser · 0 KB of your workbook leaves it.xlsxEngine A · cached values,as saved by Excel<v>1.0021168180204538</v>Engine B · NormXL recalculation(Rust → WebAssembly) ·NIST StRD-benchmarkedcell by cell, underExcel's conventions ·LRE for statisticswhere agreement is not enoughboundary vectorsnegative injectionsprecision &protection auditDossier ·SHA-25649f01f7c…d66639cbCurve!B1 · =INDEX(LINEST(Import!C2:C37,Data!B2:B37),1)Excel 1.0021168180204538 · NormXL · agreement significant digitsCurve!D4 · =(C4-$B$2)/$B$1Excel 50.455517924200535 · NormXL · Δ Budget!E9 · =STDEV.S(C4:C8)/SQRT(5)*2.776Excel 0.0043892413923140843 · NormXL · Δ The dual-engine flowTwo engines read the same workbook: the values Excel saved, and NormXL's independent recalculation. They are compared cell by cell, then boundary, negative and precision tests run before the Dossier is sealed with SHA-256, all inside the browser..xlsxEngine A · cached values,as saved by Excel<v>1.0021168180204538</v>Engine B · NormXL recalculation(Rust → WebAssembly) ·NIST StRD-benchmarkedcell by cell, under Excel's conventions ·LRE for statisticsCurve!B1 ·=INDEX(LINEST(Import!C2:C37,Data!B2:B37),1)Excel 1.0021168180204538NormXL · agreement significant digitsCurve!D4 ·=(C4-$B$2)/$B$1Excel 50.455517924200535NormXL · Δ Budget!E9 ·=STDEV.S(C4:C8)/SQRT(5)*2.776Excel 0.0043892413923140843NormXL · Δ where agreement is not enoughboundary vectorsnegative injectionsprecision & protection auditDossier ·SHA-25649f01f7c…d66639cbyour browser · 0 KB of your workbook leaves it
Order Your Laboratory Spreadsheet Dossier — €149 + VAT

100% in-browser · VAT invoice in your organisation’s name · For business customers

Clause 4.2 and the AI shortcut

Clause 4.2.1 makes your laboratory responsible, through legally enforceable commitments, for the management of all information obtained or created during laboratory activities. Customer results, sample identities, proprietary methods and calibration data all fall under it.

The fastest way to "validate" a workbook in 2026 is to paste it into a public AI chat. It is also the fastest way to move customer information outside the commitments Clause 4.2 requires, onto infrastructure you do not control, under terms your customers never agreed to. Business versions of AI assistants are different: under an enterprise agreement they do not train on your data. Even then, the analysis is generated afresh each session, so it is not objective evidence of anything. And if any part of your information management runs off-site, Clause 7.11.4 makes the external provider's compliance your responsibility as well.

NormXL removes the question instead of managing it. The engine runs in your browser's sandbox; the workbook is read into that tab's memory and never transmitted.

  • 0 KB of your workbook uploaded. No AI model, no cloud storage, no sub-processor for your data
  • Deterministic: the same file always produces the same Dossier, which a validation record needs and a text generator cannot promise
  • Verifiable by your IT team: open the browser's network monitor (F12 → Network), drop a file and watch nothing leave
  • Offline: once the page has loaded you can disconnect; a single-file edition runs on air-gapped workstations

Good practice: validate the template, not a customer's workbook

The Dossier documents the values present in the file you validate. Validate your master template with representative or synthetic inputs, and no customer data will appear in your validation records either.

The air gapThe NormXL engine runs inside the browser on the user's own computer. The workbook is fingerprinted and checked locally, and a dashed boundary shows that no workbook data is sent to the cloud or to an AI service.normxl.comNormXL engine · WebAssembly sandboxOzone_Monitor_Calibration_Norris.xlsxSHA-256recalculationSHA-256 · Dossier.pdf0 KB of your workbookno admin rightsworks offline after loadClause 4.2 · Clause 7.11.4Network · 0 requests carrying workbook dataThe air gapThe NormXL engine runs inside the browser on the user's own computer. The workbook is fingerprinted and checked locally, and a dashed boundary shows that no workbook data is sent to the cloud or to an AI service.0 KB of your workbooknormxl.comNormXL engine · WebAssembly sandboxOzone_Monitor_Calibration_Norris.xlsxSHA-256recalculationSHA-256 · Dossier.pdfno admin rightsworks offline after loadClause 4.2 · Clause 7.11.4Network ·0 requests carrying workbook data

Regression arithmetic benchmarked against NIST, digit by digit

The National Institute of Standards and Technology publishes the Statistical Reference Datasets (StRD) so that software can be tested against something better than itself. For each linear-regression dataset, NIST computed the certified values with 500-digit arithmetic and publishes them to 15 significant digits. The datasets are graded by difficulty. The hardest, which are highly collinear and span orders of magnitude, have historically exposed weaknesses in spreadsheet regression routines.

Agreement is measured with the Log Relative Error, the metric of the numerical-software literature. It is roughly the number of significant digits a computed value shares with the certified value:

LRE = −log₁₀( |x − c| / |c| ) x = computed value · c = certified value (when c = 0, the absolute error is used) · capped at 15, the number of certified digits

A NIST dataset that is itself a calibration. NIST's Norris dataset comes from a calibration study of ozone monitors: 36 observations of instrument response against reference concentration. Its certified slope is 1.00211681802045 and its certified intercept −0.262323073774029.

We ran it through Microsoft Excel 16.0. Excel's LINEST agrees with NIST on every statistic to between 12 and 15 significant digits:

Statistic (Norris)Excel 16.0 LINESTLRE
Slope1.002116818020453814.4
Intercept−0.2623230737738140312.1
Residual standard deviation0.8847963961444077513.4
R²0.999993745883711715 (all certified digits)

The same intercept computed with Excel's INTERCEPT() function has an LRE of 12.8. Two functions in the same application, on the same data, disagree in the thirteenth digit.

Excel is not the weak point on a well-conditioned curve. Good results, though, are only evidence once they are measured. A different build, a different platform or a harder dataset can come out differently, and published evaluations of older Excel versions found serious problems on the higher-difficulty sets. That is why the measurement belongs in your Dossier, with the function, the value and the LRE, not the word "PASS".

DatasetModelObservationsNIST difficultyWhat it stresses
NorrisStraight line36LowerBaseline least-squares accuracy: the everyday calibration curve
PontiusQuadratic40LowerSecond-order fits, and the classic bug of reading polynomial coefficients from LINEST in reverse order
NoInt1Line through the origin11AverageCurves forced through zero (const = FALSE), where R² is defined differently
LongleySix predictors16HigherMulticollinearity and matrix-inversion robustness
Filip10th-degree polynomial82HigherExtreme ill-conditioning, of the kind high-order linearisation polynomials can approach
Wampler1–55th-degree polynomial21HigherIncreasing noise and scale in polynomial fitting
NumAcc1–4Univariate3–1,001Lower to higherMean and standard deviation of values with many leading digits

How the Dossier uses NIST StRD

  1. Engine benchmark statement. Every statistical function in NormXL's verified library that NIST StRD covers is benchmarked against it before each engine release, and the LRE table, with the engine version, is printed in every Dossier. Acceptance criterion: at least 10 correct significant digits on lower- and average-difficulty datasets; higher-difficulty results are reported as measured, never hidden.
  2. Your regression, recomputed. Wherever your workbook fits a curve, the independent engine recomputes slope, intercept, residual standard deviation and R² from your calibration data, and the Dossier reports agreement with Excel's stored results in significant digits.

Test your own Excel against NIST, free

A two-sheet workbook with the 36 certified Norris observations, LINEST, SLOPE, INTERCEPT, STEYX and RSQ, NIST's certified values, and an LRE column computed by your own Excel installation. No macros, no links, no email required. It measures your installation on one dataset; it does not validate your workbook.

Look at how the LRE column computes the difference: 1*(x−c), not a plain x=c test. Excel compares numbers to about 15 significant digits, so a plain equality test reports full agreement for a slope that actually agrees to 14.4 digits. It is the same camouflage described above, inside a check that was meant to measure it.

Download the NIST Norris check workbook (.xlsx)

We validate software and qualify spreadsheets; instruments are calibrated. You won't find "calibrate your spreadsheet" anywhere in a NormXL Dossier, and you won't find "traceable to NIST" either. Benchmarking against certified values is not metrological traceability.

The Norris scorecard The 36 NIST Norris calibration points with the certified regression line, and a bar chart showing that Excel 16.0's LINEST agrees with NIST's certified values to 14.4 significant digits for the slope, 12.1 for the intercept, 13.4 for the residual standard deviation and all 15 certified digits for R squared. A digit comparison shows where the intercepts first differ. 0020020040040060060080080010001000y = −0.262323073774029 + 1.00211681802045·x+1.80−2.4residuals−2.35+1.79Norris · Pontius (lower) → NoInt1 (average) → Longley · Filip · Wampler(higher)Correct significant digits (LRE) · Microsoft Excel 16.0 LINEST ·measured 2 Nov 2026Slope14.4Intercept12.1Residual SD13.4R²15 (all certified digits)051015Excel −0.26232307377381403NIST −0.262323073774029Your Dossier prints the same measurement for the NormXL engine build that produced it. The Norris scorecard The 36 NIST Norris calibration points with the certified regression line, and a bar chart showing that Excel 16.0's LINEST agrees with NIST's certified values to 14.4 significant digits for the slope, 12.1 for the intercept, 13.4 for the residual standard deviation and all 15 certified digits for R squared. A digit comparison shows where the intercepts first differ. 0020020040040060060080080010001000y = −0.262323073774029 +1.00211681802045·x+1.80−2.4residuals−2.35+1.79Norris · Pontius (lower) → NoInt1 (average) →Longley · Filip · Wampler (higher)Correct significant digits (LRE) · Microsoft Excel 16.0LINEST · measured 2 Nov 2026Slope14.4Intercept12.1Residual SD13.4R²15 (all certified digits)051015Excel −0.26232307377381403NIST −0.262323073774029Your Dossier prints the same measurement for theNormXL engine build that produced it.

The quality manual says which rule you use. The spreadsheet decides which rule you apply.

Clause 7.8.6.1 requires a laboratory that issues statements of conformity to document the decision rule it uses, taking into account the level of risk such as false accept and false reject, and to apply it. Where the customer asks for a statement of conformity, Clause 7.1.3 requires the rule to be clearly defined and, unless it is inherent in the specification, agreed with the customer. Clause 7.8.6.2 requires the report to identify the decision rule applied.

ILAC-G8:09/2019 sets out the options:

  • Simple acceptance (guard band w = 0): a result is accepted up to the tolerance limit. A result sitting exactly on the limit carries a specific false-accept risk of up to 50 %.
  • Guarded acceptance with w = U (expanded uncertainty, k = 2): the acceptance limit is pulled inside the tolerance limit, and the specific false-accept risk for an accepted result falls below 2.5 % (about 2.3 % for a normal distribution).
  • Non-binary statements: Pass below the acceptance limit, Conditional pass between the acceptance limit and the tolerance limit, Conditional fail between the tolerance limit and the tolerance limit plus w, and Fail beyond that.

On paper, the rule sits in your quality manual. In practice it sits in one cell, something like =IF(result<=TU-U,"CONFORMS",…). That cell is where your declared risk policy either survives contact with the arithmetic or doesn't.

Worked example: pressure-gauge calibration point

Tolerance (maximum permissible error): ±0.50 kPa
Expanded uncertainty: U = 0.12 kPa (k = 2) test uncertainty ratio = 1.00 / 0.24 = 4.2
Guarded acceptance limit (w = U): 0.50 − 0.12 = 0.38 kPa
Measured error at this point: +0.40 kPa
Simple acceptance: 0.40 ≤ 0.50 → PASS
Guarded acceptance: 0.40 > 0.38 → FAIL (binary rule) · Conditional pass (non-binary rule)

Three ways a spreadsheet betrays the rule:

  • Wrong limit. The decision cell compares the error with 0.50, not 0.38. The sheet applies simple acceptance while the manual promises guarded acceptance: a statement-of-conformity finding waiting to happen.
  • Buried uncertainty. The acceptance limit is written as =0.50-0.12. When the uncertainty budget is revised to U = 0.15 kPa, the limit should become 0.35 kPa. The formula still says 0.38.
  • Display. Error and acceptance limit, both formatted to one decimal place, show 0.4 and 0.4: a tie on screen, a FAIL in the file.

What NormXL does:

  • traces every conformity statement back to the cell that decides it;
  • lists any uncertainty or limit typed into the formula in the Constant Ledger;
  • runs boundary vectors just below the acceptance limit, at it and just above it, and again at the tolerance limit and at the tolerance limit plus w;
  • prints both operands of every decision to full precision.

In §1 of the Dossier you declare the rule (simple or guarded acceptance, binary or non-binary), and §4 and §6 show whether the spreadsheet implements it. Choosing the rule, and agreeing it with your customer where Clause 7.1.3 requires, remains yours. NormXL does not calculate your uncertainty or your guard band; it checks how your workbook uses them.

Guard bands, and the cell that decides An ILAC-G8 decision-rule diagram for a pressure-gauge calibration point. The tolerance limit is 0.50 kPa and the acceptance limit 0.38 kPa, with a guard band equal to the 0.12 kPa expanded uncertainty. A measured error of 0.40 kPa passes under simple acceptance but not under guarded acceptance, and the spreadsheet formula applies simple acceptance. PassFailPASSPass ≤ 0.38FailFAILPass ≤ 0.38Conditional pass 0.38–0.50Conditional fail 0.50–0.62Fail > 0.62Conditional passTU = 0.50AU = 0.38U = 0.12 (k = 2)+0.400.200.250.300.350.400.450.500.550.600.650.70Measured error (kPa)=IF(B12<=0.5,"PASS","FAIL")PASSFinding: implements simple acceptance; the manual declares guardedILAC-G8:09/2019 · w = U · specific false-accept risk for accepted results < 2.5 % Guard bands, and the cell that decides An ILAC-G8 decision-rule diagram for a pressure-gauge calibration point. The tolerance limit is 0.50 kPa and the acceptance limit 0.38 kPa, with a guard band equal to the 0.12 kPa expanded uncertainty. A measured error of 0.40 kPa passes under simple acceptance but not under guarded acceptance, and the spreadsheet formula applies simple acceptance. PassFailPASSPass ≤ 0.38FailFAILPass ≤ 0.38Conditional pass 0.38–0.50Conditional fail 0.50–0.62Fail > 0.62Conditional passTU = 0.50AU = 0.38U = 0.12 (k = 2)+0.400.200.300.400.500.600.70Measured error (kPa)=IF(B12<=0.5,"PASS","FAIL")PASSFinding: implements simple acceptance; themanual declares guardedILAC-G8:09/2019 · w = U · specific false-accept riskfor accepted results < 2.5 %
Decision rule

10.004 mg/L is not 10.00 mg/L, unless your decision rule says it is

A result calculated as 10.004 mg/L, formatted to two decimals, appears on screen and on the report as 10.00 mg/L, against an upper limit of 10.00 mg/L. Whether that result conforms is not a question of taste. Under the absolute method of ASTM E29, the full value is compared with the limit: 10.004 > 10.00, so it does not conform. Under the rounding method, the result is first rounded to the last significant place of the limit: 10.00 ≤ 10.00, so it conforms. Either can be legitimate. What is not legitimate is a spreadsheet that displays one, decides with the other, and documents neither. Cell formatting is not a decision rule.

Underneath the display layer there is a binary layer. Excel stores values as IEEE 754 binary64 numbers and hides the residues: it shows at most 15 significant digits, snaps a near-zero final result to zero, and compares numbers to about 15 significant digits. Try it:

=13.65-1.2-12.45 → 0
=1*(13.65-1.2-12.45) → 1.77636E-15

That camouflage holds until a subtraction cancels most of the significant digits: a reading minus a blank, a sample mass minus a tare, a limit minus a mean. Then the residue grows past Excel's tolerance and decides results that sit exactly on a limit.

Gravimetry: the 35.000000000025 mg/L result. A filter is weighed dry at 30.10074 g. After 100 mL of sample is filtered and the filter dried, it weighs 30.10424 g. The residue is 3.50 mg, so the suspended solids are exactly 35.0 mg/L, exactly on a 35 mg/L permit limit:

TSS = (A − B) × 10⁶ / V =(30.10424-30.10074)*10^6/100
Excel stores: 35.000000000025011 mg/L displays: 35.00 mg/L
=IF(C7<=35,"COMPLIANT","EXCEEDS") → EXCEEDS

Subtracting two masses close to 30 g keeps their representation error but leaves only 3.5 mg of signal. Excel cannot hide this deviation, because it survives at 15 significant digits.

The residue cuts both ways. A drift check of =IF(ABS(10.2-10.1)>=0.1,"RECALIBRATE","NO ACTION") returns NO ACTION for a difference of exactly 0.1. A check of =IF(20.3-20.2>0.1,"DRIFT","OK") returns DRIFT for the same exact difference. One residue is just below 0.1, the other just above.

The two traps do different things. Display rounding can hide a genuine out-of-specification result. Binary arithmetic mostly flips results that sit exactly on a limit. Both leave the printed record and the decision disagreeing, and both stay invisible until someone tests the boundary.

What NormXL does: it evaluates every decision cell both under Excel's conventions and in strict IEEE 754. It records the stored value to 17 significant digits and flags decisions that sit within a residue of their limit or rely on formatting instead of an explicit ROUND. For every comparison it also records the rounding function, the side it applies to and the number of places kept. Re-evaluation in exact decimal arithmetic is added where your rule requires it.

Display versus decisionWhat the report prints, what the cell stores, what the decision does: 35.00 mg/L, 35.000000000025011, EXCEEDS (limit ≤ 35 mg/L), False reject; 0.1, 0.099999999999999645, NO ACTION at ≥ 0.1, False assurance; 0.1, 0.10000000000000142, DRIFT at > 0.1, False reject. ASTM E29: absolute method: 10.004 > 10.00 → does not conform; rounding method: 10.00 ≤ 10.00 → conforms; declare one; implement it with ROUND().What the report printsWhat the cell storesWhat the decisiondoes35.00 mg/L35.00000000002501135.000000000025011EXCEEDS(limit ≤ 35 mg/L)False reject0.10.0999999999999996450.099999999999999645NO ACTIONat ≥ 0.1False assurance0.10.100000000000001420.10000000000000142DRIFTat > 0.1False rejectASTM E29absolute method:10.004 > 10.00→ does not conformrounding method:10.00 ≤ 10.00→ conformsdeclare one; implement itwith ROUND()Reproduced in Microsoft Excel 16.0Display versus decisionWhat the report prints, what the cell stores, what the decision does: 35.00 mg/L, 35.000000000025011, EXCEEDS (limit ≤ 35 mg/L), False reject; 0.1, 0.099999999999999645, NO ACTION at ≥ 0.1, False assurance; 0.1, 0.10000000000000142, DRIFT at > 0.1, False reject. ASTM E29: absolute method: 10.004 > 10.00 → does not conform; rounding method: 10.00 ≤ 10.00 → conforms; declare one; implement it with ROUND().What the report prints35.00 mg/L35.000000000025011What the cell stores35.000000000025011What the decision doesEXCEEDS(limit ≤ 35 mg/L)False rejectWhat the report prints0.10.099999999999999645What the cell stores0.099999999999999645What the decision doesNO ACTIONat ≥ 0.1False assuranceWhat the report prints0.10.10000000000000142What the cell stores0.10000000000000142What the decision doesDRIFTat > 0.1False rejectASTM E29absolute method:10.004 > 10.00 → does not conformrounding method:10.00 ≤ 10.00 → conformsdeclare one; implement it with ROUND()Reproduced in Microsoft Excel 16.0

<LOQ, OVR, N/A and blank: the silent denominator

Laboratory data is full of values that are not numbers. Results below the limit of quantification are recorded as <0.05; over-range readings come back as OVR; instrument exports deliver numbers as text; an analyst leaves a replicate blank. Excel's response is consistent, quiet and dangerous:

  • Statistical functions skip text. AVERAGE, STDEV.S, MIN and MAX over a range ignore text cells. Ten replicates with one OVR give the mean of nine values, and because the dropped value was the highest, the mean falls. A censored <0.05 dropped from the same range pushes the mean up instead. AVERAGEA counts text as zero, which is a different error.
  • Error values propagate; text does not. A genuine #N/A error makes AVERAGE return #N/A. The text "N/A" is silently skipped.
  • Comparisons rank text above numbers. A number stored as text, such as "4,5" typed with a decimal comma, fails every <= test and passes every >= test, whatever its value.
  • Blanks are zero. A result cell left empty passes every "not more than" limit: =IF(B5<=10,"PASS","FAIL") returns PASS.
  • Negative concentrations after blank subtraction are reported as negative, or clipped silently to zero by MAX(0,…) under a convention nobody documented. A sample mass of zero gives #DIV/0!, or a plausible zero if wrapped in IFERROR(). An unspiked result larger than the spiked one gives a negative recovery.
  • Data-validation rules set to Warning or Information rather than Stop can be clicked past by anyone, and a paste bypasses them entirely.

What NormXL does:

  • audits every input's data-validation rule and error style;
  • generates the vectors laboratories actually meet: <LOQ strings, OVR, N/A, blanks, zero, negative values, values outside the calibrated range;
  • logs the expected and actual result for each in §5, so "we never tested that" stops being the answer.
The silent denominatorTen replicate results where one is recorded as the text OVR. Excel's AVERAGE silently divides by nine and returns 0.1333, AVERAGEA counts the text as zero and returns 0.12, and the true mean including an over-range value would be at least 0.170.C123456789100.120.150.11OVR0.140.130.120.160.120.1510 results÷ 10÷ 9COUNT(C1:C10) = 9COUNTA(C1:C10) = 10=AVERAGE(C1:C10)→ 0.1333=AVERAGEA(C1:C10)→ 0.1200(text counted as 0)If the over-range value is ≥ 0.50, the mean of all ten results is ≥ 0.170Reproduced in Microsoft Excel 16.0The silent denominatorTen replicate results where one is recorded as the text OVR. Excel's AVERAGE silently divides by nine and returns 0.1333, AVERAGEA counts the text as zero and returns 0.12, and the true mean including an over-range value would be at least 0.170.C123456789100.120.150.11OVR0.140.130.120.160.120.1510 results÷ 10÷ 9COUNT(C1:C10) = 9COUNTA(C1:C10) = 10=AVERAGE(C1:C10)→ 0.1333=AVERAGEA(C1:C10)→ 0.1200(text counted as 0)If the over-range value is ≥ 0.50, the mean ofall ten results is ≥ 0.170Reproduced in Microsoft Excel 16.0

Constants, locks and provenance

Buried constants: the calibration that never reached the results. A result formula such as =(C8-0.0123)/0.9871 carries the intercept and slope of a calibration run from months ago, typed into fifty result formulas. The instrument has been recalibrated since, and the "Cal" sheet shows the new LINEST output, but the results still use the old coefficients. That breaks the requirement to update and implement reference values and correction factors (Clause 6.4.11) and the metrological traceability of the results (Clause 6.5). Nothing on screen shows it. Statistics hide constants too:

  • =STDEV.S(C4:C8)/SQRT(5)*2.776 has the replicate count and the Student t-factor for four degrees of freedom typed in. Run six replicates and the sheet still divides by √5 and multiplies by 2.776 instead of 2.571.
  • 1.732 typed for √3 in a rectangular-distribution divisor: small, undocumented, unnecessary.
  • A coverage factor typed as 2 in a budget whose effective degrees of freedom are 10. For the same 95.45 % coverage, the t-distribution needs k = 2.28, so the expanded uncertainty is understated by about 12 %.
  • 1.645 in a limit-of-detection formula, with no reference to its statistical basis.

What NormXL does: it extracts every numeric literal from every formula into the Constant Ledger, which records the cell, the formula, the value and every occurrence, with an empty "source / justification" column for your reviewer to complete.

Locks that aren't locked. Calibration coefficients, blank corrections, dilution factors and the cells that hold them: if they are not protected, one paste in the wrong place rewrites every result downstream. A single unlocked cell in a calibration-curve block lets a result be overwritten by a number that looks exactly like a calculation. Clause 7.11.3 asks you to safeguard data against tampering, and accidental tampering counts. NormXL maps the locked and hidden status of every formula cell and the protection of every sheet and of the workbook structure. It flags formula ranges where one cell has become a typed value. The Dossier also states plainly that sheet protection guards against accidents, and that the SHA-256 seal is what detects deliberate change.

Provenance: "Calibration_v3_FINAL_new.xlsx" identifies nothing. Clause 6.4.13 a) expects equipment records to identify software versions, and Clause 7.5.2 expects amendments to technical records to be traceable. NormXL prints the workbook's SHA-256 fingerprint in every Dossier page header. A changed file gets a new fingerprint, a new Dossier and an entry in the version log. On the Annual Register, a logic fingerprint over formulas, constants, names and protection also distinguishes "re-saved with April's data" from "changed".

From ICP-OES curves to Charpy averages

Environmental & water testing

Blank correction, reporting limits and parametric values

Blank-corrected results, recoveries from spiked samples, sums of congeners with members below the limit of reporting (lower-, medium- or upper-bound conventions), and conformity with parametric values such as the 50 mg/L nitrate value of the EU Drinking Water Directive (EU) 2020/2184. Every one of them ends in a comparison at a limit, which is exactly where display rounding and binary residue operate.

Typical traps NormXL tests: "<LOQ" text in averaging ranges · negative blank-corrected values · results exactly on the reporting limit · rounding method vs absolute method

Calibration laboratories

Uncertainty budgets and conformity with maximum permissible error

Budgets built to the GUM (JCGM 100), EA-4/02 or UKAS M3003: Type A and Type B contributors, sensitivity coefficients, root-sum-of-squares combination, Welch–Satterthwaite effective degrees of freedom and coverage factors, followed by a conformity decision against the maximum permissible error. Add reference-standard drift corrections, air-buoyancy correction in mass metrology and thermal-expansion correction for gauge blocks. Long chains of formulas, each one a place for a buried constant.

Typical traps NormXL tests: k = 2 hard-coded where effective degrees of freedom demand more · t-factors typed for a fixed n · guard bands typed as numbers · expanded and standard uncertainties mixed in one sum · contributors in different units

Chemical analysis

Calibration curves, detection limits and method-validation statistics

ICP-OES, ICP-MS and HPLC curves; weighted regression (1/x, 1/x²) implemented by hand in helper columns; LoD = 3.3·σ/S and LoQ = 10·σ/S; recoveries, %RSD and control-chart limits at x̄ ± 2s and x̄ ± 3s.

Typical traps NormXL tests: a curve range that still ends at row 8 after a sixth standard was added in row 9 · intercept forced through zero (LINEST(…,FALSE)) while the method validation used a free intercept · regression output pasted as static values from the Analysis ToolPak · results extrapolated beyond the highest standard without a flag · STDEV.S vs STDEV.P choices undocumented

Materials testing

Tensile, hardness and impact evaluations

Proof strength Rp0.2 and tensile strength Rm to ISO 6892-1, hardness conversions from ISO 18265 tables, Charpy averages and individual minima to ISO 148-1, and proficiency-testing z-scores and En numbers. Interpolation and look-ups dominate, and look-ups have edges.

Typical traps NormXL tests: VLOOKUP(…,TRUE) silently returning the last row beyond a conversion table, and never interpolating between rows · values exactly on a table boundary · units mixed between N/mm² and MPa

NormXL verifies the arithmetic of your budget sheet: every sensitivity coefficient, every divisor (√3 rectangular, √6 triangular, 2 for a k = 2 certificate value), every root-sum-square, the Welch–Satterthwaite effective degrees of freedom and the coverage factor applied. It does not decide which contributors belong in the budget, or whether your method is fit for purpose. That is metrology, and it stays with your metrologist.

Run a calibration workbook past an assessor's eyes, locally

Drop the workbook behind your calibration curves, uncertainty budgets or conformity statements, or try our sample: an ozone-monitor calibration built on NIST's Norris dataset. The scan runs inside this tab. For your own file, the browser computes its SHA-256 fingerprint and a quick count of formulas, locks and constants locally, and nothing is sent anywhere.

Drop your .xlsx or .xlsm template here

Customer data in the file? It stays in this browser tab. Your workbook is not uploaded, logged or stored.

  • Reading the Office Open XML package locally…
  • Computing SHA-256 of the exact bytes…
  • Rebuilding 19 formulas from their syntax trees…
  • Testing decision cells at their limits…
  • Auditing locks, protection and constants…

Ozone_Monitor_Calibration_Norris.xlsx SAMPLE WORKBOOK SHA-256 49f01f7c…d66639cb

19 formula cells · 9 unique formulas · 7 worksheets · LINEST (slope and intercept) → covered by the engine's NIST StRD benchmark statement

Calculation mode: automatic ✓ · Precision as displayed: off ✓ · Iterative calculation: off ✓ · VBA: none ✓

3 assessor red flags · 3 more findings

  1. Check!F9 IEEE 754 precision drift

    Check!F9 =IF(ABS(B9-C9)>=0.1,"RECALIBRATE","OK"). A span-check reading of 10.2 against a reference of 10.1 is exactly 0.1 apart on paper, yet Excel returns OK, because the difference is stored just below 0.1.

  2. Curve!D4:D14 Unlocked formula cells

    11 formula cells in Curve!D4:D14 are unlocked and the sheet is unprotected, so the calibration curve can be overwritten without trace.

  3. Budget!E9 Buried hard-coded constants

    Budget!E9 =STDEV.S(C4:C8)/SQRT(5)*2.776 hard-codes five replicates and the t-factor for four degrees of freedom. Add a sixth replicate and the expanded uncertainty is silently wrong.

Also found

Report!G12 decides conformity on the unrounded result while the report prints one decimal place: a result of 10.04 prints as 10.0 against a 10.0 limit and is declared non-conforming, so your documented rule is not visible in the formula · Import!C2:C37 is read by position (an export layout change would shift the data silently) · six "<0.05" results in Results!C2:C40 are skipped by AVERAGE(), which averages 33 of 39 results.

Ran in this tab · 0 requests carrying workbook data · 0 KB of your workbook uploaded

This scan ran in your browser. Your workbook was not uploaded, logged or stored.

Generate the full Dossier — €149 + VAT

From workbook to Dossier in about three minutes

  1. Drop the workbook. It is read locally, and its SHA-256 fingerprint is computed before parsing.
  2. NormXL inventories and recalculates. Every formula is rebuilt from its syntax tree, recomputed by the independent engine and compared with Excel's cached results: arithmetic cell by cell, regression statistics as LRE.
  3. It attacks the boundaries. Vectors go to every acceptance limit and guard band, with "<LOQ", blanks, zeros and negatives in every input.
  4. It audits the structure. Locks, protection, display versus decision precision, constants, volatile functions, external links and import areas.
  5. You state the intended use. One sentence, confirmation of the detected acceptance criteria and decision rule, and the reviewer and approver names.
  6. You download, review and sign. PDF for the record and DOCX for your document control, 20+ pages, with the ISO/IEC 17025:2017 profile.

About three minutes to the download, including your answers. Review and approval follow your own procedure, typically 30 to 60 minutes for a calculation workbook.

The three-minute timelineA true-scale timeline of about three minutes from dropping the workbook to downloading the Dossier. The engine works for the first ninety seconds, the user then answers the intended-use questions, and review and signature follow under the user's own procedure.ISO/IEC 17025:20170:00Drop · SHA-2560:05Parse & recalculate · 19 formula cells0:40Boundary & negative vectors1:10Structure audit1:30Intended use · your answers≈3:00Dossier ready · PDF + DOCXNormXL engine 0:00–1:30your answers and the download 1:30–≈3:00Then: review and sign under your procedure (typically 30–60 min)The three-minute timelineA true-scale timeline of about three minutes from dropping the workbook to downloading the Dossier. The engine works for the first ninety seconds, the user then answers the intended-use questions, and review and signature follow under the user's own procedure.ISO/IEC 17025:20170:00Drop · SHA-2560:05Parse & recalculate ·19 formula cells0:40Boundary & negative vectors1:10Structure audit1:30Intended use · your answers≈3:00Dossier ready · PDF + DOCXNormXL engine 0:00–1:30your answers and the download 1:30–≈3:00Then: review and sign under your procedure(typically 30–60 min)
Order Your Laboratory Spreadsheet Dossier — €149 + VAT

100% in-browser · VAT invoice in your organisation’s name · For business customers

Every Clause 7.11 question, answered by executed evidence

ISO/IEC 17025:2017What the assessor needs to seeWhere the Dossier shows it
7.11.2Validated before introduction; configuration changes authorised, documented and validated§1 User requirements & scope · §4 OQ dual-engine matrix · §5 negative & boundary log · §7 change control
7.11.3Protected from unauthorised access; safeguarded against tampering and loss§6 lock and protection audit · SHA-256 seal
7.11.6Calculations and data transfers checked systematically§4 recalculation of every formula cell · §3 inventory of import areas and external links
7.8.6.1 · 7.1.3 · 7.8.6.2Decision rule documented, agreed where required, applied and reported§1 declared decision rule · §6 decision-cell audit at every limit
7.6Uncertainty arithmetic computed correctly (the metrology stays yours)§4 recalculation of the budget · engine benchmark statement
6.4.13 a)Software identity and version recordedCover and §3: SHA-256, file metadata, the application and version that last saved the file
6.4.11 · 6.5Correction factors updated and implemented; traceability not broken by stale literals§3 Constant Ledger with a source column
7.5Technical records sufficient to repeat the activity; amendments traceableFull-precision values · §7 version log
4.2 · 7.11.4Confidentiality; no unqualified external providerLocal-processing statement: 0 KB of the workbook transmitted

ALCOA+, the data-integrity vocabulary from the GxP world, maps neatly onto Clauses 7.11 and 7.5:

ALCOA+ attributeHow the Dossier evidences it
AttributableReviewer and approver block; workbook identity and the application that last saved it
LegibleEvery formula printed as written; values to 15 and 17 significant digits
ContemporaneousUTC generation time beside the SHA-256
OriginalSHA-256 of the exact bytes validated
AccurateDual-engine agreement per cell; LRE for statistical functions
CompleteEvery calculated cell covered, with exceptions named
ConsistentDeterministic engine: the same file always produces the same Dossier
Enduring · AvailablePDF and DOCX stored in your own document control, verifiable without NormXL (Get-FileHash, certutil, shasum)

NormXL produces evidence; your laboratory approves it. The decision on any finding is always the assessor's. The Dossier is built to make that decision quick.

The sample Dossier uses the ISO/IEC 17020 profile; the ISO/IEC 17025 profile has the same structure, with the mapping above.

The 24-page Dossier, explodedThe eleven parts of the 24-page sample Dossier, from cover to assessor quick-verify card, with four pages enlarged: the constant ledger listing four unsourced values, a recalculated cell, two failed boundary tests and a lock map showing an unprotected calculation sheet. The cover status reads Not released.p1Cover & sealp2–3Executive summaryp4–5§1 URS & scopep6–7§2 Risk & traceabilityp8–11§3 IQ & formula inventoryp12–17§4 OQ dual-engine matrixp18–19§5 Negative & boundarylogp20–21§6 Precision & tamperauditp22§7 Release & versioncontrolp23App. A ISO/IEC 17025Clause 7.11cross-referencep24App. B Quick-Verify cardNot released: 3 red flags, 2 more findingsSHA-256 28a815ee…8ac260d1 · ISO/IEC 17020:2026 profileSHA-256 28a815ee…8ac260d1p8–11§3 IQ & formula inventory0.4 · Calc!G14 · source: ____1.5 · Calc!H22 · source: ____0.875 · Calc!H23 · source: ____0.1 · Calc!F30:F41 (12×) · source: ____SHA-256 28a815ee…8ac260d1p12–17§4 OQ dual-engine matrixCalc!G14 · =Inputs!C5*Inputs!C6/(2*(Inputs!C7*Inputs!C9*Inputs!C8+Inputs!C5*0.4)) · Excel 3.0053571428571431 ·NormXL 3.0053571428571431 · Δ 0SHA-256 28a815ee…8ac260d1p18–19§5 Negative & boundary logCML-04 · expected ACTION · actual NO ACTIONTest failedCML-07 "N/A" · expected REJECT · actual ACCEPTTest failedSHA-256 28a815ee…8ac260d1p20–21§6 Precision & tamper auditCalc: not protectedInputs!C9 · no data validationSample in the ISO/IEC 17020:2026 profile. Your chosen profile changes Appendix A and the clause references; the structure is identical.The 24-page Dossier, explodedThe eleven parts of the 24-page sample Dossier, from cover to assessor quick-verify card, with four pages enlarged: the constant ledger listing four unsourced values, a recalculated cell, two failed boundary tests and a lock map showing an unprotected calculation sheet. The cover status reads Not released.Not released: 3 red flags, 2 more findingsSHA-256 28a815ee…8ac260d1 ·ISO/IEC 17020:2026 profilep1Cover & sealp2–3Executivesummaryp4–5§1 URS & scopep6–7§2 Risk &traceabilityp8–11§3 IQ & formulainventoryp12–17§4 OQdual-enginematrixp18–19§5 Negative &boundary logp20–21§6 Precision &tamper auditp22§7 Release &version controlp23App. A ISO/IEC17025 Clause 7.11cross-referencep24App. BQuick-VerifycardSHA-256 28a815ee…8ac260d1p8–11§3 IQ & formula inventory0.4 · Calc!G14 · source: ____1.5 · Calc!H22 · source: ____0.875 · Calc!H23 · source: ____0.1 · Calc!F30:F41 (12×) ·source: ____SHA-256 28a815ee…8ac260d1p12–17§4 OQ dual-engine matrixCalc!G14 ·=Inputs!C5*Inputs!C6/(2*(Inputs!C7*Inputs!C9*Inputs!C8+Inputs!C5*0.4))Excel 3.0053571428571431 ·NormXL 3.0053571428571431 · Δ 0SHA-256 28a815ee…8ac260d1p18–19§5 Negative & boundary logCML-04 · expected ACTION ·actual NO ACTIONTest failedCML-07 "N/A" · expected REJECT ·actual ACCEPTTest failedSHA-256 28a815ee…8ac260d1p20–21§6 Precision & tamper auditCalc: not protectedInputs!C9 · no data validationSample in the ISO/IEC 17020:2026 profile. Yourchosen profile changes Appendix A and the clausereferences; the structure is identical.
Order Your Laboratory Spreadsheet Dossier — €149 + VAT

100% in-browser · VAT invoice in your organisation’s name · For business customers

Less than one consultant hour per spreadsheet

A validation consultant at €1,300 a day costs about €162 an hour. An external validation of one laboratory workbook typically costs €2,000–€5,000 and takes four to eight weeks, including procurement. Done in-house from a blank template, it takes 30 to 40 hours of a specialist's time. NormXL costs €149 + VAT per spreadsheet, and a laboratory with a library of calibration, uncertainty and result workbooks can qualify up to 20 of them on the Annual Quality Register for €490 + VAT a year.

External consultantIn-house, from a blank templateNormXL
Cost per workbook€2,000–€5,000€1,800–€2,400 (30–40 h at €60 loaded)€149 + VAT
Time to evidence4–8 weeks1–3 weeks of interrupted bench timeAbout 3 minutes, plus your review
Customer data leaves the laboratoryYes, under NDA (Clause 4.2)NoNo: 0 KB of your workbook uploaded
Regression benchmarked against NIST StRDRarelyRarelyYes, LRE printed
Decision cells tested at their limitsDepends on the consultantUsually notEvery decision cell

One workbook before Thursday's assessment, or the whole laboratory's inventory

Single Dossier

€149 + VAT

one-time · per spreadsheet

The calibration or result sheet your assessor sampled last time, or will sample next.

  • 1 laboratory spreadsheet (.xlsx or .xlsm)
  • Full Validation Dossier, 20+ pages, ISO/IEC 17025:2017 Clause 7.11 profile: PDF for the record, DOCX for your document control
  • Dual-engine recalculation; regression agreement reported as LRE; NIST StRD engine benchmark statement
  • Decision-rule audit at every acceptance and tolerance limit
  • Display-precision, lock and Constant Ledger audit
  • Negative and boundary stress tests ("<LOQ", blanks, zeros, negatives)
  • SHA-256 seal record for the exact file you validated
  • Generated and downloaded locally. Nothing stored on our servers
Validate 1 Spreadsheet · €149 + VAT
4 Single Dossiers = €596 + VAT

Annual Quality Register

€490 + VAT

per year · up to 20 spreadsheets

Four Single Dossiers cost €596 + VAT. The Register covers up to 20 for €490 + VAT.

Laboratories with a portfolio of calibration, uncertainty and result templates.

  • Up to 20 spreadsheets in one version-controlled register
  • A full Validation Dossier for every spreadsheet
  • Re-validation after every change, with no per-change fee
  • Version change-log diffing: exactly which formulas, constants, locks or validation rules changed
  • Audit-day integrity check: every seal re-verified in one report before the visit
  • All three compliance profiles; mix ISO/IEC 17025 and ISO/IEC 17020 workbooks in one register
Start Annual Register · €490/year + VAT

For business customers. All prices exclude VAT, GST and other local taxes, where applicable; they are added to your invoice.

Prices are in euro; your card issuer converts the amount.

FAQ

Because the note covers the application, not what you build with it. Excel used within its designed range is commercial off-the-shelf software. Your formulas, regression set-up, look-up tables, conditional logic and macros are laboratory configuration, and the same clause requires configuration changes to be authorised, documented and validated before implementation. Excel cannot tell you that your calibration range ends in the right row, that your conformity cell applies your documented decision rule, or that nobody has overtyped your slope.

That is what it is designed to evidence. Every formula cell is recalculated by an independent engine, and every regression is compared using an engine benchmarked against NIST StRD. Every decision cell is tested at its limits, and negative inputs are executed. Expected and actual results are recorded and tied to the workbook's SHA-256, identically every time you run it, which is what makes it systematic rather than heroic. Assessors judge adequacy in context, so no tool can promise their conclusion. What the Dossier gives them is a systematic, reproducible record they can check.

Not as a separate validation project, because its output can be checked line by line. A tool needs blind trust only when its output cannot be verified. Each test vector in the Dossier prints:

  • the inputs;
  • the formula as written;
  • Excel's own cached value;
  • NormXL's value;
  • the difference.

Any reviewer can verify a vector with a calculator. Behind the vectors sit two independent implementations agreeing on every cell, and an engine benchmarked against NIST StRD certified values. In your procedure, record NormXL as a supporting tool whose output is verified by review and spot calculation. This is the same principle that safety-critical software standards apply to tools whose output is independently verified (DO-178C, ISO 26262-8).

Often, yes, but "often" is not evidence. In our own test of Microsoft Excel 16.0 on NIST's Norris dataset, LINEST matched the certified slope to 14 significant digits, the intercept to 12 and R² to all 15. The higher-difficulty StRD sets, such as the ill-conditioned Filip polynomial, have historically exposed weaknesses in spreadsheet regression, and results can differ between versions and platforms. Measure rather than assume. The free Norris check workbook on this page does that for your own installation in seconds.

Yes, in two ways:

  • Our engine. The Dossier prints the certified values, the engine's values and the LRE for every statistical function your workbook uses that NIST StRD covers, so a reviewer can compare them with NIST's published values.
  • Your installation. The free Norris check workbook runs the certified data through your own Excel, and its LRE column shows how many digits your installation agrees to. Neither check depends on us.

No. NormXL validates the spreadsheet that calculates your uncertainty and applies your decision rule: combination formulas, divisors, coverage factors, units and boundaries, with every constant listed. Which contributors belong in the budget, how they are estimated, and which decision rule you agree with your customer remain your laboratory's judgement under Clauses 7.6, 7.8.6 and 7.1.3. The Dossier makes your metrologist's review faster by laying every term out on paper.

Not if the spreadsheet is built properly. When the coefficients come from a referenced calibration sheet or from labelled, locked input cells, a new calibration is new data flowing through validated software, and your procedure controls it like any other data. Re-validation is triggered when the software changes: formulas, constants typed into formulas, protection or layout. If your coefficients are typed into the result formulas, every recalibration is a software change. The Constant Ledger shows you where that is happening.

Only if you validate a completed customer workbook. Nothing leaves your browser either way, but the Dossier documents the values present in the file you validate. Good practice is to validate your master template with representative or synthetic inputs. Your validation records then contain no customer information at all.

Accreditation bodies do not pre-approve validation tools or documents. They assess whether your laboratory has validated its software adequately for its intended use and can demonstrate it. The Dossier is built around that demonstration:

  • intended use and risk;
  • executed tests and boundary behaviour;
  • protection and traceability of constants;
  • version identity.

Every claim in it can be checked during the assessment, and it can be verified without NormXL. Signed by your Quality Manager, it is your laboratory's record. The decision is always your assessor's.

Yes, provided the workbook's role is to calculate and the result is then reported or returned to a controlled system. The import path is part of what Clause 7.11.6 asks you to check. NormXL inventories every formula that reads the import area and flags position-based references that would shift silently if the export layout changed. The LIMS itself and its export interface are validated within your LIMS project.

For calculation templates whose results are printed or exported to a signed record, NormXL covers the validation. Some spreadsheets are themselves the permanent primary record: data accumulated in one shared file over months, needing per-change authentication, reasons for change and an append-only audit trail. That calls for a LIMS, an electronic QMS or a validated database layer. NormXL deliberately does not pretend a spreadsheet can be that, and the fit check on our home page says so before you buy.

Both write static values into cells rather than live formulas. NormXL identifies them as numbers without a calculation behind them, lists them in the Constant Ledger and marks the dependent results as "not independently recalculated". The usual remedy is to replace ToolPak regression output with LINEST, or to document the Solver run as a controlled input. Either way, your assessor sees that you know where every number came from.

VBA is analysed statically and never executed. The Dossier lists every module and flags the calls that matter for validation:

  • Shell and file-system access;
  • silent On Error Resume Next;
  • Application.Calculation = xlCalculationManual.

Macros that only format or export are documented as such. Numerical algorithms written in VBA loops are isolated for documented code review by your team.

For exploring a formula, yes. They are useful assistants. Business versions of ChatGPT and Microsoft 365 Copilot keep your data out of model training, so confidentiality is not the main issue there. Evidence is:

  • An assistant can write Python to read your .xlsx and its formulas, but it does not evaluate them the way Excel does.
  • Its analysis is generated afresh each session, so the same question can produce different code and different conclusions.

NormXL runs one deterministic engine. The same file always produces the same Dossier, with every test vector, lock state and decision boundary written down and sealed with SHA-256.

It supports method validation without replacing it. NormXL qualifies the calculation tool used in method validation (LoD, LoQ, recovery, precision statistics), so that the numbers in your validation report are computed correctly. Whether the method is fit for its intended use is a scientific judgement the Dossier does not make.

Your assessor will ask how your calculations were checked. Have the answer in writing.

The calibration curve every analyst uses. The uncertainty budget nobody has opened since the last reassessment. The sheet that turns a number into "conforms". About three minutes, inside your browser, 0 KB of your workbook uploaded.

Order Your Laboratory Spreadsheet Dossier — €149 + VAT

No installation · No admin rights · 0 KB of your workbook uploaded · NIST StRD-benchmarked engine

Download Sample 24-Page Dossier (PDF)
Order Dossier · €149 + VAT
Pre-release · NormXL 7.0

Complete Your Order

Spreadsheet Validation Dossier · generated in your browser · 0 KB of your workbook uploaded

For business customers

Package Choice
4 Single Dossiers = €596 + VAT

As it should appear on your invoice.

Printed on the cover of your Dossier and on your VAT invoice.

Your order confirmation and release notification are sent here.

Sets the clause references and terminology in your Dossier, at no extra cost. The Annual Register includes all three profiles; choose the one you will use first.

100% In-Browser. No card charged during pre-release qualification.

Your spreadsheet is not part of this form. It is only ever read inside your browser.

Questions before you order? Read the FAQ or the Security & 0 KB Upload page. Both open in a new tab, and this form keeps what you have entered.