在 Emacs Org-mode 表中,当您有一列充满整数时,我知道您可以C-c +
随后C-y
粘贴列中值的总和。我想知道放置在最后一行的公式以始终对整列求和。
我什么都试过了。文档向您展示了如何将两列相加,但不是一列。
表格的最后一行是@>
例如要获得最后一行第三列的总和,可以使用公式
@>$3=vsum(@2..@-1)
@2
如果你没有标题行,也许你必须适应...
^
使用标记分配字段名称:
|---+---|
| | 1 |
| | 2 |
| | 3 |
|---+---|
| | 6 |
| ^ | x |
|---+---|
#+TBLFM: $x=vsum(@1..@-1)
另一种可能性是使用水平线(@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()
不是 sum()
另一件事是@2..@-1
对要求和的列的行特定标签的引用。Excel中的$A$1
事情就像@1$1
这样一个参考vsum(@2..@-1)
是说“对列中的值进行求和,使用范围2中的值作为行索引@
,到第-1行(即倒数第二行),但列是[@2$col @3$col @4$col... @-1$col]
如果您尝试将这些概念映射到Excel
| 3 |
| 2 |
| 5 |
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
@1
指第一行,以及@-1
包含公式的行之前的行。该公式忽略 hlines:
| 3 |
| 2 |
| 5 |
|----|
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)