Tabulation: Turn Raw Records Into a Publishable Summary
Build a frequency table and cross-tabulation in Google Sheets, check counts and percentage bases, then prepare a clean summary for public sharing.

Suppose you have a spreadsheet of service requests and want to publish how many are open or closed in each area. Readers need a summary—not a list of individual requests.
Tabulation is the process of organizing data into a table, often by grouping records and calculating counts, totals or percentages. A frequency table summarizes one variable, such as status. A cross-tabulation summarizes combinations of variables, such as area and status; its cells contain counts or percentages of observations with those characteristics. Georgia State University’s guide describes how cross-tabulations record these combinations.
Here is a small, reproducible workflow that produces a summary for public sharing.
1. Define what each row counts
Use this synthetic example, not real service-request data. Paste the tab-separated sample into cell A1 of a Google Sheets tab named Raw. Check that it occupies A1:C9:
request_id area status
R001 North Closed
R002 North Closed
R003 North Closed
R004 North Closed
R005 North Open
R006 South Closed
R007 South Open
R008 South Open
The counting unit is one request, and each request appears once. Before tabulating your own file:
- Check for duplicate IDs. If the source contains status-history events, several rows may describe the same request.
- Standardize category labels: use a consistent spelling, capitalization and whitespace rule.
- Decide how to handle missing area or status values. Exclude them with a documented reason, or retain an explicit category such as
Unknown. - Define the scope: requests received during a period are not necessarily the same population as all requests open on a particular date.
These decisions determine what the totals mean. Keep them with the dataset, not just in your working notes.
2. Choose a frequency table or cross-tabulation
A frequency table answers “How many requests have each status?” For the example:
| Status | Request count | Share of all requests |
|---|---|---|
| Closed | 5 | 62.5% |
| Open | 3 | 37.5% |
| Total | 8 | 100% |
A cross-tabulation answers “How does status differ by area?”
| Area | Closed | Open | Total | Closed share within area |
|---|---|---|---|---|
| North | 4 | 1 | 5 | 80.0% |
| South | 1 | 2 | 3 | 33.3% |
| Total | 5 | 3 | 8 | 62.5% |
The denominator matters. North’s four closed requests are:
- 80% of North’s requests: 4 ÷ 5.
- 80% of all closed requests: 4 ÷ 5, coincidentally the same result here.
- 50% of all requests: 4 ÷ 8.
Label the percentage base explicitly. A column headed only Percent leaves readers guessing.
3. Build the cross-tabulation in Google Sheets
On a second tab, enter these headers in A1:E1, one per cell: Area, Closed, Open, Total, Closed share within area.
Put North in A2 and South in A3. In B2, enter:
=COUNTIFS(Raw!$B$2:$B$9,$A2,Raw!$C$2:$C$9,B$1)
Copy B2 across to C2, then copy B2:C2 down to B3:C3. The formula counts rows matching both the area and status. Google’s COUNTIFS documentation supports multiple criteria and requires the criteria ranges to have the same dimensions.
In D2, enter:
=B2+C2
In E2, enter:
=B2/D2
Copy both formulas down one row and format E2:E3 as percentages with one decimal place.
To reproduce the total row, put Total in A4 and =B2+B3 in B4. Copy B4 across through D4. In E4, enter =B4/D4 and format it as a percentage. This calculates the overall closed share from counts—not by averaging the two area percentages.
For your own data, extend both source ranges to the same final row and include every retained area and status category. Calculate percentages only where the denominator is greater than zero.
For a larger dataset, a pivot table is another option: Google Sheets supports row and column fields, summarized values and filters, and requires source-column headers. See Google’s pivot-table instructions.
4. Validate and prepare the public file
For this example, check that:
- Area totals add to 8.
- Closed counts add to 5, and open counts add to 3.
- Every included request belongs to exactly one area-status combination.
- Percentages use the stated denominator, rather than the grand total by accident.
For your own file, reconcile the table’s grand total with the number of source records remaining after documented exclusions. A category missing from your summary should not silently disappear from the count.
Keep the total row for checking, but consider omitting it from the interactive data body: sorting should not make Total look like another area. Export a reviewed summary with one header row, no merged cells and clearly named count and percentage fields. Document whether percentage values are stored as fractions such as 0.8 or percentage-point values such as 80.
Attach a dataset reference sheet explaining the population, reporting period, source, counting unit, category definitions, exclusions and percentage base.
Publish only information cleared for public release. Removing names is not enough if combinations of fields or links to other information could identify someone. The UK Information Commissioner’s anonymisation guidance explains these identification risks. Review small groups and sensitive categories before sharing; keep private source records out of the upload.
TablePage accepts CSV, TSV, XLSX and XLS files and turns uploads into public dataset pages with shareable links and filterable tables. Upload a file containing only the approved summary—not the private working workbook—then check the public page’s headers, values and percentage interpretation before distributing its link.