94

在 Emacs Org-mode 表中,当您有一列充满整数时,我知道您可以C-c +随后C-y粘贴列中值的总和。我想知道放置在最后一行的公式以始终对整列求和。

我什么都试过了。文档向您展示了如何将两列相加,但不是一列。

4

6 回答 6

69

表格的最后一行是@> 例如要获得最后一行第三列的总和,可以使用公式

@>$3=vsum(@2..@-1)

@2如果你没有标题行,也许你必须适应...

于 2012-01-07T13:09:23.950 回答
66

^使用标记分配字段名称:

|---+---|
|   | 1 |
|   | 2 |
|   | 3 |
|---+---|
|   | 6 |
| ^ | x |
|---+---|
#+TBLFM: $x=vsum(@1..@-1)

请参阅组织手册,第 3.5.9 节高级功能

于 2011-07-14T09:58:00.270 回答
51

另一种可能性是使用水平线(@I,@II等),无论如何这对构建表格很有用:

| What  |    $$ |
|-------+-------|
| Ice   |  3.00 |
| Soda  |  6.49 |
| Gin   |  4.99 |
|-------+-------|
| Total | 14.48 |
#+TBLFM: @>$2=vsum(@I..@II)

如果没有标题,请按照其他人的建议让总和开始@0

编辑: 我刚刚看到你已经在对你的问题的评论中自己写了这个。

于 2014-05-29T13:00:15.740 回答
11

你可以试试这个:

$<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)
于 2018-03-15T09:01:38.907 回答
1

读者可能不明白的是函数vsum()不是 sum()

另一件事是@2..@-1对要求和的列的行特定标签的引用。Excel中的$A$1事情就像@1$1这样一个参考vsum(@2..@-1)是说“对列中的值进行求和,使用范围2中的值作为行索引@,到第-1行(即倒数第二行),但列是[@2$col @3$col @4$col... @-1$col]如果您尝试将这些概念映射到Excel

于 2020-10-29T04:19:47.543 回答
0
|  3 |
|  2 |
|  5 |
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)

@1指第一行,以及@-1包含公式的行之前的行。该公式忽略 hlines:

|  3 |
|  2 |
|  5 |
|----|
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
于 2020-08-25T13:36:52.737 回答