Next: , Previous: The print area, Up: Advanced Features

4.2 Ranges in formulas

A formula like

     (+ A1 A2 A3)

is the sum of three specific cells. If you insert a new second row, the formula becomes

     (+ A1 A3 A4)

and the new row is not included in the sum.

The macro (ses-range from to) evaluates to a list of the values in a rectangle of cells. If your formula is

     (apply '+ (ses-range A1 A3))

and you insert a new second row, it becomes

     (apply '+ (ses-range A1 A4))

and the new row is included in the sum.

While entering or editing a formula in the minibuffer, you can select a range in the spreadsheet (using mouse or keyboard), then paste a representation of that range into your formula. Suppose you select A1-C1:

[S-mouse-3]
Inserts "A1 B1 C1" (ses-insert-range-click)
C-c C-r
Keyboard version (ses-insert-range).
[C-S-mouse-3]
Inserts "(ses-range A1 C1)" (ses-insert-ses-range-click).
C-c C-s
Keyboard version (ses-insert-ses-range).

If you delete the from or to cell for a range, the nearest still-existing cell is used instead. If you delete the entire range, the formula relocator will delete the ses-range from the formula.

If you insert a new row just beyond the end of a one-column range, or a new column just beyond a one-row range, the new cell is included in the range. New cells inserted just before a range are not included.

Flags can be added to ses-range immediately after the to cell.

!
Empty cells in range can be removed by adding the ! flag. An empty cell is a cell the value of which is one of symbols nil or *skip*. For instance (ses-range A1 A4 !) will do the same as (list A1 A3) when cells A2 and A4 are empty.
_
Empty cell values are replaced by the argument following flag _, or 0 when flag _ is last in argument list. For instance (ses-range A1 A4 _ "empty") will do the same as (list A1 "empty" A3 "empty") when cells A2 and A4 are empty. Similarly, (ses-range A1 A4 _ ) will do the same as (list A1 0 A3 0).
>v
When order matters, list cells by reading cells row-wise from top left to bottom right. This flag is provided for completeness only as it is the default reading order.
<v
List cells by reading cells row-wise from top right to bottom left.
v>
List cells by reading cells column-wise from top left to bottom right.
v<
List cells by reading cells column-wise from top right to bottom left.
v
A short hand for v>.
^
A short hand for ^>.
>
A short hand for >v.
<
A short hand for >^.
*
Instead of listing cells, it makes a Calc vector or matrix of it (see Top). If the range contains only one row or one column a vector is made, otherwise a matrix is made.
*2
Same as * except that a matrix is always made even when there is only one row or column in the range.
*1
Same as * except that a vector is always made even when there is only one row or column in the range, that is to say the corresponding matrix is flattened.