在Emacs组织模式表中,当您有一个满整数的列时,我知道您可以C-c +
后跟C-y
来粘贴列中值的总和。我想知道放在最后一行的公式总是对整列进行求和。
我已经尝试了一切。 docs向您展示如何将两列相加而不是一列。
答案 0 :(得分:49)
表格的最后一行是@>
例如,要获取最后一行中第三列的总和,可以使用公式
@>$3=vsum(@2..@-1)
如果你没有标题行,也许你必须调整@2
...
答案 1 :(得分:48)
使用^
标记指定字段名称:
|---+---|
| | 1 |
| | 2 |
| | 3 |
|---+---|
| | 6 |
| ^ | x |
|---+---|
#+TBLFM: $x=vsum(@1..@-1)
答案 2 :(得分:27)
另一种可能性是使用水平线(@I
,@II
等),这对于构建表格非常有用:
| What | $$ |
|-------+-------|
| Ice | 3.00 |
| Soda | 6.49 |
| Gin | 4.99 |
|-------+-------|
| Total | 14.48 |
#+TBLFM: @>$2=vsum(@I..@II)
如果没有标题,请按照其他人的建议,将总和从@0
开始。
编辑: 我刚刚看到你自己在对你的问题的评论中写了这个。
答案 3 :(得分:3)
你可以试试这个:
$<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)
答案 4 :(得分:0)
| 3 |
| 2 |
| 5 |
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
@1
指向第一行,@-1
指向保存公式的第一行。该公式忽略了hlines:
| 3 |
| 2 |
| 5 |
|----|
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
答案 5 :(得分:0)
对于函数来说,vsum()
不是sum()可能对读者来说并不明显
另一件事是@2..@-1
事物是对要求和的列的行特定标签的引用。 Excel中的$A$1
就像@1$1
,因此对vsum(@2..@-1)
的引用是“将列中的值相加,将@
的值用作行索引在范围2到第-1(即倒数第二)行,但是此列是“给定的”,因此,如果您尝试将这些概念映射到Excel,则其vsum会应用到[@2$col @3$col @4$col... @-1$col]
上