WRAPCOLS Function in Google Sheets

Published on

The WRAPCOLS function in Google Sheets is a powerful array function designed to transform a single row or column into multiple columns. It simplifies the process of reshaping data into a two-dimensional array format.

While we can use a combination of OFFSET, QUERY, or even VLOOKUP with SEQUENCE to achieve similar results, most of these methods are more complex. The WRAPCOLS function offers a straightforward and efficient solution.

In a recent tutorial, I also introduced its counterpart, WRAPROWS. But how do these two functions differ in functionality?

  • WRAPCOLS arranges data in columns.
  • WRAPROWS arranges data in rows.

WRAPCOLS Function: Syntax and Arguments

Syntax:

WRAPCOLS(range, wrap_count, [pad_with])

Arguments:

  • range: The array or range of values to wrap. This range can be either a single row or a single column.
  • wrap_count: The maximum number of values for each column in the output. If this value isn’t a whole number (e.g., 5.5), the function rounds it down to the nearest integer.
  • pad_with: (Optional) A value to replace #N/A in blank cells when the data doesn’t perfectly fit into the specified columns.

Example of WRAPCOLS Function Usage

Consider the following example: Q1, Q2, Q3, and Q4 month-wise sales values are listed in a column under corresponding labels. You want to transform this data into separate columns for each quarter.

Examples of WRAPCOLS Function in Google Sheets

Here’s the WRAPCOLS formula I used in cell D3:

=WRAPCOLS(B3:B18, 4)

In this example:

  • The range is B3:B18, containing the sales data.
  • The wrap_count is 4, which means the data will be wrapped into four columns.

This is a more efficient approach compared to older methods. Previously, I might have used the following formula as an alternative:

=ARRAYFORMULA(VLOOKUP(TRANSPOSE(SEQUENCE(4, 4, ROW(B3))), {ROW(B3:B18), B3:B18}, 2, 0))

This combination of SEQUENCE, VLOOKUP, and ARRAYFORMULA can achieve similar results, but it’s more complex and less intuitive than using WRAPCOLS.

Using the pad_with Argument

The pad_with argument can be used to handle missing data. For example:

=WRAPCOLS(A1:A5, 3)
Purpose of the pad_with Argument in the WRAPCOLS Function

In this case, the range A1:A5 contains five elements, but the wrap_count is 3. This means the last cell in the second column will be blank, and by default, the function will return #N/A.

To replace #N/A with a custom value, such as “no value,” use the pad_with argument like this:

=WRAPCOLS(A1:A5, 3, "no value")

Sorting Data in a Two-Dimensional Array

Let’s now explore how to use the WRAPCOLS function as part of sorting a 2D array.

Imagine we have monthly sales data for Q1, Q2, Q3, and Q4 in the range D3:G6.

WRAPCOLS Function for Sorting a Two-Dimensional Array

How can we sort the values within each quarter in ascending or descending order? And what role does the WRAPCOLS function play in this process?

Sorting in Ascending Order

To sort the sales data for each quarter, we’ll break the formula down step by step:

Copy the field labels (Q1, Q2, Q3, Q4) from cells D3:G3 and paste them into D10:G10.

We have a 3×4 matrix (3 rows and 4 columns) of sales data, excluding the header. Use the following MAKEARRAY formula in cell D11 to generate a matrix of similar dimensions:

=MAKEARRAY(3, 4, LAMBDA(r, c, c + 0))
Role of MAKEARRAY in Sorting a 2D Array

Flatten this array to convert it into a single column:

=FLATTEN(MAKEARRAY(3, 4, LAMBDA(r, c, c + 0)))

Next, flatten the actual sales data (excluding the labels):

=FLATTEN(D4:G6)

Combine the two flattened arrays into a two-column array:

={FLATTEN(MAKEARRAY(3, 4, LAMBDA(r, c, c + 0))), FLATTEN(D4:G6)}

Sort the array in ascending order, first by the first column, then by the second column:

=SORT(
   {FLATTEN(MAKEARRAY(3, 4, LAMBDA(r, c, c + 0))), FLATTEN(D4:G6)}, 
   1, 1, 2, 1
)

Extract the sorted sales figures (second column) using INDEX:

=INDEX(
   SORT(
      {FLATTEN(MAKEARRAY(3, 4, LAMBDA(r, c, c + 0))), FLATTEN(D4:G6)}, 
      1, 1, 2, 1
   ), 0, 2
)

Finally, wrap the sorted data back into a two-dimensional array using WRAPCOLS:

=WRAPCOLS(
   INDEX(
      SORT(
         {FLATTEN(MAKEARRAY(3, 4, LAMBDA(r, c, c + 0))), FLATTEN(D4:G6)}, 
         1, 1, 2, 1
      ), 0, 2
   ), 3
)

This formula arranges the sorted sales values into a 3×4 matrix.

Sorting in Descending Order

To sort the sales values in descending order, you only need to modify one parameter in the SORT function:

Change the last 1 to 0 to sort the second column (sales figures) in descending order:

=WRAPCOLS(
   INDEX(
      SORT(
         {FLATTEN(MAKEARRAY(3, 4, LAMBDA(r, c, c + 0))), FLATTEN(D4:G6)}, 
         1, 1, 2, 0
       ), 0, 2
   ), 3
)

And that’s how you can use the WRAPCOLS function in Google Sheets to wrap data, handle missing values, and sort two-dimensional arrays efficiently.

Thank you for reading! Enjoy exploring the WRAPCOLS function in your sheets.

Prashanth KV
Prashanth KV
Your Trusted Google Sheets and Excel Guide Prashanth KV brings a wealth of experience in Google Sheets and Excel, cultivated through years of work with multinational corporations in Mumbai and Dubai. As a recognized Google Product Expert in Docs Editors, Prashanth shares his expertise through insightful blogging since 2012. Explore his blog for practical tips and guidance on maximizing your spreadsheet skills.

Lookup Values Under Categories in Excel and Google Sheets

We can use a combination of XLOOKUP and VLOOKUP in both Excel and Google...

Extract Items Under a Category from the Same Column in Excel

In Excel, you can use a combination of the XLOOKUP and DROP functions to...

How to Create a Searchable Table in Excel Using the FILTER Function

Finding specific records, or rows containing the required information, is straightforward in Excel using...

Time Sequences in Excel by Minute, Hour, or Second Increments

Creating time sequences, whether by hour, minute, or second increments in Excel, can be...

More like this

XMATCH Row by Row: Finding Values Across a Range in Google Sheets

Using the BYROW function with XMATCH in Google Sheets allows us to match values...

Limit Formula Expansion to a Specific Row in Google Sheets

In this tutorial, I’ll explain how to limit the expansion of an array formula...

3-D Referencing Structured Data Tables in Google Sheets

When you have several tables within a single sheet—not across multiple sheets in a...

LEAVE A REPLY

Please enter your comment!
Please enter your name here

This site uses Akismet to reduce spam. Learn how your comment data is processed.