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
      (See(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.