Guide › Formulas

Lists and tables

Columns with several values as lists: split, count, filter, sort, look up, calculate on every item, join; tables of items with their columns.

Many columns hold several values: Dropdown and Tags (Red, Blue), People, Connect boards, Mirror, Files, Subitems. A Long text can hold several lines. In the recipes created from November 2026 these can be handled as lists: counted, filtered, sorted and calculated item by item, then joined back into one text.

The list functions new recipes

They take the list first and work directly on a column with several values: the separator (, ; line breaks |) is found by itself.

Function Gives With Tags = Red, Green, red, Blue
LIST.COUNT(list) How many items 4
LIST.FIRST(list), LIST.LAST(list) The first, the last Red, Blue
LIST.ITEM(list, n) The n-th; -1 is the last, -2 the one before LIST.ITEM({item's Tags}, 2) → Green
LIST.UNIQUE(list) Each item once (upper and lower case count as the same) Red, Green, Blue
LIST.SORT(list, ["desc"]) In order, A to Z and smaller to larger; "desc" reverses Blue, Green, Red, red
LIST.REVERSE(list) Backwards Blue, red, Green, Red
LIST.CONTAINS(list, value) TRUE if the value is there (any case) LIST.CONTAINS({item's Tags}, "blue") → TRUE
LIST.POSITION(list, value) Its position, 0 if it isn’t there LIST.POSITION({item's Tags}, "Green") → 2
LIST.REMOVE(list, value, …) Without those values (any case) LIST.REMOVE({item's Tags}, "red") → Green, Blue
LIST.TAKE(list, n), LIST.SKIP(list, n) The first n; all but the first n (negative n: from the end) LIST.TAKE({item's Tags}, 2) → Red, Green
LIST.COMBINE(list1, list2, …) One list after the other LIST.COMBINE({item's Tags}, "Yellow")
LIST.WHERE(list, x, condition) The items for which the condition is TRUE; x stands for each item LIST.WHERE({item's Tags}, t, LEFT(t, 1) = "R") → Red, red
LIST.EACH(list, x, calculation) The calculation for each item LIST.EACH({item's Tags}, t, LEN(t)) → 3, 5, 3, 4
LIST.LOOKUP(value, where, what, [if missing]) The item of “what” in the position where value is found in “where” see below
LIST.SPLIT(text, [separator]) A list from a text LIST.SPLIT("a/b/c", "/")
LIST.JOIN(list, [separator]) One text, empty items skipped; , by default LIST.JOIN({item's Tags}, " / ")

x in LIST.WHERE and LIST.EACH can be any name: tag, p, email.

Calculating on every item

Operators and functions given a list work on each item, so there’s often no need for LIST.EACH:

=SUM(VALUE(LIST.SPLIT({item's Prices})) * 1.22)      → the total of the prices plus VAT
=UPPER(LIST.SPLIT({item's Tags}))                     → every tag in capitals
=IF(VALUE(LIST.SPLIT({item's Scores})) >= 60, "pass", "fail")

SUM, AVERAGE, MAX, COUNTA and the other totals take the whole list (see Numbers and totals). Text functions are in Texts, date functions in Dates.

Writing a list

A list written into a column becomes one text, its items separated by , . Use LIST.JOIN to choose the separator, for example "; " for several emails, or CHAR(10) for one item per line in a Long text column.

Step by step

The list functions read well one after the other. After a dot, .WHERE, .SORT, .JOIN and the others are the LIST functions:

={item's Tags}.UNIQUE().SORT().JOIN(" / ")                    → Blue / Green / Red
={item's Tags}.WHERE(t, t.LEFT(1) = "R").COUNT()              → 2
={item's Emails}.WHERE(e, e.AFTER("@") = "acme.com").JOIN("; ")

Looking up a value

Two lists in the same order work as a small table. LIST.LOOKUP(value, where, what) finds value in the first and gives what is in the same position in the second:

=LIST.LOOKUP({item's Country}, "IT, FR, DE", "22, 20, 19")     → the VAT rate of the country

Tables of items

MONDAY.ITEMS(column, "Status", "Price") gives the connected items as a table, and MONDAY.GROUP.ITEMS(…) / MONDAY.BOARD.ITEMS(…) the items of the group or of the board (see monday items, people and boards). The first row holds the column names: Name, then the columns you asked for. These functions use them:

Function Gives Example
TABLE.COLUMN(table, "Price") A column of the table, as a list SUM(VALUE(TABLE.COLUMN(MONDAY.ITEMS({item's Orders}, "Amount"), "Amount")))
TABLE.WHERE(table, "Status", "Done") The rows with that value (any case), header included TABLE.COUNT(TABLE.WHERE(MONDAY.ITEMS({item's Tasks}, "Status"), "Status", "Done"))
TABLE.LOOKUP(table, "Name", "Beta", "Price") The Price in the row whose Name is Beta, empty if none
TABLE.COUNT(table) How many rows, the header excluded

A table written into a column becomes one line per row, the header included.

The Excel functions

Who knows Excel 365 or Google Sheets can use the same functions, with their usual arguments:

Function Plain name
TEXTSPLIT(text, separator, [row separator]) LIST.SPLIT
TEXTJOIN(separator, TRUE, list) LIST.JOIN
FILTER(list, condition, [if none]) LIST.WHERE
SORT(list, [column], [1 or -1]), SORTBY(list, by, [1 or -1]) LIST.SORT
UNIQUE(list) LIST.UNIQUE
XLOOKUP(value, where, what, [if not found]), XMATCH(value, list) LIST.LOOKUP, LIST.POSITION (XMATCH gives #N/A when missing)
TAKE, DROP, CHOOSEROWS, CHOOSECOLS, VSTACK, HSTACK, TOCOL, TOROW, TRANSPOSE LIST.TAKE, LIST.SKIP, LIST.COMBINE
ROWS, COLUMNS LIST.COUNT
SEQUENCE(rows, [columns], [start], [step])

LET names a value so it is written once, and LAMBDA writes a calculation that MAP, REDUCE, SCAN, BYROW, BYCOL and MAKEARRAY apply:

=LET(prices, VALUE(LIST.SPLIT({item's Prices})), MAX(prices) - MIN(prices))
=MAP(LIST.SPLIT({item's Tags}), LAMBDA(t, LEN(t)))

TEXTSPLIT gives the parts side by side, the LIST functions one under the other: when mixing them with FILTER or XLOOKUP, use lists made the same way. A calculation is limited to 10,000 values; a larger list gives #CALC!.

MONDAY.LIST.FIRST, MONDAY.LIST.LAST, MONDAY.LIST.ITEM and MONDAY.LIST.UNIQUE, from the first version of these functions, keep working and give a text.

In the recipes created before November 2026

There, several values arrive joined by + (Red+Blue) and can’t be used as lists. Totals of several values work with the MONDAY functions, such as MONDAY.NUMBER.SUM (see Numbers and totals). To use lists, add the recipe again from the General Caster recipes.

Still stuck? Open a ticket or try the formula debugger.