Next: Column formulas, Previous: Durations and time values, Up: The spreadsheet

To assign a formula to a particular field, type it directly into the field,
preceded by ‘`:=`’, for example ‘`:=vsum(@II..III)`’. When you press
<TAB> or <RET> or `C-c C-c` with the cursor still in the field,
the formula will be stored as the formula for this field, evaluated, and the
current field will be replaced with the result.

Formulas are stored in a special line starting with `#+TBLFM:`

directly
below the table. If you type the equation in the 4th field of the 3rd data
line in the table, the formula will look like ‘`@3$4=$1+$2`’. When
inserting/deleting/swapping columns and rows with the appropriate commands,
*absolute references* (but not relative ones) in stored formulas are
modified in order to still reference the same field. To avoid this, in
particular in range references, anchor ranges at the table borders (using
`@<`

, `@>`

, `$<`

, `$>`

), or at hlines using the
`@I`

notation. Automatic adaptation of field references does of course
not happen if you edit the table structure with normal editing
commands—then you must fix the equations yourself.

Instead of typing an equation into the field, you may also use the following command

`C-u C-c = (``org-table-eval-formula`

`)`-
Install a new formula for the current field. The command prompts for a
formula with default taken from the
`#+TBLFM:`

line, applies it to the current field, and stores it.

The left-hand side of a formula can also be a special expression in order to
assign the formula to a number of different fields. There is no keyboard
shortcut to enter such range formulas. To add them, use the formula editor
(see Editing and debugging formulas) or edit the `#+TBLFM:`

line
directly.

`$2=`

- Column formula, valid for the entire column. This is so common that Org
treats these formulas in a special way, see Column formulas.
`@3=`

- Row formula, applies to all fields in the specified row.
`@>=`

means the last row. `@1$2..@4$3=`

- Range formula, applies to all fields in the given rectangular range. This
can also be used to assign a formula to some but not all fields in a row.
`$name=`

- Named field, see Advanced features.