How to split an excel payroll sheet into department-specific sheets for secure distribution
- Step 1Export the consolidated payroll to one sheet — Produce the full payroll run as a single
.xlsxor.csvwith all departments in one flat sheet, including a department column. The tool reads the first sheet only, so ensure the payroll data is the first tab — not a cover or control sheet. - Step 2Open the splitter on a trusted device — Because the file is parsed locally in your browser, use a device you control. Drop the payroll file onto the upload zone — nothing is transmitted. SheetJS handles parsing in-page.
- Step 3Type the department column header exactly — Enter the department column's header into the Split column box — for example
Department. It is free text and case-sensitive, so it must match your header precisely. A mismatch pools every employee into one__blank__tab, which would defeat the confidentiality goal. - Step 4Run the split on Pro tier — The tool is Pro-and-up. Pro splits files up to 50 MB / 100,000 rows — ample for company-wide payroll. The split groups rows by department in memory and assembles the multi-tab workbook locally.
- Step 5Verify each department against headcount — The summary shows a badge per department with its row count. Compare each count to the known headcount for that team. A wrong count, or an unexpected
__blank__tab, means some employees lack a clean department value and need fixing before distribution. - Step 6Extract and deliver one department per recipient — Download
split-output.xlsx. For secure delivery, open it and extract each manager's tab into its own file (right-click → Move or Copy → new book), so no recipient ever receives another department's pay. Encrypt or password-protect the per-department file per your data-protection policy before sending.
Privacy and behaviour for payroll splits
The tool exposes one control. The behaviours below matter most when the data is confidential payroll.
| Aspect | Behaviour | Confidentiality implication |
|---|---|---|
| Processing location | 100% in-browser via SheetJS | Salaries and PII are never uploaded; only an anonymous usage counter (no content) is recorded |
| Output shape | Single split-output.xlsx, one tab per department | Sending the whole workbook exposes every department — extract per-department tabs for true isolation |
| Empty department cell | Grouped under __blank__ | Unassigned employees pool in one tab — verify and assign before distribution so no one is missed or mis-routed |
| Header row | Copied to every tab | Each manager sees column titles (Name, Grade, Salary) without HR re-adding them |
| Other columns | Copied verbatim | Bank details, NI/SSN, and salary survive unchanged — apply redaction separately if a recipient shouldn't see them |
| Matching | Exact, case-sensitive department value | Finance and finance make two tabs — normalise first to avoid fragmenting a team |
Tier limits for payroll files
Pro and above. Limits apply to the input file; department count is unbounded by the tool.
| Tier | Max file size | Max rows | Available? |
|---|---|---|---|
| Free | 5 MB | 10,000 | No — Pro required |
| Pro | 50 MB | 100,000 | Yes |
| Pro-media | 200 MB | 500,000 | Yes |
| Developer | 500 MB | Unlimited | Yes |
Cookbook
Payroll-shaped before/after with the secure extract workflow. All figures and identifiers are fictional.
Split company payroll into department tabs
One consolidated run becomes a tab per department, each with only its team's rows and the header.
Input (Payroll sheet): Employee | Department | Salary A. Lee | Finance | 62000 B. Ng | Sales | 58000 C. Roy | Finance | 71000 D. Vos | Sales | 55000 Split column: Department Output: split-output.xlsx Tab "Finance": A. Lee (62000), C. Roy (71000) Tab "Sales": B. Ng (58000), D. Vos (55000) Results: 2 sheets created — Finance (2), Sales (2)
Extract one department for one manager
The output is a single workbook holding every department. For confidential delivery, pull just one tab into its own file so the recipient never sees other teams.
1. Split on Department -> split-output.xlsx (6 tabs) 2. Open in Excel 3. Right-click "Finance" tab -> Move or Copy... 4. To book: (new book), tick Create a copy -> OK 5. Save as finance-payroll.xlsx 6. Password-protect (File > Info > Protect Workbook > Encrypt with Password) before sending to the Finance lead
Verify each tab matches headcount
Compare per-department badge counts to known headcount to catch mis-assigned or missing employees before anything leaves HR.
Known headcount: Finance 24, Sales 31, Ops 18 = 73 Results: Finance (24), Sales (31), Ops (17), __blank__ (1) Total: 73 ✓ but Ops is short by 1 and __blank__ has 1. The __blank__ employee has no Department value -> open that tab, assign them to Ops, re-split for clean tabs.
Spell departments consistently first
Exact matching fragments a team if the department is spelled inconsistently. Normalise before splitting.
Input Department values: HR, Hr, Human Resources Results (before cleanup): HR (12) Hr (2) Human Resources (4) Three tabs for one team. Standardise to a single value (e.g. "HR") with the case converter / find-replace, then re-split: HR = one tab (18).
Redact sensitive columns before sending
The splitter copies every column, including bank and NI/SSN. If a line manager shouldn't see those, redact before or after splitting with the dedicated security tool.
Payroll columns: Name, Department, Salary, NI Number, IBAN
Managers should see Name, Department, Salary only.
Plan:
1. Run the PII scrubber to redact NI Number + IBAN
(email/phone scrubber tool) OR delete those columns
2. Split on Department
3. Extract each department tab to its own file
The splitter itself does not redact — it copies columns
verbatim.Edge cases and what actually happens
Department column typed incorrectly
All employees pooled in __blank__The split column is matched exactly. Typing department for a Department header, or adding a trailing space, matches no column — every employee reads as missing and pools into a single __blank__ tab. For confidential payroll this is the worst outcome (everyone in one tab), so verify the header text matches before distributing.
Sending the whole workbook to one manager
Confidentiality riskThe output is one workbook containing every department's tab. Forwarding it whole exposes all salaries to every recipient. For private distribution, extract the relevant department tab into its own file (Excel → Move or Copy → new book) and send only that. The tool produces the split; isolating one recipient's file is a manual extract step.
Employees with no department
Grouped under __blank__Rows with an empty department cell pool into a __blank__ tab by design, so unassigned staff are visible rather than dropped or silently merged into the wrong team. Reconcile against headcount, assign each, and re-split before any distribution.
Same department spelled inconsistently
Fragments into multiple tabsHR, Hr, and Human Resources are distinct values, so a single team can fragment across tabs — risking that a manager receives an incomplete slice. Normalise the department column first (the case converter fixes casing) so each team is one tab.
Bank details and NI/SSN copied to every tab
By design — no redactionThe splitter copies all columns verbatim, including sensitive ones. If a line manager shouldn't see bank or national-insurance fields, redact or remove them first — the canonical tool for masking is the email/phone scrubber — then split. The splitter never redacts.
Payroll data on a control or summary first sheet
Only the first sheet is splitIf the workbook opens with a control, signoff, or summary tab and the line-item data is on a later sheet, the splitter (which reads sheet 0) splits the wrong sheet. Move the raw payroll sheet to the front or save it standalone before uploading.
Free-tier account
Pro tier requiredFree accounts are blocked with Conditional Splitter requires Pro tier. Upgrade to Pro (50 MB / 100,000 rows) or higher. Company-wide payroll comfortably fits within Pro's row limit.
Salary stored with a currency symbol
Preserved as displayedSalary values are copied into each tab as the reader formats them. A salary stored as text with a £ or $ prefix carries through as text; a raw number stays numeric. The split inspects only the department column, leaving pay values untouched.
Long department or cost-centre names
Truncated to 31 charsDepartment names over 31 characters are truncated in the tab label (row data is unaffected). Two long names sharing their first 31 characters collide and the second gets a _2 suffix. Verify against the badge labels so no manager receives the wrong team's tab due to a confusing label.
Confidential file processed on a shared machine
Operational risk, not a tool flawProcessing is fully local, so nothing uploads — but the downloaded split-output.xlsx and any extracted per-department files sit on the device's disk. On a shared or borrowed machine, delete the downloads and clear the browser's download history per policy after distribution.
Frequently asked questions
Is the payroll data uploaded anywhere?
No. The split runs entirely in your browser via SheetJS — salaries, employee names, and identifiers are parsed locally and never transmitted to a server. Only an anonymous, content-free usage counter is recorded for dashboard stats, and you can opt out in account settings. Nothing of the file's contents leaves your machine.
How do I send a manager only their department?
The tool outputs one workbook with every department's tab. For private delivery, open split-output.xlsx, right-click the manager's department tab → Move or Copy → (new book), tick Create a copy, save it as a standalone file, then password-protect and send only that file. Never forward the full workbook to a single department manager.
Which column should I name for a payroll split?
Type the exact header of the column holding the department or cost centre — usually Department. The box is free text and case-sensitive, so it must match your header precisely. If everyone ends up in one __blank__ tab, the column name didn't match — fix it before distributing.
Will it strip bank details or NI/SSN numbers?
No. The splitter copies every column verbatim into each tab, including sensitive ones. If a recipient shouldn't see those fields, remove or mask them first — the dedicated tool is the email/phone scrubber for redaction — then split.
What happens to employees with no department assigned?
They are grouped into a __blank__ tab. This is intentional so unassigned staff are visible rather than dropped or merged into the wrong team. Reconcile the __blank__ count against headcount, assign each employee, and re-split before any distribution.
Why did one team split across several tabs?
Because the department value isn't spelled identically. HR, Hr, and Human Resources are three distinct strings, so each becomes a tab — risking that a manager gets an incomplete slice. Normalise the department column first (the case converter handles casing), then re-split.
Are the column headers kept on each department's tab?
Yes. The header row is copied to every tab, so each manager opens a self-describing sheet with Name, Grade, Salary titles already in place — HR doesn't have to re-add them.
How do I confirm no one was missed or mis-routed?
Compare each department's row-count badge to its known headcount, and add the counts up to confirm they equal the total payroll row count. A short count or an unexpected __blank__ tab flags employees with a missing or wrong department value to fix before sending.
Which sheet does it split if my workbook has a control tab first?
Only the first sheet. If your payroll workbook opens with a control or signoff tab, move the raw payroll data to the front (or save it standalone) before uploading, or the split will run against the wrong sheet.
What tier and file size do I need for company payroll?
Pro tier or higher; Free is blocked. Pro handles 50 MB / 100,000 rows — comfortably more than most company payrolls. Pro-media reaches 200 MB / 500,000 rows and Developer is unlimited. Limits apply to the input file, not the number of department tabs.
Can I split by department and then by grade or location?
Not in one pass — the tool groups by a single column. Split on Department first, then run each department tab through the splitter again on Grade, or build a combined Department|Location helper column and split on that. To remove duplicate employee rows before splitting, run the fuzzy deduplicator on the employee-ID column first.
Is the downloaded file safe to leave on a shared machine?
Processing is local so nothing uploads, but the downloaded workbook and any extracted per-department files do live on the device's disk. On a shared or borrowed computer, delete those downloads and clear the browser download history after distribution, per your data-protection policy.
Privacy first
Every JAD Excel tool runs entirely in your browser using SheetJS and ExcelJS. Your spreadsheets, formulas, and data never leave your device — verified by zero outbound network requests during processing.