ses: Ranges in formulas
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
((calc)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.