Permanently summing a column in an Org-mode table
In an Emacs Org-mode table, when you have a column full of integers I know you can do C-c +
followed by C-y
to paste the sum of the values in the column. I want to know the formula to place in the last row to always sum the whole column.
I've tried everything. The docs show you how to sum two columns together but not one.
Solution 1:
The last row of a table is @>
For example to get the sum for the third column in the last line, you can use the formula
@>$3=vsum(@2..@-1)
Maybe you have to adapt the @2
, if you don't have a header line...
Solution 2:
Assign a field-name using the ^
mark:
|---+---|
| | 1 |
| | 2 |
| | 3 |
|---+---|
| | 6 |
| ^ | x |
|---+---|
#+TBLFM: $x=vsum(@1..@-1)
See The Org Manual, Section-3.5.9 Advanced Features.
Solution 3:
Yet another possibility makes use of horizontal lines (@I
, @II
, etc.) which are useful anyways to structure your table:
| What | $$ |
|-------+-------|
| Ice | 3.00 |
| Soda | 6.49 |
| Gin | 4.99 |
|-------+-------|
| Total | 14.48 |
#+TBLFM: @>$2=vsum(@I..@II)
Without a header, hust let the sum start at @0
as suggested by others already.
Edit: I just saw that you wrote this yourself already in a comment to your question.
Solution 4:
You can try this:
$<col_num>=<func>(@2..@-1))
@2
is static. It refers to the 2nd row onwards.
@-1
refers to the second to last row.
I think this was the easiest and non-intrusive way. It preserves your column names and does not clutter up the visual space. It does not require you to address the last row. It is addressed by default.
Rows can be added/removed. No other markers.
eg.#+TBLFM: $3=vmean(@2..@-1)::$4=vsum(@2..@-1))
Sample table
| Time | Input | Test | InQty |
| <2018-03-13 Tue 06:15> | Water | | 200 |
| <2018-03-13 Tue 07:03> | | | |
| | | | |
| <2018-03-13 Tue 07:31> | Water | | 180 |
| <2018-03-13 Tue 09:00> | Chai | | 240 |
| <2018-03-13 Tue 11:30> | Chai | | 240 |
| <2018-03-13 Tue 16:01> | Water | | 60 |
| | | | |
|------------------------+-------------------+-----------+-------|
| | | | 920 |
#+TBLFM: $4=vsum(@2..@-1)