Clean messy data in the active sheet or a specified range.
Excel.run(async (context) => {...})). Read via
range.values, write helper-column formulas via
range.formulas = [["=TRIM(A2)"]]. The in-place vs
helper-column decision still applies.A1:F200), use it| Issue | What to look for |
|---|---|
| Whitespace | leading/trailing spaces, double spaces |
| Casing | inconsistent casing in categorical columns (usa /
USA / Usa) |
| Number-as-text | numeric values stored as text; stray $, ,,
% in number cells |
| Dates | mixed formats in the same column (3/8/26,
2026-03-08, March 8 2026) |
| Duplicates | exact-duplicate rows and near-duplicates (case/whitespace differences) |
| Blanks | empty cells in otherwise-populated columns |
| Mixed types | a column that's 98% numbers but has 3 text entries |
| Encoding | mojibake (é, ’), non-printing
characters |
| Errors | #REF!, #N/A, #VALUE!,
#DIV/0! |
Show a summary table before changing anything:
| Column | Issue | Count | Proposed Fix |
|---|
=TRIM(A2), =VALUE(SUBSTITUTE(B2,"$","")),
=UPPER(C2), =DATEVALUE(D2)), write the formula
in an adjacent helper column rather than computing the result in Python
and overwriting the original. This keeps the transformation transparent
and auditable.