ChatGPT解决这个技术问题 Extra ChatGPT

对 Org 模式表中的列进行永久求和

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

我什么都试过了。 docs 向您展示了如何将两列相加而不是一列相加。

我能得到的最好的方法是在表格的顶部和底部添加一个高线并做一个列公式: =vsum(@I..@II)
作为一个 FYI,我刚刚在此处发布了一个关于 hline 定位的类似问题:stackoverflow.com/questions/6689424/…这个问题已经获得投票,答案可能会有所不同,所以我将暂时搁置。
对于那些想知道的人,当点位于 #+TBLFM: 行时使用 C-c C-c 来执行答案中给出的论坛。

P
Peter Hart

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

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

如果您没有标题行,也许您必须调整 @2...


h
huaiyuan

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

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

请参阅The Org Manual, Section-3.5.9 Advanced Features


谢谢!这最终工作得很好,我很好,但是,我现在有了一个“页眉”线和“页脚”线,它们有相同的东西。有没有办法只使用标题 hline。在文档中它是“-”标记,但是我不知道如何使用 vsum(@2..@[last item])。
你也可以做#+TBLFM: @row$col=vsum(@1..@-1)
我得到Unknown field: x
我也有未知领域。阅读手册,基本上在上面的示例中它调用了^ xx上方的行,因此6是根据1、2、3的vsum计算的。
请注意,^ 应该在表格的第一列。不仅仅是您想要总和的列之前的列。
q
quazgar

还有一种可能性是使用水平线(@I@II 等),它们对构建表格很有用:

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

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

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


我花了一分钟才明白@I 和@II 指的是水平规则,但我认为如果您以这种方式组织表格,这是最简单的方法。
我应该使用哪个键绑定来设置 sum 的结果?
J
Johnson

你可以试试这个:

$<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)

G
George Michaelson

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

另一件事是 @2..@-1 是对要求和的列的行特定标签的引用。 Excel 中的 $A$1 类似于 @1$1,因此对 vsum(@2..@-1) 的引用表示“对列中的值求和,使用范围 2 中的 @ 值作为行索引,到 -第 1 行(即倒数第二行),但该列是“给定的”,因此如果您尝试将这些概念映射到 Excel 中,它的 vsum 将应用于 [@2$col @3$col @4$col... @-1$col]


L
Louis Strous
|  3 |
|  2 |
|  5 |
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)

@1 表示第一行,@-1 表示公式所在行的前一行。该公式忽略 hlines:

|  3 |
|  2 |
|  5 |
|----|
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)

关注公众号,不定期副业成功案例分享
关注公众号

不定期副业成功案例分享

领先一步获取最新的外包任务吗?

立即订阅