Các ô tham chiếu của các bảng khác trong bảng chế độ tổ chức


8

Tôi có một tài liệu dài với 10 bảng và tôi muốn có một bảng tóm tắt ở cuối tài liệu. Một cái gì đó như thế:

tab1

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

...

tab10

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

tóm tắt tab

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

Có cách nào để tham chiếu tổng số của mỗi bảng, thay vì tự xử lý các kết quả trong bảng tóm tắt không?

Câu trả lời:


13

Bạn đang tìm kiếm tài liệu tham khảo bảng từ xa :

#+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)

Lưu ý, câu hỏi này đã có câu trả lời ở đó: Cách tham chiếu bảng có tên hoặc khối mã trong chế độ Org


Bạn thậm chí có thể tạo tab-summarytự động. Điều này là dễ dàng nếu các công thức có thể được viết trực tiếp vào các ô của bảng. Sau đây ctrl-c-ctrl-c-hookcho phép bạn cài đặt tất cả các công thức bảng từ các ô.

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

Việc tạo tự động của bảng tổng cộng được hiển thị trong ví dụ sau:

#+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) |

Ví dụ hiển thị bảng vì nó là kết quả của việc thực thi khối nguồn lisp emacs.

Nếu bạn đã cài đặt org-ctrl-c-ctrl-c-hookđiểm địa điểm trên trong bảng tổng cộng và nhấn, C-c C-cbạn sẽ nhận được bảng sau:

| 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
Làm thế nào tôi có thể làm điều này ( remote) trong một công thức elisp?
Zelphir Kaltstahl
Khi sử dụng trang web của chúng tôi, bạn xác nhận rằng bạn đã đọc và hiểu Chính sách cookieChính sách bảo mật của chúng tôi.
Licensed under cc by-sa 3.0 with attribution required.