在 Emacs Org 模式表中,当您有一列充满整数时,我知道您可以执行 C-c +
后跟 C-y
以粘贴列中值的总和。我想知道放在最后一行的公式,以总是对整列求和。
我什么都试过了。 docs 向您展示了如何将两列相加而不是一列相加。
#+TBLFM:
行时使用 C-c C-c
来执行答案中给出的论坛。
表格的最后一行是 @>
例如要获取最后一行第三列的总和,可以使用公式
@>$3=vsum(@2..@-1)
如果您没有标题行,也许您必须调整 @2
...
使用 ^
标记分配字段名称:
|---+---|
| | 1 |
| | 2 |
| | 3 |
|---+---|
| | 6 |
| ^ | x |
|---+---|
#+TBLFM: $x=vsum(@1..@-1)
请参阅The Org Manual, Section-3.5.9 Advanced Features。
还有一种可能性是使用水平线(@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 行(即倒数第二行),但该列是“给定的”,因此如果您尝试将这些概念映射到 Excel 中,它的 vsum 将应用于 [@2$col @3$col @4$col... @-1$col]
| 3 |
| 2 |
| 5 |
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
@1
表示第一行,@-1
表示公式所在行的前一行。该公式忽略 hlines:
| 3 |
| 2 |
| 5 |
|----|
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
#+TBLFM: @row$col=vsum(@1..@-1)
Unknown field: x