HomeGoogle DocsSpreadsheetCreate a List from Multiple Column Checkboxes in Google Sheets

Create a List from Multiple Column Checkboxes in Google Sheets

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 K V
Prashanth K V
Your Trusted Google Sheets and Excel Expert Prashanth K V 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 Build a Road Trip Fuel Cost Splitter Formula in Google Sheets

Need a fair formula to split fuel costs among travelers on a long road...

Road Trip Fuel Cost Splitter in Google Sheets (Free Template)

When you go on a long road trip with friends, splitting fuel expenses fairly...

Savings Tracker Template in Google Sheets (Free Download)

Managing multiple savings goals can become difficult without a proper system to track your...

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.