[英]Permanently summing a column in an Org-mode table
在 Emacs 組織模式表中,當您有一列充滿整數時,我知道您可以執行Cc +
后跟Cy
以粘貼列中值的總和。 我想知道放置在最后一行的公式以始終對整列求和。
我什么都試過了。 文檔向您展示了如何將兩列相加,但不是一列。
表格的最后一行是@>
例如要獲取最后一行第三列的總和,可以使用公式
@>$3=vsum(@2..@-1)
也許你必須適應@2
,如果你沒有 header 線......
使用^
標記分配字段名稱:
|---+---|
| | 1 |
| | 2 |
| | 3 |
|---+---|
| | 6 |
| ^ | x |
|---+---|
#+TBLFM: $x=vsum(@1..@-1)
還有一種可能性是使用水平線( @I
I、 @II
等),這些水平線對於構建表格很有用:
| What | $$ |
|-------+-------|
| Ice | 3.00 |
| Soda | 6.49 |
| Gin | 4.99 |
|-------+-------|
| Total | 14.48 |
#+TBLFM: @>$2=vsum(@I..@II)
如果沒有 header,請按照其他人的建議讓總和從@0
開始。
編輯:我剛剛看到你已經在對你的問題的評論中自己寫了這個。
你可以試試這個:
$<col_num>=<func>(@2..@-1))
@2
是 static。 它指的是第 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)
| 3 |
| 2 |
| 5 |
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
@1
表示第一行, @-1
表示公式所在行的前一行。 該公式忽略 hlines:
| 3 |
| 2 |
| 5 |
|----|
| 10 |
#+TBLFM: @4$1=vsum(@1..@-1)
讀者可能不明白的是 function 是vsum()
而不是 sum()
另一件事是@2..@-1
是對被求和的列的特定於行的 label 的引用。 Excel 中的$A$1
就像@1$1
所以對vsum(@2..@-1)
的引用是說“對列中的值求和,使用范圍內的@
值作為行索引2,到第 -1 行(即倒數第二行),但該列是“給定的”,因此它的 vsum 應用於[@2$col @3$col @4$col... @-1$col]
如果您嘗試將 map 這些概念轉換為 Excel
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.