Tính tổng vĩnh viễn một cột trong bảng Chế độ tổ chức


87

Trong bảng Emacs Org-mode, khi bạn có một cột chứa đầy các số nguyên, tôi biết bạn có thể thực hiện C-c +theo sau là C-ydán tổng các giá trị vào cột. Tôi muốn biết công thức để đặt ở hàng cuối cùng để luôn tính tổng cả cột.

Tôi đã thử mọi thứ. Tài liệu chỉ cho bạn cách cộng hai cột với nhau chứ không phải một.


4
Điều tốt nhất tôi đã có thể nhận được là để thêm một Highline ở phía trên và phía dưới của bảng và làm một công thức cột: = vsum (@I .. @ II)
Mauvis Ledford

Với tư cách là FYI, tôi vừa đăng một câu hỏi tương tự về nhắm mục tiêu hline tại đây: stackoverflow.com/questions/6689424/… Câu hỏi này đã nhận được phiếu bầu và câu trả lời có thể khác, vì vậy tôi sẽ bỏ qua trong thời gian chờ đợi.
Mauvis Ledford

Câu trả lời:


60

Gán tên trường bằng cách sử dụng ^dấu:

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

Xem Hướng dẫn sử dụng tổ chức , Phần-3.5.9 Các tính năng nâng cao .


Cảm ơn! Điều này kết thúc hoạt động khá tốt và tôi ổn với nó, tuy nhiên, bây giờ tôi có hline "đầu trang" và hline "chân trang" với những thứ tương tự. Có cách nào để làm điều này chỉ bằng cách sử dụng dòng tiêu đề. Trong tài liệu có đánh dấu "-", nhưng sau đó tôi không biết cách sử dụng vsum (@ 2 .. @ [mục cuối]).
Mauvis Ledford

4
Bạn cũng có thể làm#+TBLFM: @row$col=vsum(@1..@-1)
mgalgs

7
I getUnknown field: x
incandescentman

Tôi cũng nhận được lĩnh vực không xác định. Đọc hướng dẫn sử dụng, về cơ bản trong ví dụ trên, nó gọi hàng phía trên ^ xx, để 6 được tính từ so sánh với 1, 2, 3.
Japhir

57

Hàng cuối cùng của bảng là @> Ví dụ: để lấy tổng cho cột thứ ba ở dòng cuối cùng, bạn có thể sử dụng công thức

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

Có lẽ bạn phải điều chỉnh @2, nếu bạn không có dòng tiêu đề ...


40

Tuy nhiên, một làm cho khả năng sử dụng các đường thẳng ngang ( @I, @II, vv) mà có ích anyways cấu trúc bảng của bạn:

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

Nếu không có tiêu đề, hãy hối hả để tổng bắt đầu ở @0như những người khác đã đề xuất.

Chỉnh sửa: Tôi chỉ thấy rằng bạn đã tự viết điều này trong một bình luận cho câu hỏi của bạn.


Tôi đã mất một phút để hiểu rằng @I và @II đề cập đến các quy tắc ngang, nhưng tôi nghĩ đây là cách đơn giản nhất để thực hiện nếu bạn sắp xếp bảng của mình theo cách này.
bave

9

Bạn có thể thử điều này:

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

@2là tĩnh. Nó đề cập đến hàng thứ 2 trở đi. @-1đề cập đến hàng thứ hai đến hàng cuối cùng.

Tôi nghĩ đây là cách dễ dàng nhất và không xâm phạm. Nó bảo toàn tên cột của bạn và không làm lộn xộn không gian trực quan. Nó không yêu cầu bạn giải quyết hàng cuối cùng. Nó được giải quyết theo mặc định.

Có thể thêm / bớt hàng. Không có điểm đánh dấu nào khác.

ví dụ.
#+TBLFM: $3=vmean(@2..@-1)::$4=vsum(@2..@-1))

Bảng mẫu

   | 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đề cập đến hàng đầu tiên và @-1hàng trước hàng giữ công thức. Công thức đó bỏ qua các dòng:

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

0

Điều gì đó có thể không rõ ràng đối với người đọc là hàm vsum()không phải là sum ()

Điều khác, là @2..@-1điều, là một tham chiếu đến nhãn hàng cụ thể cho cột được tính tổng. Các $A$1điều trong Excel là như @1$1vậy một tài liệu tham khảo để vsum(@2..@-1)được nói "làm một tổng của các giá trị từ các cột, sử dụng như chỉ số hàng các @giá trị trong khoảng 2, đến -1th (ví dụ thứ hai cuối cùng) liên tiếp, nhưng cột là một "được đưa ra" trong điều này để vsum của nó được áp dụng [@2$col @3$col @4$col... @-1$col]nếu bạn cố gắng ánh xạ các khái niệm này vào Excel

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.