复制组织表格中的日期

问题描述 投票:1回答:1

假设组织表格中有这样的电子表格

|------------+-------+------------+--------+--------+------------|
| 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复制到数据列的底部?

emacs org-mode
1个回答
1
投票

@ 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解决,但这会使我们陷入我没有探索过的水域。

© www.soinside.com 2019 - 2024. All rights reserved.