FLIP Function (Gnumeric)
Reverse rows or columns with Gnumeric FLIP while preserving matrix dimensions and values; verify direction, changed inputs and array entry.
Verification status: See the evidence and test scope described in this guide. How formula examples are checked
Quick answer: FLIP reverses row order by default. With FALSE as its second argument it reverses column order instead. A 2-by-3 matrix remains 2-by-3; this is different from transposing it.
Availability and evidence
- Introduction: Gnumeric 1.11.6. NEWS explicitly adds FLIP.
- Source support: Registered in the Gnumeric 1.12.62 plugin. No retirement is established. The last functioning application version is unverified for this guide.
- Evidence dates: Official source was retained October 13–14, 2026 and reviewed October 15. Typed-list, positional, workbook-index and exact product checks are independent reference calculations. No native Gnumeric, compiled-library, headless application or GUI execution was performed.
Syntax and direction
=FLIP(matrix[,vertical])
Matrix is the input range or array. Vertical is optional and defaults to TRUE. TRUE reverses the order of rows, moving the bottom row to the top. FALSE reverses the order of columns, moving the rightmost column to the left. Neither operation sorts the values.
The source allocates a result with the same width and height as the input and copies values into their reversed positions. A one-cell input returns that value directly. Use explicit TRUE/FALSE controls when the intended direction matters; this guide does not infer localized text-to-Boolean rules.
The function creates a calculated result rather than rearranging the source range in place. It does not copy the source’s cell formatting, comments or other worksheet objects as part of the value array.
Complete matrix worksheet
Create FlipControls and put the following numbers in A2:C3:
| Row | A | B | C |
|---|---|---|---|
| 2 | 1 | 2 | 3 |
| 3 | 4 | 5 | 6 |
Select E2:G3 and enter =FLIP(A2:C3) using the documented array-entry procedure, Ctrl+Shift+Enter after selecting the complete result area. The independent expected rows are 4,5,6 and 1,2,3. =FLIP(A2:C3,TRUE) has the same result.
In a separate 2-by-3 output area enter =FLIP(A2:C3,FALSE). Its expected rows are 3,2,1 and 6,5,4. Read each result row from left to right. The two outputs deliberately use the same source so direction is the only changing parameter.
In a copy change B2 from 2 to 20. The vertical output becomes 4,5,6; 1,20,3. The horizontal output becomes 3,20,1; 6,5,4. Only the copied occurrence of the edited value changes.
Reference controls
| Formula or controlled values | Independent reference result |
|---|---|
=FLIP(A2:C3) |
[4, 5, 6; 1, 2, 3] |
=FLIP(A2:C3,TRUE) |
[4, 5, 6; 1, 2, 3] |
=FLIP(A2:C3,FALSE) |
[3, 2, 1; 6, 5, 4] |
Column [10;20;30], vertical |
[30; 20; 10] |
Column [10;20;30], horizontal |
[10; 20; 30] |
Row [10,20,30], horizontal |
[30, 20, 10] |
One cell [42] |
42 |
Row [A,TRUE,5], horizontal |
[5, TRUE, A] |
Bracketed rows describe values rather than a localized array-literal recipe. These are source-backed position mappings checked independently, not application screenshots or observed GUI output.
Advanced: distinguish reversal from transposition
For the original fixture, =TRANSPOSE(A2:C3) has rows 1,4; 2,5; 3,6, a 3-by-2 result. FLIP keeps two rows and three columns. Choosing the wrong function can therefore create both wrong positions and wrong output dimensions.
For a one-column list 10,20,30, vertical FLIP returns 30,20,10. Horizontal FLIP leaves it unchanged because there is only one column. For a one-row list, the opposite is true: horizontal reversal changes the order, while vertical reversal does nothing.
This makes FLIP useful when a recorded series must be presented in the reverse observation order. It does not know whether the values represent dates, ranks or measurements. Reverse a complete multi-column block when all columns must stay associated with each other.
Advanced: reverse twice and reverse both axes
Applying the same reversal twice restores the original matrix. For example, =FLIP(FLIP(A2:C3,TRUE),TRUE) has rows 1,2,3 and 4,5,6. This is a useful audit control for dimensions and direction.
Applying a vertical reversal and then a horizontal reversal gives rows 6,5,4 and 3,2,1. Reversing the order of these two operations gives the same result. Together they reverse both axes, equivalent to a half-turn of the value grid; they still do not exchange the row and column counts.
A complete two-column table can be reversed vertically without breaking its row associations. Reversing only the numeric column while leaving labels in their old order would instead describe different records. Keep the full intended block in the first argument.
Types, errors and practical limits
The callback duplicates values; it does not use a numeric-only collector. Text and Booleans stay typed values in their new positions. An error stored within an input array is copied into its corresponding output position rather than being converted to text or zero. A whole argument expression that fails before an array is available is a separate evaluation case.
Physically empty entries are also copied as empty values by the source path. Their visible rendering in an array formula was not tested, so this guide does not promise a particular blank-versus-zero display. The numerical examples avoid that ambiguity.
Troubleshooting and transfer
If the result appears to have exchanged rows and columns, check whether TRANSPOSE was used accidentally. If only one value appears, check the complete selected output and array entry. The documented Ctrl+Shift+Enter procedure is guidance from the manual, not a native test performed for this guide.
Use separate output areas for independent controls so one formula does not overwrite another’s source or result. Do not assume a dynamic-spill resize rule, automatic formatting transfer, locale-specific coercion or another product’s function support. Save-file interoperability and actual application rendering remain unverified.