🐟🥖🧺 Transpose Columns to an Inline List: The Miracle Method

I’m often asked how to take columns of data (say form responses) and display them in an inline list. Here’s one way to do it—the MIRACLE METHOD.


The template column as “current user” is genius and opens A LOT of doors for me. Thank you!


Good tutorial! Unfortunately, if it needs more items - you need to do all additional setup with the developer in columns. (I mean, it cannot be left to users to maintain it themselves)

This is true…they’d have to create a new ITE column for each item and append that template column in Glide…

There’s probably a way to use spreadsheet formulas instead, but I was trying to do it all in Glide.

Totally agree. It has become one the staple tactics I implement into any new app.
Props to @Robert_Petitto!

1 Like


1 Like

Not sure if this is better, but if you have to set up columns for new items, wouldn’t it cost less columns to achieve this by the following method? I’m only using a screenshot of the table from your video to get the badges name for my example.

Use an If Then Else column, if Badges is Non-Smoker then you return the user’s Non-Smoker boolean, you continue that until Hydrates Regularly.

Then you can still do an inline list and filter that by is true/is not true.

Would it work?

Hm…that’s a great idea too! Probably less intensive for sure.

1 Like

We don’t need that long transpose formula anymore. Miracle job @Robert_Petitto

1 Like


I just needed to transpose an array and used an alternative method:

  • the new slice array plugin: Slice Array column • Glide (glideapps.com)
  • with two helper columns for the slice function:
    start | end
    0 | 1
    1 | 2
    2 | 3
    … | …
  • and a “joined list column” of that sliced array elements to have one element as text per row.

Care to share an example?

I also had a use case for a variation of this method just today. I needed to dynamically generate a list for a choice component that included the month names for each of the previous six months.

  • Started with a series of 6 math columns to determine the 1st day of each of the previous 6 months
  • Then a template column to join those together into a comma separated list
  • A split text column to turn that into an array
  • And finally the single value trick, using N from start

This is a really useful method, and I’ve found lots of use cases :+1:


In my use case I have teams with email addresses in an array of User1, User2, User3,… (and row owners).
I wanted to filter another sheet’s list (which user added what data?) though a choice component fed by the transposed user array (screen variable).
And I even could make an “all user” choice with the values of “start:0"and end:Number of last user” in the helper columns.

1 Like

Perfect method, also to solve the problem of feeding a choice from an array … with some modifications, but the concept is always the same:
I use an additional “all purpose” table as if it were an array.
It was particularly useful for managing product sizes and colors.

1 Like

This is pure gold! Fantastic job!

1 Like

Hi, basic question, but in DataEditor, could we use an excel formula “Transpose”?
(even if I don’t manage to do it :slight_smile: )

Unfortunately no, Glide doesn’t know how to handle that formula.

1 Like

Hi @Robert_Petitto, thank you again.
Another question: can we do it the other way round?

My use case:

Sheet 1:
Dozens of questions in 1 column + answers in 1 user specific column.
I want to transpose answers then “add row” into Sheet 2 (below).


Sheet 2:
The same questions but positioned by column (like if it was a questionnaire in a form).
I try this approach because I have many calculations to do per question.
If I directly collect answers in Sheet 2 (by column), I have to duplicate these calculations for each column.
While with the Sheet 1 approach, I can have only 1 column per calculation for all questions.

Thank you!


I’m trying to apply this method.
But how to clear entire column after submitting the answer?

Thank you!!!

You can use some tricks for that… but doing that in a Glide table… not possible yet.