How to copy multiple connected formulas simultaneously in Google Sheets

I’m working with a spreadsheet that has data in one sheet and I need to create a different layout in another sheet. My main sheet has columns like ID, Section A, Section B, Value1, Value2, Header, Description, Field1, Field2, and Comments.

I want to reorganize this data into a new format where each row from the original sheet creates multiple rows in the new sheet. The problem is that I have formulas that reference specific cells and when I try to drag them down, they don’t update correctly for the next set of data.

Is there a way to set up the formulas so that I can select the entire block of cells and drag it down to automatically generate the same pattern for each row in my source data? I need the formulas to increment properly so they reference the correct row from the original sheet.

Right now I have to manually update each formula block which takes forever when I have lots of rows to process.

mix absolute and relative refs like $A1 or A$1 - just lock down what needs to stay still. or, try a helper col with 1,1,1,2,2,2 and use INDEX for pulls from your source sheet. much easier than fighting with drag-n-drop on tricky formulas.

Had this exact problem last month when reorganizing project data. Here’s what worked: use INDIRECT with proper cell referencing instead of direct references like A1, A2, etc. Structure your formulas like INDIRECT(“A”&((ROW()-2)*blocks_per_row+1)) where blocks_per_row equals how many rows each original record creates in your new layout. When you copy the formula block down, ROW() automatically adjusts and calculates the right source row. Also try named ranges for your source data - makes formulas way more stable when copying. I created a helper column that calculates the source row number first, then referenced that in the main formulas. Takes some setup but saves hours once you nail it.

Had the same issue with monthly reports. OFFSET saved my life here instead of regular cell references. Build your first formula block with OFFSET(source_range, calculation_for_row, 0) - the calculation picks which source row based on where you are. Like if each source row creates 3 output rows, try OFFSET(A:A, INT((ROW()-start_row)/3), 0). Copy the whole block down and OFFSET figures out the right source row automatically. Way better than fighting mixed references and it scales up nicely.