AI Content Creation

How to Format 8000 Rows in Google Sheets at Once

The formula that worked on ten rows does something completely different on eight thousand. It is not a scaling bug. It is what the function was always going to do.

By FITS TeamAugust 3, 20264 min read

An export lands in your sheet. Eight thousand rows of product titles, addresses, or notes, all needing the same transformation.

Dragging a formula down eight thousand rows is not the answer, and neither is the ARRAYFORMULA everybody reaches for next.

The Old Way (ARRAYFORMULA, Then MAP)

ARRAYFORMULA is the standard advice for applying one formula to a whole range.

=ARRAYFORMULA(TEXTJOIN(", ", TRUE, SPLIT(A2:A8000, " ")))

You expect 7,999 transformed rows. What you get is one cell in B2 containing every token from all 8,000 rows joined together, and rows 3 through 8000 left empty.

No error appears. The formula did exactly what it was told.

This is the detail most guides skip. ARRAYFORMULA does not make a function run once per row. It broadcasts the range into the function. Aggregating functions like TEXTJOIN, CONCATENATE, AND, and OR flatten whatever range they receive, so they collapse all 8,000 rows into a single result. ARRAYFORMULA only behaves per row with functions that were already elementwise, such as arithmetic or TRIM.

The workaround is to force per row execution with MAP and LAMBDA.

=MAP(A2:A8000, LAMBDA(cell, TEXTJOIN(", ", TRUE, SPLIT(cell, " "))))

That returns the right shape. It also opts those cells out of the parallelized calculation engine, so an 8,000 row LAMBDA adds seconds to every recalculation and makes the tab feel unresponsive while you scroll. And you still have to encode the transformation as nested string functions, which is the part that breaks whenever the data varies.

The FITS Way (Describe It Once, Fill Down)

FITS is elementwise by design. One formula in the first row, filled down, evaluated per row.

=FITS("Rewrite this product title in title case, remove the SKU in brackets, and keep it under 60 characters: " & A2)

No flattening, because nothing is aggregating. Row 4,127 gets the same treatment as row 2.

Cleanup jobs that would need three nested functions become one clause each.

=FITS("Standardize this address: expand abbreviations, title case the street, and uppercase the state code: " & A2)

A practical note on eight thousand rows. Do not paste the formula into all 8,000 cells at once and walk away. Work in blocks of a few hundred, let them settle, then continue. Paste-special the finished block as values before moving on.

That last step matters more than it sounds. Converting to values means the column stops recalculating, which is the whole reason a MAP and LAMBDA sheet gets slow. A static column of results costs nothing to scroll.

If you only need to touch some of the rows, flag them first and transform the flagged subset.

=FITS("Answer FIX if this title contains a SKU, an all caps word, or double spaces. Otherwise answer OK. One word only: " & A2)

On most real exports, that cuts the rows needing work from 8,000 to a few hundred. Cheaper, faster, and easier to review before you overwrite the source column.

When to Use Each

For arithmetic or a single TRIM across a range, ARRAYFORMULA is the right tool and costs nothing. Reach for =FITS() when the transformation needs judgment, when the source data varies row to row, or when the native version needs three nested functions to express. The same pattern covers trimming extra spaces, removing text after a character, and building a workflow hub for the team. The full tour is in automating Google Sheets tasks you used to need regex for.

Transform the Whole Export

FITS puts plain-English AI formulas inside Google Sheets. Describe the transformation once and fill it down eight thousand rows. Free tier included.