You can measure how a new congressional map reshapes the vote without touching GIS software. A clean precinct table, a crosswalk that maps each precinct to both the old and new districts, and two formulas do most of the work: SUMIFS in Google Sheets and DSUM in Excel. We will also use QUERY for quick pivots and a couple of quality-of-life helpers.
What to assemble
- Precinct results
Minimum columns:precinct_id,county,party,votes(or candidate),turnout. - Crosswalk
Columns:precinct_id,old_district,new_district. - Lookup table
Join the crosswalk to results byprecinct_id. Every row now knows which district it belonged to before and after.
If you do not have precincts, you can repeat this process with counties or census tracts. Finer units are better.
Core rollups with SUMIFS (Sheets)
Create two district-level tables side by side:
- Old map totals: sum votes into
old_districtbuckets. - New map totals: sum votes into
new_districtbuckets.
Example for Democratic votes under the old map:
=SUMIFS($E:$E, $A:$A, $H2, $C:$C, "DEM")
Where:
- Column A =
old_district - Column C =
party - Column E =
votes - Cell H2 = the district label you are aggregating
Repeat with "REP" for Republican votes. See the full guide to SUMIFS in Google Sheets.
Excel equivalent with DSUM
In Excel, DSUM can play the same role if you prefer database-style criteria ranges:
=DSUM($A$1:$E$500000, "votes", $G$1:$H$2)
- Database: your big joined table
- Field:
"votes" - Criteria range: a small range where
old_district = H2andparty = "DEM"
Need a refresher on criteria blocks and setup? See DSUM in Google Sheets for the database-style approach, which maps closely to Excel usage.
Quick pivots with QUERY (Sheets)
Prefer a single formula that produces a district x party table? Use QUERY:
=QUERY(A:E, "select A, C, sum(E) where C in ('DEM','REP') group by A, C label sum(E) ''", 1)
Here column A is old_district, C is party, E is votes. Swap A for the column that holds new_district to see the post-map picture. Learn more in the QUERY function guide and QUERY with multiple criteria.
What to measure
1) District partisanship shift
For each district, compute the two-party Democratic share before and after:
= DEM_votes / (DEM_votes + REP_votes)
Create ฮShare = NewShare - OldShare. This shows how much bluer or redder the district became.
2) Seat outlook under a neutral swing
If you want a crude seat count, mark districts where NewShare โฅ 0.50 as likely wins. A COUNTIF over those booleans gives a fast tally, or use COUNTIFS for thresholds like โฅ 0.52 to represent a safety margin. References: COUNTIF vs COUNTIFS in Google Sheets and COUNTIF in Excel.
3) Split counties
Voters notice when counties are split. Count distinct new_district values per county and flag counties with more than one. QUERY can return counts per county, or combine UNIQUE and COUNTIF. See UNIQUE in Google Sheets and count unique in Excel. For filtering by election type or party, use FILTER in Google Sheets or FILTER in Excel.
4) Turnout continuity
Compare total turnout by district before and after to ensure your joins are correct. Large unexplained changes often signal missing precincts rather than real effects.
Practical build order
- Join precinct results to the crosswalk.
- Validate with small spot checks. If you have official results pages, pull a few with
IMPORTXMLfor comparison: IMPORTXML guide. - Aggregate with
SUMIFSorDSUM. - Compare margins, shares, and seat counts.
- Visualize changes.
For visuals, a ready starter helps. Try the Create a Google Sheets Dashboard template for district rollups and change charts. If your source data lives in other files, wire it in with IMPORTRANGE.
Sanity checks and QC
- Error handling: wrap outputs in
IFERRORduring development so partial ranges do not break your sheets. Browse the functions catalog starting at the Formulas Hub. - Cross-sheet data: use IMPORTRANGE with named ranges to keep references readable.
- Multiple criteria at scale: combine FILTER, COUNTIF(S), and QUERY multiple criteria so your logic stays explicit.
- Regex checks: use REGEXMATCH to flag malformed precinct IDs or nonstandard party labels.
Optional: Auditing and finance analogies
Election analysis benefits from light accounting discipline. If you want an audit trail of corrections or manual entries, adapt a ledger template as a change log: Free Google Sheets Ledger Template.
If your team wants to track analyst time or software costs tied to map reviews, keep a simple P&L or expense sheet:
- Google Sheets Profit and Loss Template
- How to Create a Profit and Loss Statement in Excel
- Google Sheets Expense Tracker Template
- Business Expenses Spreadsheet
Deliverables to save
- A โBefore vs Afterโ table with district, party, votes, share, and
ฮShare. - A one-page dashboard with a bar chart of
ฮShareand a table of seats above 50 percent, built with the dashboard starter. - A QC sheet with three IMPORTXML spot checks against official results.
For deeper walkthroughs, use these SpreadsheetPoint resources:
Who Should Use This?
This method fits analysts who live in spreadsheets and want defensible, repeatable rollups. Journalists, civic watchdogs, and academics can quantify how a map shifts partisan balance without specialized GIS tools. Campaigns and committees can use it for quick triage, identifying which districts gained or lost favorable precincts after a redraw. Finance and operations teams inside election offices can also adapt the workflow, since it mirrors standard reconciliation tasks they already know from ledgers and cost tracking.
Students and researchers will find it useful as a transparent baseline. Every step happens in the open, from the join, to the criteria, to the final sums. That makes it easy to audit the logic, share a copy, and invite replication.
When This Information is Helpful
Use it the moment a proposed or court-ordered map appears. Early pass results help you answer three urgent questions, which districts flipped from lean to toss up, which counties were split, and whether the new shapes create a durable advantage. The same tables also support pre-clearance style reviews, public testimony, and quick memos to stakeholders who need a plain language summary backed by numbers.
The approach stays useful after adoption. During candidate recruitment, it clarifies where a modest fundraising or turnout bump could change the outcome. In budget planning, it helps offices anticipate staffing and polling place needs when district lines move population between jurisdictions. On election night, it provides context for swings that are really map effects rather than voter sentiment.
Limitations of This Analysis
Results depend on the quality of your crosswalk and precinct returns. Split precincts can be messy, partial precinct splits require careful allocation rules, and missing precincts can skew totals. If parties beyond Democrat and Republican matter in your state, a two-party share can hide important shifts. Turnout changes between cycles can also mask or exaggerate a map effect, so treat static vote totals as a starting point, not an answer.
This is an ecological analysis, not a voter-level model. You are summing precincts, not predicting individual behavior, so you cannot make claims about specific groups without additional data. The formulas quantify how lines move past votes, they do not measure candidate quality, incumbency, or local issues. Treat the outputs as a first pass screen, then validate with fresh data, on the ground knowledge, and, when needed, full GIS checks.