Постійне підсумовування стовпця в таблиці організаційного режиму


87

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

Я все пробував. В документи показують, як підвести дві колони разом , але не один.


4
Найкраще, що мені вдалося отримати, - це додати верхню лінію у верхній і нижній частині таблиці і зробити формулу стовпця: = vsum (@I .. @ II)
Mauvis Ledford

Як довідник, я щойно опублікував тут подібне запитання щодо націлювання hline: stackoverflow.com/questions/6689424/ ... Це питання вже набирає голосів, і відповідь може бути іншою, тому тим часом я залишу це питання.
Мовіс Ледфорд,

Відповіді:


61

Призначте назву поля за допомогою ^позначки:

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

Див . Керівництво організації , Розділ-3.5.9 Додаткові функції .


Дякую! Це в кінцевому підсумку працює досить добре, і я добре з цим працюю, однак, зараз я маю "header" hline і "footer" hline з однаковими речами. Чи є шлях до цього, використовуючи лише заголовок hline. У документах це позначення "-", але тоді я не знаю, як використовувати vsum (@ 2 .. @ [останній елемент]).
Мовіс Ледфорд,

4
Ви також можете це зробити#+TBLFM: @row$col=vsum(@1..@-1)
mgalgs

7
Я отримуюUnknown field: x
лампа розжарювання

Я також отримав невідоме поле. Прочитайте посібник, в основному у наведеному вище прикладі він викликає рядок над ^ xx, так що 6 обчислюється на основі vsum 1, 2, 3.
Яфір,

58

Останній рядок таблиці - @> наприклад, щоб отримати суму для третього стовпця в останньому рядку, можна скористатися формулою

@>$3=vsum(@2..@-1)

Можливо, вам доведеться адаптувати @2, якщо у вас немає заголовка ...


40

Ще одна можливість дозволяє використовувати горизонтальні лінії ( @I, @IIі т.д.) , які можуть бути використані в будь-якому випадку структурувати таблицю:

| What  |    $$ |
|-------+-------|
| Ice   |  3.00 |
| Soda  |  6.49 |
| Gin   |  4.99 |
|-------+-------|
| Total | 14.48 |
#+TBLFM: @>$2=vsum(@I..@II)

Не маючи заголовка, нехай сума починається з того @0, що вже пропонували інші.

Редагувати: Я щойно побачив, що ви написали це самі вже в коментарі до свого запитання.


Мені знадобилася хвилина, щоб зрозуміти, що @I та @II посилаються на горизонтальні правила, але я думаю, що це найпростіший спосіб зробити це, якщо ви організуєте свій стіл таким чином.
три вечора

9

Ви можете спробувати це:

$<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)

0
|  3 |
|  2 |
|  5 |
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)

@1відноситься до 1-го рядка та @-1до рядка, що передує тому, що містить формулу. Ця формула ігнорує hlines:

|  3 |
|  2 |
|  5 |
|----|
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)

0

Щось, що може бути не очевидним для читача, це функція vsum()не sum ()

Інша річ полягає в @2..@-1тому, що річ - це посилання на мітку для рядка, що підсумовується. Справа $A$1в Excel подібна до @1$1такої, тому посилання на vsum(@2..@-1)це говорить: "зробіть суму значень із стовпця, використовуючи як індекс рядка @значення в діапазоні 2, до -1-го (тобто другого останнього) рядка, але стовпець "дане" в цьому, тому його vsum застосовується, [@2$col @3$col @4$col... @-1$col]якщо ви намагаєтеся перенести ці поняття в Excel

Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.