Постоянное суммирование столбца в таблице режима Org
В таблице режима Emacs, когда у вас есть столбец, полный целых чисел, я знаю, что вы можете сделать C-c +
с последующим C-y
вставить сумму значений в столбце. Я хочу знать формулу, чтобы поместить в последнюю строку, чтобы всегда суммировать весь столбец.
Я перепробовал все. Документы показывают, как сложить два столбца вместе, но не один.
4 ответа
Назначьте имя поля, используя ^
отметка:
|---+---|
| | 1 |
| | 2 |
| | 3 |
|---+---|
| | 6 |
| ^ | x |
|---+---|
#+TBLFM: $x=vsum(@1..@-1)
Последний ряд таблицы @>
Например, чтобы получить сумму для третьего столбца в последней строке, вы можете использовать формулу
@>$3=vsum(@2..@-1)
Может быть, вы должны адаптировать @2
, если у вас нет строки заголовка...
Еще одна возможность использует горизонтальные линии (@I
, @II
и т. д.) которые в любом случае полезны для структурирования таблицы:
| What | $$ |
|-------+-------|
| Ice | 3.00 |
| Soda | 6.49 |
| Gin | 4.99 |
|-------+-------|
| Total | 14.48 |
#+TBLFM: @>$2=vsum(@I..@II)
Без заголовка, пусть сумма начинается с @0
как уже предлагали другие.
Изменить: Я только что видел, что вы написали это сами уже в комментарии к вашему вопросу.
Вы можете попробовать это:
$<col_num>=<func>(@2..@-1))
@2
статичен Это относится ко 2-му ряду и далее.@-1
относится ко второму и последнему ряду.
Я думаю, что это был самый простой и ненавязчивый способ. Он сохраняет названия ваших столбцов и не загромождает визуальное пространство. Не требуется, чтобы вы обращались к последнему ряду. Он адресован по умолчанию.
Строки могут быть добавлены / удалены. Других маркеров нет.
например.#+TBLFM: $3=vmean(@2..@-1)::$4=vsum(@2..@-1))
Образец таблицы
| 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)
Что-то, что может быть не очевидно для читателя, - это то, что функция
vsum()
не сумма ()
Другое дело, что
@2..@-1
вещь, является ссылкой на метку строки для суммируемого столбца. В
$A$1
вещь в Excel похожа на
@1$1
так что ссылка на
vsum(@2..@-1)
говорит: "просуммируйте значения из столбца, используя в качестве индекса строки
@
значение в диапазоне 2, до -1-й (то есть второй последней) строки, но столбец является "заданным" в этом, поэтому его vsum применяется к
[@2$col @3$col @4$col... @-1$col]
если вы попытаетесь сопоставить эти концепции с Excel
| 3 |
| 2 |
| 5 |
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
@1
относится к 1-й строке, а @-1
к строке, предшествующей строке, содержащей формулу. Эта формула игнорирует hlines:
| 3 |
| 2 |
| 5 |
|----|
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)