To flip a row of data into a column, or a column into a row, in Excel: Copy the range, then paste it back rotated with the Transpose paste option for a fixed copy, or enter =TRANSPOSE(range) for a live one. Both turn rows into columns and columns into rows. The choice between them is the whole point of this page, because one is a snapshot that never changes again and the other tracks the source.
How do I transpose data in Excel?
Say three figures sit across a single row, in A1:C1, and you want them running down a column instead.
| A | B | C | |
|---|---|---|---|
| 1 | 120 | 95 | 140 |
Microsoft’s steps for the paste route: select A1:C1 and press Ctrl+C, click an empty cell with room below it, then right-click and choose Transpose. One note worth heeding first: you have to Copy the range, not Cut it, because a transpose paste will not accept a cut selection.
| A | |
|---|---|
| 1 | 120 |
| 2 | 95 |
| 3 | 140 |
The rotation is a mechanical swap: the first row of the source becomes the first column of the result, the second row becomes the second column, and so on. A one-row source therefore comes out as a one-column result of the same length, and a taller block flips its width and height. If the range you rotate contains formulas, Excel updates them to match the new placement, so it is worth checking they use the absolute references you expect before you rotate; how cell references work covers the dollar signs that pin a reference in place.
Is a transposed copy static or live?
This is the part that catches people out. The paste route makes a static copy. It pastes plain values, and Microsoft is explicit that the result stands alone: “After rotating the data successfully, you can delete the original table and the data in the new table remains intact.” Because the copy holds its own values and keeps no link back, editing the source afterward leaves the rotated block showing the figures it had at paste time. It has gone out of date, and it still reads like a perfectly ordinary block of numbers.
The TRANSPOSE function is the live counterpart. It reads the source range as an array, so its result reflects the current values: change a number in the source and the rotated output changes with it. That is why Microsoft points to the function for data in an Excel table, where the paste option is unavailable, and why you would choose it whenever the rotation has to keep matching the source rather than freezing a moment.
How the TRANSPOSE function works
Microsoft’s definition is compact: “The TRANSPOSE function returns a vertical range of cells as a horizontal range, or vice versa.” You give it one argument, the range to rotate:
In current Excel you type it in a single cell and press Enter, and it is entered like any other formula. It returns a dynamic array, so the rotated values spill into the neighboring cells on their own.
| A | B | C | |
|---|---|---|---|
| 1 | 120 | 95 | 140 |
| 2 | |||
| 3 | 120 | ||
| 4 | 95 | ||
| 5 | 140 |
The spill needs somewhere to land: the cells below the formula must be empty, or it returns a #SPILL! error until you clear them. That is standard dynamic-array behavior, and array formulas and spill covers it in full. Older Excel handles the function differently: in Excel 2019, 2016, and earlier there is no spill, so you select the whole output range first and confirm the formula with Ctrl+Shift+Enter.
Can I transpose data in Excel for the web?
Yes, through the same paste option. Copy the cell range, select the empty cells where the rotated block should go, then on the Home tab select the Paste icon and choose Transpose Rows and Columns; the content of the copied cells is reoriented, so data in rows lands in columns and data in columns lands in rows. The TRANSPOSE function is available in the browser too, so the static-versus-live choice is yours there as well.
The short version
- Transposing flips a row into a column or a column into a row. Copy the range, then paste it back with the Transpose option, or enter
=TRANSPOSE(range). - The paste route is a static copy: it pastes fixed values that stay put even if you delete the source, so it will not follow later edits and can drift out of date without any visible sign.
=TRANSPOSE(range)is live: it reads the source as a dynamic array, spills the result into the empty cells, and updates when the source changes. Empty landing cells are required, or it returns#SPILL!.- To slide a column sideways without rotating anything, that is a different job: see how to move columns in Excel.
- When a static rotation has drifted from its source, compare the two saved versions: the cells that no longer match come back as a list, which turns a vague sense that something looks off into a named set of cells.