FastBankConvertFastBankConvert home

Google Sheets Slow with Large Data? Lighten It

By FastBankConvertPublished October 17, 2026

Google Sheets gets slow with large data mostly because of formulas, not rows. Every edit makes Sheets recalculate the changed cell and everything that depends on it. Whole-column ranges, volatile functions like TODAY, repeated sums, piles of conditional format rules and imports from other files multiply that work. Trim those first, then split the file.

What makes Google Sheets slow with large statement data?

Google Sheets slows down with large statement data when each edit triggers extra calculation. Google's help page on improving Sheets performance puts it plainly: each time a cell is edited, Sheets evaluates the formula in that cell plus all dependent cells. Ten thousand rows of plain values are light. Add five formulas per row and they are not.

Statement workbooks grow in a typical way. You paste or import one month, add a category column with a lookup, a running balance, a month column and a few summary sums. Then you add the next month, and the next. After two or three years, each lookup and sum points at tens of thousands of cells, and some of them recalculate on every keystroke.

The slowness also has a few distinct shapes, and each points to a different cause:

  • Typing lags for a second or more after each edit. Recalculation is the likely cause. The fixes in the next three sections apply.
  • The file takes a long time to open, then runs fine. The workbook is large in cells or holds many imports. Splitting the file helps more than formula changes.
  • Scrolling stutters but edits are quick. Conditional formatting and heavy cell formatting are worth checking first.
  • One tab is slow and the others are fine. That tab holds the expensive formulas. Start your cleanup there.

Before changing anything, make a copy of the file with File, then Make a copy. Performance fixes involve rewriting formulas, and it is reassuring to have the original to compare totals against.

Whole-column ranges in a Google Sheets transaction log

Whole-column ranges such as A:A make Google Sheets consider every row in the column, not just the rows that hold transactions. Google's page on optimising data references in Sheets calls a range like A1:A10 a closed range and says Sheets computes it faster than an open one such as A:A.

The reason whole columns appear so often in statement sheets is convenience. A formula like SUMIF(C:C, "Groceries", D:D) keeps working as you paste new months below, so you never have to edit it. The cost is that every one of those formulas scans the full length of the column, including thousands of empty rows below your data.

Two ways to keep the convenience without the cost:

  1. Use a closed range with headroom. If the log has 8,000 rows and grows by about 300 a month, a range of C2:C12000 covers more than a year of growth. Review it when the data gets close.
  2. Put the summaries on a separate tab that reads a fixed block. The transaction tab grows, and the summary tab points at a defined block you widen once a year.

Whole-column references inside lookups are the worst offenders, because a lookup repeats its scan for every row that uses it. A VLOOKUP on each of 8,000 rows against a whole-column table does 8,000 full-column scans. The same Google page also warns about reference chains, where each cell depends on the cell above it. A running balance written as the previous balance plus this row's amount is exactly that shape. Sheets must work through the chain in order, so an edit near the top recalculates every balance below it.

Volatile functions and repeated sums in a large Google Sheet

Volatile functions recalculate whenever anything in the sheet changes, whether or not their inputs did. Google's performance page names TODAY, NOW and RAND as functions to use sparingly for that reason. In a large Google Sheet, a TODAY call copied down a whole column means thousands of cells redoing their work on every edit.

Statement sheets use TODAY in a few predictable places: an "age of transaction" column, a flag for items older than 30 days, or a filter on the current month. Google's advice is to move the volatile function into its own cell and point other formulas at that cell. In practice:

  • Put =TODAY() in one cell on a settings tab, for example Settings!B1.
  • Replace every TODAY() in the transaction tab with a reference to Settings!B1.
  • The value still updates each day, but Sheets computes the date once instead of once per row.

Repeated sums work the same way. A formula that divides each row's amount by the month's total often recomputes that total on every row. If 3,000 rows each contain SUMIF over the month, Sheets runs 3,000 identical sums. Google's page recommends moving a repeated calculation to its own cell and referring to the result. Compute each month's total once in a small summary table, then look it up from the rows.

A worked example of one example sheet

The figures below describe an example workbook, not a measurement. They show how the counts add up.

Item Before After
Transaction rows 9,000 9,000
Category lookup per row Against whole column A:B Against closed range A2:B400
Age column using TODAY() 9,000 TODAY calls 1 TODAY call, 9,000 references
Monthly share column 9,000 SUMIF calls 36 SUMIF calls in a summary, 9,000 lookups
Conditional format rules 14, some overlapping 4

Nothing in the data changed, and every total should match the copy you made before starting. What changed is how much work each edit sets off.

Conditional format rules that drag a big Google Sheet down

Conditional format rules slow a big Google Sheet because Sheets applies each rule to its entire range and re-evaluates it as data changes. Google's performance page notes that conditional formatting can take a long time to calculate. Its advice is to review the rules and remove the ones you no longer need.

Statement sheets collect rules over time. One rule colours negative amounts red, another highlights large charges, a third flags uncategorised rows. Copying and pasting rows can silently duplicate rules with slightly different ranges, so a sheet may carry five copies of the same rule.

To clean them up:

  1. Select the whole tab, then choose Format, then Conditional formatting. The sidebar lists every rule that touches the selection.
  2. Look for rules with the same condition and overlapping ranges. Keep one, and widen its range if needed.
  3. Replace whole-column ranges in rules with the block that holds data.
  4. Prefer simple conditions such as "less than 0" over custom formulas. A custom formula rule runs a formula in every cell of its range.
  5. Delete rules for checks you no longer look at.

Plain formatting has a cost too, though smaller. Thousands of cells with individual borders, fonts and fills make a file heavier to load. Formatting whole columns at once, rather than cell by cell, keeps that down.

IMPORTRANGE and imported tabs in a slow Google Sheets file

IMPORTRANGE pulls a range from another spreadsheet into the current one, and each import adds load on open and on refresh. A Google Sheets file that imports twelve monthly files, then runs lookups across the imported tabs, does the work of all twelve files plus its own. That is a common shape for statement workbooks.

The imports themselves are not the only cost. Formulas that sit on top of imported ranges recalculate when the import refreshes, so a slow import makes everything downstream wait. A few ways to lighten the load:

  • Import once, not many times. Several formulas that each import the same range from the same file can be replaced by one import on a hidden tab, with the other formulas reading that tab.
  • Import a closed range. Import Sheet1!A1:F2000 rather than whole columns, for the same reason as before.
  • Freeze finished months. Once a month is reconciled, its numbers will not change. Copy the imported block and use Edit, then Paste special, then Values only. The import disappears, and the data stays.

If the goal is to bring several months into one place permanently, a one-time merge is usually better than a live link. Combining multiple sheets into one in Google Sheets compares the ways to do that, including stacking ranges into a single table.

Collaborators add load of their own. Google's performance page notes that Sheets shows its working bar when a collaborator makes changes, because their edits set off calculation too. If others only need to read the numbers, sharing the Google Sheet as view only means fewer people editing at once and protects the data at the same time.

Images add weight as well. Some people insert screenshots of statement pages into a tab as a reference. A lighter approach is to keep the statements as PDFs next to the spreadsheet and link to them. If those PDFs are scans, making a scanned PDF searchable means you can search them for a payee instead of scrolling through pictures in the sheet.

When should a large Google Sheet be split into yearly files?

Split a large Google Sheet into yearly files when the cleanup above no longer helps, or when the file is approaching the size limit. A workbook holding several years of transactions is heavy even with good formulas. Old years rarely change, and keeping them in an archive file costs nothing in day-to-day use.

Signs that splitting is the right call:

  • The file still lags after you have closed ranges, removed volatile functions and trimmed rules.
  • Most of your edits touch the current year, while the older rows are only read for reports.
  • The workbook is getting near the Google Sheets cell limit, which counts every cell in every tab, including empty ones.
  • Several people work in the file and most of them only need this year.

A practical split keeps one file per year with the full transaction log, and one small summary file that holds each year's totals as values. Copy the totals in as values rather than linking with live imports, or you will rebuild the slowness you just removed.

Delete empty rows and columns at the end of each tab before you split. A tab with 1,000 columns and 50,000 rows reserves all those cells, even when your data uses six columns. Trimming them makes the file smaller and lighter to open.

Clean data from the start helps too. A statement that arrives already split into date, description and amount columns needs no helper formulas to pull fields apart. FastBankConvert is being built to give back statements in that shape as CSV or Excel, so the sheet starts with values rather than parsing formulas; the homepage describes how it is meant to work.

All posts in Google Sheets, Numbers and LibreOffice