Постоянное суммирование столбца в таблице режима Org

В таблице режима Emacs, когда у вас есть столбец, полный целых чисел, я знаю, что вы можете сделать C-c + с последующим C-y вставить сумму значений в столбце. Я хочу знать формулу, чтобы поместить в последнюю строку, чтобы всегда суммировать весь столбец.

Я перепробовал все. Документы показывают, как сложить два столбца вместе, но не один.

4 ответа

Решение

Назначьте имя поля, используя ^ отметка:

|---+---|
|   | 1 |
|   | 2 |
|   | 3 |
|---+---|
|   | 6 |
| ^ | x |
|---+---|
#+TBLFM: $x=vsum(@1..@-1)

См. Руководство Org, Раздел 3.5.9 Расширенные функции.

Последний ряд таблицы @>Например, чтобы получить сумму для третьего столбца в последней строке, вы можете использовать формулу

@>$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)
Другие вопросы по тегам