假设组织表格中有这样的电子表格
|------------+-------+------------+--------+--------+------------|
| Date | Items | Unit Price | Amount | Amount | Categories |
|------------+-------+------------+--------+--------+------------|
| 2019/09/17 | A | 2.64 | 1 | 2.64 | materials |
| | B | 52.67 | 2 | 105.34 | diagnosis |
| | C | 3.08 | 1 | 3.08 | materials |
| | D | 3.85 | 2 | 7.7 | materials |
| | E | 33.66 | 2 | 67.32 | materials |
| | F | 40 | 1 | 40 | treatments |
| | G | 16.5 | 1 | 16.5 | materials |
| | H | 4 | 3 | 12 | treatments |
| | I | 40 | 1 | 40 | bed |
| | M | 6 | 13 | 78 | treatments |
|------------+-------+------------+--------+--------+------------|
#+TBLFM: $5=$3*$4
如何将日期2019/09.17
复制到数据列的底部?
@ manandearth在评论中发布的[link,描述了如何复制(也许稍作修改)”列中的条目。简要地说,在一个单元格中按S-RET
可从上方的单元格复制其内容(如果不为空)-如果该单元格已满,而下一个单元格为空,则将整个单元格复制到空单元格。如果内容为数字,则“重复项”会稍作修改:将值增加1。与日期相同:将日期增加到第二天(但日期必须采用组织模式的格式识别:有效日期<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
出于技术原因在这种情况下无法正常工作:组织模式在表公式计算中使用Calc,而Calc则查看2019/09/17
并说:“啊哈,我必须将2019除以9,然后将结果除以17 ”,并用除法结果填充列的其余部分:13.196078
。您可能已经将2019/09/17
表示为日期,但是组织模式不知道该日期:它将其提供给Calc,后者将其解释为算术表达式。这里的解决方案与链接答案中的解决方案相同:通过将有效日期设为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-3 = 2,依此类推)。为此,您必须获得the row number of the current row:成语是@#
。然后公式变为:
#+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
解决,但这会使我们陷入我没有探索过的水域。