Ссылка , которую @manandearth разместил в комментариях, описывает, как дублировать (возможно, с небольшими изменениями) записи в столбце.Вкратце, нажатие S-RET
в ячейке дублирует ее содержимое из указанной выше ячейки (если она не пустая) - если ячейка заполнена, а следующая ячейка пуста, то она дублирует всю ячейку до пустой ячейки.Если содержимое является числовым, то «дублирование» включает в себя небольшую модификацию: оно увеличивает значение на 1. То же самое происходит с датой: она увеличивает дату до следующего дня (но дата должна быть в формате, который соответствует режиму Orgраспознает: либо активную дату <YYYY-MM-DD>
, либо неактивные данные [YYYY-MM-DD]
).Приращение по умолчанию равно 1 в этих случаях, но его можно установить в другое значение, установив для переменной org-table-copy-increment
другое значение.Это «интерактивный» случай, который я упоминаю в своем комментарии.
Другой способ заполнить столбец в таблице - использовать формулу.Например, вот формула для заполнения первого столбца копией первой записи в столбце:
#+TBLFM: @3$1..@>$1 = @2$1
Это говорит: Set all rows from row 3 (@3) to the last row (@>) of column 1 ($1) to the value of the cell in row 2 (@2), column 1 ($1)
.Обратите внимание, что строка 1 является заголовком.Нажмите C-c C-c
в строке формулы таблицы выше и ... подождите, что случилось?
|------------+-------+------------+--------+--------+------------|
| Date | Items | Unit Price | Amount | Amount | Categories |
|------------+-------+------------+--------+--------+------------|
| 2019/09/17 | A | 2.64 | 1 | 2.64 | materials |
| 13.196078 | B | 52.67 | 2 | 105.34 | diagnosis |
| 13.196078 | C | 3.08 | 1 | 3.08 | materials |
| 13.196078 | D | 3.85 | 2 | 7.7 | materials |
| 13.196078 | E | 33.66 | 2 | 67.32 | materials |
| 13.196078 | F | 40 | 1 | 40 | treatments |
| 13.196078 | G | 16.5 | 1 | 16.5 | materials |
| 13.196078 | H | 4 | 3 | 12 | treatments |
| 13.196078 | I | 40 | 1 | 40 | bed |
| 13.196078 | M | 6 | 13 | 78 | treatments |
|------------+-------+------------+--------+--------+------------|
#+TBLFM: @3$1..@>$1 = @2$1
В данном случае это не совсем работает по технической причине: в режиме Org в вычислениях формулы таблицы используется Calc.Calc смотрит на 2019/09/17
и говорит: «Ага, я должен разделить 2019 на 9, а затем разделить результат на 17», и заполняет оставшуюся часть столбца результатом делений: 13.196078
.Возможно, вы имели в виду 2019/09/17
, чтобы быть датой, но режим Org этого не знает: он передает его Calc, который интерпретирует его как арифметическое выражение.Решение здесь такое же, как и в связанном ответе: уведомите режим Org о том, что это date , сделав его активной датой: <2019-09-17>
или неактивной датой: [2019-09-17]
:
|------------------+-------+------------+--------+--------+------------|
| Date | Items | Unit Price | Amount | Amount | Categories |
|------------------+-------+------------+--------+--------+------------|
| [2019-09-17] | A | 2.64 | 1 | 2.64 | materials |
| [2019-09-17 Tue] | B | 52.67 | 2 | 105.34 | diagnosis |
| [2019-09-17 Tue] | C | 3.08 | 1 | 3.08 | materials |
| [2019-09-17 Tue] | D | 3.85 | 2 | 7.7 | materials |
| [2019-09-17 Tue] | E | 33.66 | 2 | 67.32 | materials |
| [2019-09-17 Tue] | F | 40 | 1 | 40 | treatments |
| [2019-09-17 Tue] | G | 16.5 | 1 | 16.5 | materials |
| [2019-09-17 Tue] | H | 4 | 3 | 12 | treatments |
| [2019-09-17 Tue] | I | 40 | 1 | 40 | bed |
| [2019-09-17 Tue] | M | 6 | 13 | 78 | treatments |
|------------------+-------+------------+--------+--------+------------|
#+TBLFM: @3$1..@>$1 = @2$1
Это не делает автоматического приращения, но если это то, что вам нужно, это легко сделать: Calc может выполнять вычисления по датам, поэтому мы можем увеличивать ежедневно, добавляя к дате в каждой строке номер строки минус 2 (например,строка 3 получит приращение 3-2 = 1, строка 4 получит 4-2 = 2 и т. д.).Для этого вам нужно получить номер текущей строки : идиома @#
.Тогда формула становится:
#+TBLFM: @3$1..@>$1 = @2$1 + @# - 2
и таблица становится:
|------------------+-------+------------+--------+--------+------------|
| Date | Items | Unit Price | Amount | Amount | Categories |
|------------------+-------+------------+--------+--------+------------|
| [2019-09-17] | A | 2.64 | 1 | 2.64 | materials |
| [2019-09-18 Wed] | B | 52.67 | 2 | 105.34 | diagnosis |
| [2019-09-19 Thu] | C | 3.08 | 1 | 3.08 | materials |
| [2019-09-20 Fri] | D | 3.85 | 2 | 7.7 | materials |
| [2019-09-21 Sat] | E | 33.66 | 2 | 67.32 | materials |
| [2019-09-22 Sun] | F | 40 | 1 | 40 | treatments |
| [2019-09-23 Mon] | G | 16.5 | 1 | 16.5 | materials |
| [2019-09-24 Tue] | H | 4 | 3 | 12 | treatments |
| [2019-09-25 Wed] | I | 40 | 1 | 40 | bed |
| [2019-09-26 Thu] | M | 6 | 13 | 78 | treatments |
|------------------+-------+------------+--------+--------+------------|
#+TBLFM: @3$1..@>$1 = @2$1+ @# - 2
Различные аномалии отображения дат (мы включаем день недели? Включаем ли мывремя?) можно обойти, используя org-time-stamp-custom-formats
, но это уводит нас в воды, которые я не исследовал.