Databases
Formulas
Pro A Formula column calculates a value for each row from the other columns of that row: a total with VAT, the days left until a deadline, a status text, an average grade. You write the formula once and every row shows its own result.
Formula columns need the Pro or Premium plan, both yours and the workspace's (your effective plan). If the plan drops later, existing formulas keep working, but you can't turn another column into a formula. Formulas that come with a template arrive on every plan.
Write a formula
- In the Table view, add a column (Add column) or pick an existing one.
- Change its type to Formula with the menu next to the column name.
- A box appears under the header, with the example
{Column} * 2. Type your formula there. - Click outside the box. The formula is saved and every row shows its result.
To change the formula, edit the box again. Results update as soon as you change a value in the row. Formula cells can't be edited by hand.
Syntax
Column references
Write a column's name between braces to use its value in the same row: {Price}, {Due date}, {Exam 1}.
- The name must match exactly, including upper and lower case:
{price}doesn't find a column called "Price". Headers are displayed in capitals, so check the real name by clicking on it. Spaces just inside the braces are ignored. - If no column has that name, the reference is simply empty (it isn't an error). If a formula shows empty results you didn't expect, check the spelling first.
- If you rename a column, update the formulas that use it.
Text and numbers
- Text goes between double quotes:
"Done"," €". Text can't contain a double quote itself. - Numbers use a dot as the decimal separator:
1.21,0.5. Write the leading zero (0.5, not.5). A comma always separates the arguments of a function, so1,21isn't a number.
Operators
| Operator | Meaning | Example | Result |
|---|---|---|---|
+ | Add numbers, or join text | {Price} + 10 | 60 (if Price is 50) |
- | Subtract | {Budget} - {Spent} | |
* | Multiply | {Quantity} * {Unit price} | |
/ | Divide | {Total} / {People} | |
- before a value | Negative | -{Discount} | |
( ) | Group | ({A} + {B}) * 2 | |
== != | Equal, not equal | {Status} == "Done" | True / False |
> < >= <= | Greater, less, greater or equal, less or equal | {Score} >= 5 | True / False |
Multiplication and division are done before addition and subtraction, and comparisons last. Use parentheses when in doubt.
-,*and/turn text into numbers:"10" * 2gives 20. Empty cells and text that isn't a number count as 0.- Comparisons between two numbers compare their values. In any other case both sides are compared as text: exact and case-sensitive for
==and!=, alphabetical for>and<. Dates written asYYYY-MM-DDcompare correctly this way:{Due date} < TODAY().
Joining text with +
+ adds when both sides are numbers; otherwise it joins them as text:
{First name} + " " + {Last name}→Ana García"Total: " + {Amount}→Total: 120
This means that adding a Number column that's empty joins instead of adding: if {A} is 100 and {B} is empty, {A} + {B} + 5 gives 1005. To add up columns that may be empty, use SUM({A}, {B}, 5), which gives 105.
True and false
Comparisons and some functions return a true/false value, shown in the cell as True or False (in Spanish, Verdadero / Falso). There are no true or false keywords; to get one, write a comparison or use a Checkbox column.
When a value is used as a condition (in IF, AND, OR, NOT, EMPTY and DEFAULT):
- It counts as true if it's True or a checked box, any number other than 0, or any text that isn't blank.
- It counts as false if it's False or an unchecked box, 0, empty text or only spaces, or an empty cell.
Empty results and division by zero
- Dividing by zero gives an empty result instead of an error. If you keep calculating with it, the empty value counts as 0:
({A} / 0) * 5gives 0. - Date functions give an empty result when a date is missing or can't be read.
#ERROR
If the formula can't be read, every cell shows #ERROR. Common causes:
- A missing
),}or closing". - A misspelled function name, or a word that isn't a function (for example
true, or a column name without braces). - A character the language doesn't know, such as
%,^,&,;or single quotes. - A number starting with a dot, like
.5. - An accented function name: write
VACIO,ANIOandDIA, without accents.
Which columns a formula can read
| Column type | Value in the formula |
|---|---|
| Text | The text |
| Number | The number (empty if the cell is empty) |
| Select | The option's label, for example "In progress" |
| Date | The date as text YYYY-MM-DD, for example "2026-10-15" |
| Checkbox | True or False (empty if the box was never touched, which also counts as false) |
| Person, URL, Phone, Created by, Last edited | Empty |
| Formula, Relation, Rollup | Empty |
A formula can't read another formula. If you need the result of one formula inside another, repeat its expression.
Functions
Every function has a Spanish name and an English name, and both work in any language: IF(...) and SI(...) are the same. Names are case-insensitive (if, If and IF all work) and are always followed by parentheses, even without arguments: TODAY().
Arguments are separated by commas and can be values, column references, operations or other functions.
Logic
| Spanish | English | Signature | Returns | Example |
|---|---|---|---|---|
SI | IF | IF(condition, if_true, if_false) | if_true when the condition is true, otherwise if_false. If you leave out if_false, the result is empty. | IF(7 >= 5, "Pass", "Fail") → Pass |
Y | AND | AND(value1, value2, …) | True if all values are true. Any number of values. | AND(3 > 1, 2 > 5) → False |
O | OR | OR(value1, value2, …) | True if at least one value is true. | OR(3 > 1, 2 > 5) → True |
NO | NOT | NOT(value) | The opposite: True becomes False and vice versa. | NOT(2 > 5) → True |
VACIO | EMPTY | EMPTY(value) | True if the value counts as false: an empty cell, blank text, 0 or an unchecked box. | EMPTY(" ") → True |
SINO | DEFAULT | DEFAULT(value, fallback) | value if it counts as true, otherwise fallback. A value of 0 also uses the fallback. | DEFAULT("", "No name") → No name |
Text
| Spanish | English | Signature | Returns | Example |
|---|---|---|---|---|
CONCATENAR | CONCAT | CONCAT(value1, value2, …) | All values joined into one text. Empty cells add nothing; numbers are written as they are; True/False become true / false. | CONCAT("Room ", 12, "B") → Room 12B |
MAYUSC | UPPER | UPPER(text) | The text in capital letters. | UPPER("draft") → DRAFT |
MINUSC | LOWER | LOWER(text) | The text in lowercase. | LOWER("ES-12") → es-12 |
RECORTAR | TRIM | TRIM(text) | The text without spaces at the start and end. Spaces in the middle are kept. | TRIM(" Tylode ") → Tylode |
LARGO | LEN | LEN(text) | The number of characters. An empty cell gives 0. | LEN("Tylode") → 6 |
CONTIENE | CONTAINS | CONTAINS(text, search) | True if text includes search. Ignores upper and lower case. | CONTAINS("Urgent bug", "BUG") → True |
SUSTITUIR | REPLACE | REPLACE(text, search, replacement) | The text with every occurrence of search replaced by replacement. Case-sensitive. | REPLACE("2026-09-23", "-", "/") → 2026/09/23 |
Numbers
| Spanish | English | Signature | Returns | Example |
|---|---|---|---|---|
SUMA | SUM | SUM(value1, value2, …) | The total. Empty cells and text that isn't a number count as 0. | SUM(600, 250, 20) → 870 |
PROMEDIO | AVERAGE | AVERAGE(value1, value2, …) | The sum divided by how many values you pass, empty ones included (as 0). With no values, 0. | AVERAGE(7, 8, 9) → 8 |
MIN | MIN | MIN(value1, value2, …) | The smallest value. Empty cells count as 0. With no values, empty. | MIN(4, 2, 9) → 2 |
MAX | MAX | MAX(value1, value2, …) | The largest value. Empty cells count as 0. With no values, empty. | MAX(4, 2, 9) → 9 |
ABS | ABS | ABS(number) | The value without its sign. | ABS(-3) → 3 |
REDONDEAR | ROUND | ROUND(number, decimals) | The number rounded to decimals places. Without decimals, to a whole number. Negative decimals count as 0 and decimals like 1.7 count as 1. Halves round up: 2.5 → 3, −2.5 → −2. | ROUND(3.14159, 2) → 3.14 |
Dates
Date functions accept a Date column, the result of TODAY(), NOW() or DATEADD(), or a text date written as "YYYY-MM-DD". Other formats, such as "31/12/2026", can't be read and give an empty result.
| Spanish | English | Signature | Returns | Example |
|---|---|---|---|---|
HOY | TODAY | TODAY() | Today's date as YYYY-MM-DD (based on UTC time). | TODAY() → 2026-09-23 |
AHORA | NOW | NOW() | The current date and time in ISO format, in UTC. | NOW() → 2026-09-23T14:05:12.000Z |
ANIO | YEAR | YEAR(date) | The year. | YEAR("2026-09-23") → 2026 |
MES | MONTH | MONTH(date) | The month, from 1 to 12. | MONTH("2026-09-23") → 9 |
DIA | DAY | DAY(date) | The day of the month, from 1 to 31. | DAY("2026-09-23") → 23 |
DIASENTRE | DATEDIFF | DATEDIFF(start, end) | Whole days from start to end (end minus start). Negative if end is before start. | DATEDIFF("2026-01-01", "2026-12-31") → 364 |
SUMARDIAS | DATEADD | DATEADD(date, days) | The date plus days, as YYYY-MM-DD. Negative days go back in time; decimals are dropped. | DATEADD("2026-01-31", 1) → 2026-02-01 |
DIASLABORABLES | WORKDAYS | WORKDAYS(start, end) | The number of weekdays (Monday to Friday) after start up to and including end. Doesn't know about public holidays. Negative if end is before start; 0 if both are the same day. | WORKDAYS("2026-09-21", "2026-09-25") → 4 |
Recipes
Each recipe uses example column names; replace them with yours. They're written with the English function names, but the Spanish ones work the same.
Days until the due date
DATEDIFF(TODAY(), {Due date})Positive: days left. 0: it's due today. Negative: days overdue. Empty if there's no date.
Overdue flag
AND(NOT({Done}), NOT(EMPTY({Due date})), {Due date} < TODAY())True for unfinished tasks whose date has passed. The EMPTY check matters: without it, rows with no date would count as overdue, because an empty date compares as earlier than any date.
Status text
IF({Done}, "Done", IF(EMPTY({Due date}), "No date", IF({Due date} < TODAY(), "Late", "On time")))Nested IFs give one of four labels. Use the same pattern for any "if this, else if that" rule.
Line total with VAT
ROUND({Quantity} * {Unit price} * 1.21, 2)With a quantity of 3 and a unit price of 19.99, gives 72.56. Without ROUND you'd see 72.5637. Change 1.21 to your VAT rate (1.10 for 10 %, 1.04 for 4 %). To show the currency, add it as text: ROUND({Quantity} * {Unit price} * 1.21, 2) + " €".
Add up columns that may be empty
SUM({Rent}, {Utilities}, {Internet})Use SUM rather than + when some cells may be empty: empty cells count as 0 instead of turning the result into joined text.
Full name
TRIM(CONCAT({First name}, " ", {Last name}))Joins the two names with a space. TRIM removes the stray space when one of them is empty.
Grade average and pass or fail
ROUND(AVERAGE({Exam 1}, {Exam 2}, {Exam 3}), 2)A missing grade counts as 0 in the average. For a weighted grade, multiply each part by its weight:
ROUND({Exam} * 0.6 + {Coursework} * 0.4, 1)And for a pass/fail label based on a Number column called "Grade":
IF({Grade} >= 5, "Pass", "Fail")Working days between two dates
WORKDAYS({Start}, {End})From Monday 21 to Friday 25 September 2026 gives 4: it counts Tuesday to Friday. Add 1 (WORKDAYS({Start}, {End}) + 1) if the start day should count too. Public holidays aren't taken into account.
End date from a start and a duration
DATEADD({Start}, {Duration})With a Start of 2026-09-21 and a Duration of 10, gives 2026-10-01. The result is text: it's shown in the table but can't place the row on a Calendar or Timeline view, which need a real Date column.
Fallback value
DEFAULT({Nickname}, {First name})Shows the nickname when there is one, and the first name otherwise. Handy for display names, contact emails or any "use this, or else that" rule.
Limitations
- Formulas can't read Person, URL, Phone, Created by, Last edited, Relation, Rollup or other Formula columns.
- Formula results can't be filtered or sorted in views. They can be summed or averaged in a chart view, but not used as a rollup target.
- Results are shown as they come: numbers use a dot for decimals and long decimals aren't shortened (use
ROUND). A formula that returns a date gives text, not a Date value. - There's no autocomplete or function help while typing: keep this page at hand.