fx Capstone

Capstone: clean a 2,000-row messy sales export + build a summary block

⏱ 30 min

What you'll learn

  • Normalize text, dates and numeric fields while preserving the raw export.
  • Deduplicate by a valid business key and document unresolved quantities.
  • Build and reconcile regional/monthly summaries, including returns and zero-price orders.

Concept

Download the workbook below. This guided challenge combines references, text cleanup, dates, Tables and conditional aggregation. All data is synthetic. The formulas work without XLOOKUP or dynamic arrays. Allow 30 minutes; save a working copy before starting.

1. Inspect and agree the rules · 3 minutes

Your manager needs net sales by region and month for January–March 2026. The export has one line per order, so Order ID is the unique key for this exercise. Real multi-line orders would need an order-plus-line key.

Open Read Me, then Raw Export. There are 2,000 data rows, excluding the header. Clean Work contains a copy plus empty helper columns H:Q. Keep Raw Export unchanged as the audit trail.

Problem Decision
Repeated import of the same order Normalize the ID, then keep one row per ID; the duplicates here have identical transaction data.
Mixed case, spaces, non-breaking spaces Standardize text before comparing or grouping.
Dates stored as YYYY-MM-DD text Build dates from year, month and day; keep existing numeric Excel dates.
Quantity or price stored as text Convert to numbers after stripping known formatting.
Missing quantity Retain the order with Status = Review; exclude it from sales KPIs. Do not invent a quantity.
Negative quantity A genuine return: keep it and subtract its amount from net sales.
Zero unit price A valid promotional order: keep the order and its zero revenue.

Filter a few examples before editing. If duplicate IDs had conflicting values, stop and investigate instead of arbitrarily keeping the first row. In this supplied file, unit prices are present and dates are valid; the Status formula below is tailored to its missing-quantity problem.

2. Normalize with helper columns · 9 minutes

In Clean Work, enter these formulas in row 2. Fill H2:Q2 down through row 2001 using the fill handle, or select H2:Q2001 and press Ctrl+D after entering the first row.

Column Header Formula in row 2
H Clean ID =UPPER(TRIM(CLEAN(SUBSTITUTE(A2,CHAR(160)," "))))
I Clean Date =IF(ISNUMBER(B2),B2,DATE(VALUE(LEFT(B2,4)),VALUE(MID(B2,6,2)),VALUE(RIGHT(B2,2))))
J Clean Region =PROPER(TRIM(CLEAN(SUBSTITUTE(C2,CHAR(160)," "))))
K Clean Code =UPPER(TRIM(CLEAN(SUBSTITUTE(D2,CHAR(160)," "))))
L Clean Qty =IF(TRIM(E2&"")="","",VALUE(TRIM(E2&"")))
M Clean Price =VALUE(SUBSTITUTE(SUBSTITUTE(SUBSTITUTE(F2&"","₹",""),",","")," ",""))
N Clean Rep =PROPER(TRIM(CLEAN(SUBSTITUTE(G2,CHAR(160)," "))))
O Status =IF(L2="","Review","Ready")
P Duplicate =IF(COUNTIF($H$2:H2,H2)>1,"Duplicate","Keep")
Q Net Sales =IF(O2="Ready",L2*M2,"")

TRIM handles ordinary spaces; replacing CHAR(160) first also handles the non-breaking spaces planted in this file. CLEAN removes common nonprinting characters. The date formula avoids interpreting ISO text according to a regional date setting. The number conversion assumes this export's comma thousands separator and whole-number prices.

Format I as yyyy-mm-dd, L as a number, and M/Q as currency or numbers with two decimals. Formatting alone does not convert text into numbers. Check ISNUMBER(I2) and a nonblank L/M cell; they should return TRUE. The negative quantities must remain negative.

3. Freeze values, deduplicate and create a Table · 5 minutes

  1. Before removing anything, filter P for Duplicate: it should identify 100 repeated rows. Clear that filter.
  2. Copy H2:Q2001, then Paste Special → Values onto the same range. This freezes the results before rows move.
  3. Select A1:Q2001. Data → Remove Duplicates → confirm headers → select only Clean ID. Remove 100 duplicate rows, leaving 1,900 orders. Select the whole record range, not just the ID cells.
  4. Select A1:Q1901, press Ctrl+T, confirm headers, and name the Table Sales in Table Design. This precise range excludes the now-empty trailing rows.
  5. Filter Status = Review. There should be 20 retained orders. Keep them visible in your audit; do not fill missing quantities with zero or an average. Clear the filter when finished.

There are 1,880 Ready orders. Blank quantities can occur in more than one raw row because a missing-value row can also be duplicated: count review items after deduplication. Do not add issue counts together to infer rows removed.

4. Build the summary block · 8 minutes

The Summary sheet provides labels. Enter these formulas:

Cell Metric Formula
B2 Raw rows =COUNTA('Raw Export'!A2:A2001)
B3 Unique orders =COUNTA(Sales[Clean ID])
B4 Duplicates removed =B2-B3
B5 Review orders =COUNTIF(Sales[Status],"Review")
B6 Ready orders =COUNTIF(Sales[Status],"Ready")
B7 Net units =SUMIFS(Sales[Clean Qty],Sales[Status],"Ready")
B8 Net revenue =SUMIFS(Sales[Net Sales],Sales[Status],"Ready")
B9 Average Ready order =IFERROR(B8/B6,0)
B10 Return orders =COUNTIFS(Sales[Status],"Ready",Sales[Clean Qty],"<0")
B11 Zero-price orders =COUNTIFS(Sales[Status],"Ready",Sales[Clean Price],0)

Regions are in E2:E5. In F2 enter =COUNTIFS(Sales[Clean Region],E2,Sales[Status],"Ready"). In G2 enter =SUMIFS(Sales[Net Sales],Sales[Clean Region],E2,Sales[Status],"Ready"). Fill both down to row 5.

Month-start dates are already in E9:E11. In F9:

=COUNTIFS(Sales[Clean Date],">="&E9,Sales[Clean Date],"<"&DATE(YEAR(E9),MONTH(E9)+1,1),Sales[Status],"Ready")

In G9:

=SUMIFS(Sales[Net Sales],Sales[Clean Date],">="&E9,Sales[Clean Date],"<"&DATE(YEAR(E9),MONTH(E9)+1,1),Sales[Status],"Ready")

Fill both down to row 11. Using an inclusive start and exclusive next-month start also works when valid source dates contain times. All summaries explicitly require Ready status; worksheet filters alone do not change SUMIFS results.

5. Reconcile and hand over · 5 minutes

Check these independently before looking at Clean Answer and Answer Key:

  • Raw rows = unique orders + duplicates removed: 2,000 = 1,900 + 100.
  • Unique orders = Ready + Review: 1,900 = 1,880 + 20.
  • Net units 8,904; net revenue ₹8,783,340; average Ready order ₹4,671.99 (display rounded, retain full precision).
  • There are 46 return orders and 19 zero-price orders; both remain in the Ready group.
  • The four regional revenues and three monthly revenues must each sum to B8. Their order counts must each sum to B6.
Region Ready orders Net revenue
North 470 2,224,370
South 470 2,134,940
East 470 2,240,950
West 470 2,183,080

Write two short observations in Summary A15:A16 and your unresolved-data note in A18. For example, East has the highest regional net revenue in this sample; 20 orders remain excluded pending quantity confirmation. Describe observations, not unsupported causes. Save your workbook with Raw Export, your cleaned Table and the formula-based summary intact.

Completion criteria: correct row reconciliation, all review rows retained, returns/zero prices preserved, numeric dates/amounts, matching regional/monthly totals, and a clear handover note. If a check fails, revisit the relevant rows; do not hide every error with IFERROR or hard-code the expected total.

Exercises

mediumComplete Clean Work and Summary in the supplied workbook. Submit a saved workbook with a 1,900-order Sales table, 20 Review rows, a formula-driven regional and monthly summary, and two observations plus an unresolved-data note. Use Clean Answer and Answer Key only after your first attempt.
Keep Raw Export unchanged. Fill H:Q in Clean Work, paste the helper results as values, remove duplicates by Clean ID and name A1:Q1901 Sales. Reconcile 2000 raw rows = 1900 unique + 100 duplicates; 1900 = 1880 Ready + 20 Review. Net units: 8904; net revenue: 8783340; average Ready order: 4671.99. Keep 46 returns and 19 zero-price orders. Regions: North 2224370, South 2134940, East 2240950, West 2183080. Months: Jan 2539755, Feb 2931950, Mar 3311635. Compare individual rows with Clean Answer and formulas with Answer Key; document the 20 missing quantities instead of inventing values.

Quiz

Should a missing quantity be replaced with zero?
No — retain the order as Review and exclude it from Ready sales metrics.
Which key removes duplicate imports in this exercise?
The normalized Clean ID, because each order has one line item.
Why must regional and monthly revenues both equal the overall net revenue?
Each grouping partitions the same Ready orders; a mismatch reveals missing, duplicated or differently filtered data.
Capstone: clean a 2,000-row messy sales export + build a summary block · Foundations | ExcelWalaa