Build balanced sales territories from US counties in Excel or Google Sheets
You can split any set of states into N sales territories that each hold about the same number of households, using one county file and three formulas. You end with every county in your states assigned to one of your territories, and a pivot table that shows how even the split is.
The idea the page rests on: population is the wrong denominator. What buys anything sold to a home is the household, not the person, and households is a column in the file (the number of occupied homes, a five-year average). Two counties with the same population can hold very different numbers of households. So we balance on households.
county_fips column is zero-padded text, and Excel turns 01017 into 1017. 318 of the 3,221 counties start with a zero, and every later lookup on them then fails without an error. Step 1 shows how to import it safely.What you need
The County List with Demographics, Excel or Google Sheets, and seven columns with these exact names:
| Column | What it holds |
|---|---|
name | County or county-equivalent name |
state_code | Two-letter state code |
county_fips | 5-character county code, as text (13121 is Fulton County, GA) |
households | Occupied homes, five-year average |
lat | Latitude of the county |
lng | Longitude of the county |
population | Estimated residents, 2024 (used only in step 11) |
households is in the County List with Demographics ($199). The free and $29 county files do not carry it, so this can't be done on them.
Step by step
- Import the file; don't double-click it. Excel: Data → From Text/CSV, and in the preview set
county_fipsto Text, then Load. Google Sheets: File → Import, and turn off "Convert text to numbers, dates, and formulas." Why:county_fipsis zero-padded, and Excel turns01017into1017. - Keep only your states, on a new sheet. Turn on filters, pick your states in
state_code, then copy the seven columns above (visible rows only) onto a new sheet in this order: Aname, Bstate_code, Ccounty_fips, Dhouseholds, Elat, Flng, Gpopulation. Leave the original sheet untouched. This is load-bearing, not tidiness: a plain SUM over a filtered column still counts the hidden rows, so your target would be computed over the whole country. - Check the column before you trust it. Select column D and read Count and Numerical Count in the status bar (Excel: right-click the status bar to show them). If Numerical Count is lower, some cells arrived as text. Re-import as in step 1.
- Know what is covered. Every county in the 50 states has a household figure. The only blanks are Puerto Rico's 78 municipios. If you cover Puerto Rico, delete those rows and plan Puerto Rico by hand.
- Sort. By
state_codeA→Z, then byhouseholdslargest to smallest. - Set the number of territories. Type it in cell J1 and name the cell
Reps(Excel: the Name Box; Sheets: Data → Named ranges). - Compute the target. In J2, named
Target:=SUM(D:D)/Reps - Add the running total in column H (header
cume), row 2, and fill down:=SUM($D$2:D2) - Assign the territory in column I (header
territory), row 2, and fill down:=MIN(Reps, INT((H2-D2/2)/Target)+1)Each county goes to the territory its midpoint falls in, so a big county is never pushed whole into the next territory.
- Check the balance. Make a PivotTable with
territoryin Rows and the sum ofhouseholdsin Values. Read the largest and the smallest. The next section shows what good looks like. - Optional, for business-to-business readers: households to businesses. See below.
The formulas in steps 7–9 work unchanged in Excel and Google Sheets.
Step 11 in full: from households to businesses
Territories are balanced on households. If you sell to businesses, you can re-label each territory's total as an estimated number of businesses, but you have to choose the right rate first.
Three things to know:
- It is a conversion, not a count. No file we sell counts businesses.
- One national rate does not change which territory is biggest. It re-labels the totals; it does not re-rank them.
- The rates are per resident, not per household. So this step uses the
populationcolumn you copied into G in step 2. Add Sum ofpopulationto the PivotTable, multiply each territory's sum by the rate, then divide by 1,000.
Sources: U.S. Small Business Administration, Office of Advocacy, Frequently Asked Questions About Small Business 2026 (36,207,130 small businesses; 6,395,635 of them employer firms), and the U.S. Census Bureau Population Clock (about 343 million residents). Retrieved October 21, 2026.
Check your work against our numbers
Georgia, 5 territories:
| Check | Expected |
|---|---|
| Counties after step 2 | 159 |
| Total households | 4,008,013 |
Target | 801,602.6 |
| First row after sorting | Fulton, 13121, 457,791 households |
| Territory 1 | 780,643 households, 2 counties |
| Territory 2 | 802,958 households, 4 counties |
| Territory 3 | 839,185 households, 12 counties |
| Territory 4 | 791,760 households, 25 counties |
| Territory 5 | 793,467 households, 116 counties |
If your PivotTable matches, the sheet is working. The largest territory is within 8% of the smallest.
Two things that break this
One county bigger than your target. A county can't be split. If it holds more households than Target, it becomes a territory by itself, and that territory runs over. Worked case: Texas at 8 reps has a Target of 1,343,405, and Harris County alone holds 1,728,103, about 29% over. This is common, not an edge case: at 5 reps the largest county is bigger than the target in 24 of the 50 states, and at 10 reps in 48. The fix is your decision, and there are two options: give that county its own rep and accept it runs heavy, or split it below county level with city data (How-to 2 in this series, coming).
Balanced is not close together. A size sort balances volume and ignores the map. Territory 1 is your biggest counties; the last territory is the long tail of smaller counties (in Georgia, 116 of them). That suits a big-account rep and a rural rep. If your reps are driven by travel, read the next section.
What this can and can't tell you
This procedure is correct only if your reps' cost to serve is driven by the number of households they cover, not by the distance between them. If drive time dominates, sort by lng instead of by households in step 5 to get west-to-east strips that sit next to each other, then hand-adjust using lat and lng, and expect to trade some balance away.
Also worth knowing:
- Household counts are Census five-year survey averages: estimates, not exact counts. Small differences between territories are within the noise.
- Washington, DC is not in the county file. A plan that must include DC adds it from the City List by hand.
- Connecticut appears as nine planning regions, the county-equivalents Census adopted in 2022, not eight legacy counties.
- The download already includes
column-definition.mdandmethodology.md. Read those for what each column means.
Get the file
County List with Demographics — $199 one-time. 3,221 counties and county-equivalents (the 50 states and Puerto Rico), 122 columns. See the list, or start with the free 100-row sample.