組織モードテーブル内の他のテーブルの参照セル


8

10テーブルの長いドキュメントがあり、ドキュメントの最後に要約テーブルを配置したいと考えています。そんな感じ:

タブ1

| Nº | Description | Value |
+----+-------------+-------+
|...                       |
+----+-------------+-------+
|    | TOTAL       |   XXX |

...

タブ10

| Nº | Description | Value |
+----+-------------+-------+
|...                       |
+----+-------------+-------+
|    | TOTAL       |   XXX |

タブの要約

| Description      | Value |
+------------------+-------|
| Total of Table 1 |   XXX |
| Total of Table 2 |   XXX |
| ...                      |
+------------------+-------|
| Grand Total      |   XXX |

サマリーテーブルの結果を手動で処理する代わりに、各テーブルの合計を参照する方法はありますか?

回答:


13

リモートテーブル参照を探しています

#+TBLNAME: tab1
| Nº  | Description | Value |
|-----+-------------+-------|
|     | TOTAL       |     1 |

...

#+TBLNAME: tab10
| Nº | Description | Value |
|----+-------------+-------|
|    | TOTAL       |     2 |

tab-summary
| Description       | Value |
|-------------------+-------|
| Total of Table 1  |     1 |
| Total of Table 10 |     2 |
|-------------------+-------|
| Grand Total       |     3 |
#+TBLFM: @2$2=remote(tab1,@2$3)::@3$2=remote(tab10,@2$3)::@>$2=vsum(@I$2..@II$2)

注、この質問にはすでに回答があります:Orgモードで名前付きテーブルまたはコードブロックを参照する方法


tab-summary自動的に生成することもできます。これは、数式を表のセルに直接書き込むことができれば簡単です。以下でctrl-c-ctrl-c-hookは、セルからすべてのテーブル数式をインストールできます。

(defun org-table-install-formulas ()
  "Install formulas in cells starting with = or := at the bottom of the table as #+TBLFM line.
Do nothing when point is not inside a table."
  (interactive)
  (when (org-table-p)
    (save-excursion
      (goto-char (org-table-begin))
      (org-table-next-field)
      (while (progn
           (org-table-maybe-eval-formula)
           (looking-at "[^|\n]*|\\([[:space:]]*\n[[:space:]]*|\\)?[^|\n]*\\(|\\)"))
    (goto-char (match-beginning 2)))
      ))
  nil)

(add-hook #'org-ctrl-c-ctrl-c-hook #'org-table-install-formulas)

合計合計テーブルの自動生成を次の例に示します。

#+TBLNAME: tab1
| Nº  | Description | Value |
|-----+-------------+-------|
|     | TOTAL       |     1 |

...

#+TBLNAME: tab2
| Nº | Description | Value |
|----+-------------+-------|
|    | TOTAL       |     2 |

#+TBLNAME: tab3
| Nº | Description | Value |
|----+-------------+-------|
|    | TOTAL       |     3 |


#+BEGIN_SRC emacs-lisp :var basename="tbl" start=1 stop=3
(append
 '(("Description" "Value")
   hline)
   (cl-loop for i from start upto stop
        collect (list (format "Total of Table %d" i) (format ":=remote(tab%d,@>$3)" i)))
   '(
     hline
     ("Grand Total" ":=vsum(@I$2..@II$2)")))
#+END_SRC

#+RESULTS:
| Description      | Value               |
|------------------+---------------------|
| Total of Table 1 | :=remote(tab1,@>$3) |
| Total of Table 2 | :=remote(tab2,@>$3) |
| Total of Table 3 | :=remote(tab3,@>$3) |
|------------------+---------------------|
| Grand Total      | :=vsum(@I$2..@II$2) |

この例は、emacs lispソースブロックを実行した結果のテーブルを示しています。

org-ctrl-c-ctrl-c-hook合計ポイントテーブルに上記のプレースポイントをインストールしてを押すC-c C-cと、次のテーブルが表示されます。

| Description      | Value |
|------------------+-------|
| Total of Table 1 |     1 |
| Total of Table 2 |     2 |
| Total of Table 3 |     3 |
|------------------+-------|
| Grand Total      |     6 |
#+TBLFM: @2$2=remote(tab1,@>$3)::@3$2=remote(tab2,@>$3)::@4$2=remote(tab3,@>$3)::@5$2=vsum(@I$2..@II$2)

3
remoteelisp式でこれを行うにはどうすればよいですか()?
Zelphir Kaltstahl
弊社のサイトを使用することにより、あなたは弊社のクッキーポリシーおよびプライバシーポリシーを読み、理解したものとみなされます。
Licensed under cc by-sa 3.0 with attribution required.