Create a List from Multiple Column Checkboxes in Google Sheets

Published on

With the help of the FILTER function, we can easily create a list from a single column of checked checkboxes in Google Sheets.

But what if there are multiple columns with checkboxes? Instead of copying the formula for each column, we can use BYCOL to apply FILTER across multiple columns in one go.

Google Sheets list updating dynamically when toggling multiple column checkboxes

Introduction to Creating a List from Multiple Column Checkboxes

I have a list of vegetables (items) in the first column, and customers’ selections are in the next three columns.

I want to create a customer-wise list of selected items, so that the output shows customer names with their chosen items, instead of just checkboxes.

As mentioned, we can either use a drag-down formula or a dynamic array formula. Both are simple to apply and understand.

1. Create a Non-Dynamic List from Checked Checkboxes

The sample data is in A2:D7. Let’s create the list starting from column F.

Example data with multiple column checkboxes and expected list of selected items in Google Sheets

In F2, insert the following formula:

=VSTACK(B2, FILTER($A$3:$A$7, B3:B7))

Copy it to G2 and H2.

Here’s how it works:

  • The formula filters the vegetables in A3:A7 if the checkbox in B3:B7 is checked.
  • The vegetable list range $A$3:$A$7 is absolute, so it won’t change when copied across.
  • The checkbox range B3:B7 is relative, so it adjusts automatically for each column.
  • VSTACK adds the column header (customer name) on top of the filtered list.

This is the easiest way to create a list from multiple column checkboxes in Google Sheets.

The next method avoids copying formulas across columns.

2. Create a Dynamic List from Multiple Column Checkboxes

If you want the whole result in one go, use this dynamic array formula in F2:

=VSTACK(B2:D2, BYCOL(B3:D7, LAMBDA(col, FILTER(A3:A7, col))))

This formula generates the complete list in a single step.

How the Formula Works

  • FILTER(A3:A7, col) → returns the vegetables where the checkbox is checked.
  • BYCOL(B3:D7, …) → applies this logic to each column of checkboxes.
  • VSTACK(B2:D2, …) → adds the header row (customer names) above the results.

Additional Tip: Excluding Columns Without Labels

In the above example, we generated a three-column dynamic list.

With the drag-down formula, you can choose which columns to include. But the dynamic array formula doesn’t skip empty headers by default.

This becomes important if you have several checkbox columns, but some don’t have labels. For example, if you remove the label "Customer 2", you probably don’t want that column in the output.

To omit unlabeled columns, use this adjusted formula:

=VSTACK(
  FILTER(B2:D2, B2:D2<>""), 
  BYCOL(FILTER(B3:D7, B2:D2<>""), LAMBDA(col, FILTER(A3:A7, col)))
)

This version filters both the headers and the corresponding checkbox columns, removing any without labels.

Example Sheet

Resources

Prashanth KV
Prashanth KV
Your Trusted Google Sheets and Excel Expert Prashanth KV is a Diamond Product Expert in Google Sheets, officially recognized by Google for his contributions to the Docs Editors Help Community and featured in the Google Product Experts Directory. Explore his blog to learn advanced formulas, automation tips, and problem-solving techniques to elevate your spreadsheet skills.

Top Discussions

More like this

How to Sort and Filter Pivot Tables in Google Sheets (Complete Guide)

Sorting and filtering are two of the most important techniques for analyzing data in...

Pivot Table Formatting, Output & Special Behavior in Google Sheets

Pivot Tables in Google Sheets are powerful—but they can get tricky once you move...

Pivot Table Calculations & Advanced Metrics in Google Sheets

When it comes to built-in tools for data analysis and visualization in Google Sheets,...

4 COMMENTS

  1. Hi,

    Is there a way to create a list like this, but instead of checkboxes, it’s a drop-down?

    My use case is for creating a list of attendees for various meetings throughout the month.

    Instead of a yes/no of who should be invited, I’d like it to be Mandatory/Optional/Not Invited.

    Thanks!

    • Hi, QB,

      I assume your data is as follows.

      B2:D2 (top row) – Attendee names.
      B3:D33 – Drop-downs to select the text Mandatory/Optional/Not Invited.
      A3:A33 – Dates.

      If so, please try the following formula to create the list from multiple-column drop-down boxes.

      ={B2:D2;ArrayFormula(ifna(transpose(split(transpose(bycol(B3:D33,
      lambda(c, join("|",filter(A3:A33,c="Mandatory"))))),"|"))))}

      As you can see, there are not many changes in the formula.

      Format the result, except the top row, to dates (Format > Number > Date).

  2. Is there a way to have the list not show if there is nothing in the header (where your customer number is)?

    I am doing this for a grading sheet.

    • Hi, TE,

      I’ve updated my sample sheet and the tutorial above.

      Please see the tab “Dynamic – New (Excluded Blank Header Columns)” in my sample Sheet.

      I hope that help.

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.