Org-modeテーブルの列を永続的に合計する


87

Emacs Org-modeテーブルで、整数でいっぱいの列がある場合、私はあなたができることを知っています C-c +が続くC-y列の値の合計を貼り付けます。常に列全体を合計するために最後の行に配置する式を知りたいです。

私はすべてを試しました。ドキュメント一緒ではなく、1〜2つの列を合計する方法を示しています。


4
私が得た最善の方法は、テーブルの上部と下部にハイラインを追加し、列の数式を実行することです。= vsum(@ I .. @ II)
Mauvis Ledford 2011

参考までに、hlineターゲティングに関する同様の質問をここに投稿しました:stackoverflow.com/questions/6689424/… この質問はすでに投票されており、回答が異なる可能性があるため、当面はそのままにしておきます。
Mauvis Ledford 2011

回答:


60

^マークを使用してフィールド名を割り当てます。

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

組織マニュアルのセクション-3.5.9高度な機能を参照してください。


ありがとう!これはかなりうまく機能することになり、私はそれで問題ありませんが、今では同じものの「ヘッダー」hlineと「フッター」hlineがあります。ヘッダーhlineだけを使用してこれを行う方法はありますか?ドキュメントでは「-」マークが付いていますが、vsum(@ 2 .. @ [最後のアイテム])の使用方法がわかりません。
Mauvis Ledford 2011

4
あなたもすることができます#+TBLFM: @row$col=vsum(@1..@-1)
mgalgs 2012

7
私が得るUnknown field: x
白熱人

私も未知の分野を手に入れました。基本的に上記の例では、上の行を呼び出すだ、マニュアルを読む^ XX、そう6が1のVSUM、2、3から算出される
Japhir

57

テーブルの最後の行は次のとおりです。@> たとえば、最後の行の3番目の列の合計を取得するには、次の式を使用できます。

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

@2ヘッダー行がない場合は、を調整する必要があるかもしれません...


40

さらに別の可能性は、水平線(の使用になり@I@IIあなたのテーブルを構造化するためにとにかく便利です、など):

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

ヘッダーがない場合は、@0他の人がすでに提案しているように、合計を開始する必要があります。

編集: あなたがあなたの質問へのコメントですでにこれを自分で書いているのを見ました。


@Iと@IIが水平方向のルールを参照していることを理解するのに少し時間がかかりましたが、このようにテーブルを整理すると、これが最も簡単な方法だと思います。
threeve

9

あなたはこれを試すことができます:

$<col_num>=<func>(@2..@-1))

@2静的です。2列目以降を指します。 @-1最後から2番目の行を指します。

これが最も簡単で邪魔にならない方法だったと思います。列名が保持され、視覚的なスペースが乱雑になることはありません。最後の行をアドレス指定する必要はありません。デフォルトで対処されます。

行を追加/削除できます。他のマーカーはありません。

例えば。
#+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)

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

@1最初の行、および@-1数式を保持している行の前の行を指します。その式はhlinesを無視します:

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

0

読者にはわからないかもしれない何かが機能です vsum()sum()でない

もう1つ@2..@-1は、合計される列の行固有のラベルへの参照であるということです。$A$1Excelのものは似ている@1$1参照がそうvsum(@2..@-1)行インデックスとして使用して、列の値の和を行う」と言っている@-1th(すなわち最後から二番目)の行に、2範囲内の値を、しかし列でありますこれに「与えられた」ので、[@2$col @3$col @4$col... @-1$col]これらの概念をExcelにマップしようとすると、そのvsumが適用されます。

弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.