การรวมคอลัมน์อย่างถาวรในตารางโหมดองค์กร


87

ในตารางโหมดองค์กรของ Emacs เมื่อคุณมีคอลัมน์ที่เต็มไปด้วยจำนวนเต็มฉันรู้ว่าคุณสามารถทำได้C-c +ตามด้วยC-yเพื่อวางผลรวมของค่าในคอลัมน์ ฉันต้องการที่จะรู้ว่าสูตรไปยังสถานที่ในแถวสุดท้ายที่จะเสมอรวมทั้งคอลัมน์

ฉันได้ลองทุกอย่างแล้ว เอกสารแสดงวิธีการรวมสองคอลัมน์ด้วยกัน แต่ไม่ได้เป็นหนึ่ง


4
สิ่งที่ดีที่สุดที่ฉันจะได้รับคือการเพิ่มไฮไลน์ที่ด้านบนและด้านล่างของตารางและทำสูตรคอลัมน์: = vsum (@I .. @ II)
Mauvis Ledford

ในฐานะ FYI ฉันเพิ่งโพสต์คำถามที่คล้ายกันเกี่ยวกับการกำหนดเป้าหมาย hline ที่นี่: stackoverflow.com/questions/6689424/… คำถามนี้ได้รับการโหวตแล้วและคำตอบอาจแตกต่างออกไปดังนั้นฉันจะปล่อยไว้ในระหว่างนี้
Mauvis Ledford

คำตอบ:


62

กำหนดชื่อเขตข้อมูลโดยใช้^เครื่องหมาย:

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

ดูองค์กรของคู่มือการใช้มาตรา-3.5.9 คุณสมบัติขั้นสูง


ขอบคุณ! จบลงด้วยการทำงานที่ดีและฉันก็สบายดีอย่างไรก็ตามตอนนี้ฉันมี hline "header" และ "footer" ที่มีสิ่งเดียวกัน มีวิธีนี้หรือไม่โดยใช้ hline ส่วนหัว ในเอกสารมีเครื่องหมาย "-" แต่ฉันไม่รู้วิธีใช้ vsum (@ 2 .. @ [รายการสุดท้าย])
Mauvis Ledford

4
คุณก็ทำได้เช่นกัน#+TBLFM: @row$col=vsum(@1..@-1)
mgalgs

7
ฉันได้รับUnknown field: x
หลอดไส้

ฉันยังได้ฟิลด์ที่ไม่รู้จัก อ่านคู่มือโดยทั่วไปในตัวอย่างด้านบนจะเรียกแถวที่อยู่เหนือ ^ xx เพื่อให้ 6 คำนวณจาก vsum ของ 1, 2, 3
Japhir

58

แถวสุดท้ายของตารางคือ@> ตัวอย่างเช่นเพื่อให้ได้ผลรวมของคอลัมน์ที่สามในบรรทัดสุดท้ายคุณสามารถใช้สูตรได้

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

บางทีคุณอาจต้องปรับเปลี่ยน@2ถ้าคุณไม่มีบรรทัดส่วนหัว ...


42

แต่ความเป็นไปได้อีกทำให้การใช้เส้นแนวนอน ( @I, @IIฯลฯ ) ที่มีประโยชน์ anyways โครงสร้างตารางของคุณ:

| 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หมายถึงแถวที่สองถึงแถวสุดท้าย

ฉันคิดว่านี่เป็นวิธีที่ง่ายที่สุดและไม่ล่วงล้ำ จะรักษาชื่อคอลัมน์ของคุณและไม่เกะกะพื้นที่ภาพ ไม่จำเป็นต้องให้คุณอยู่แถวสุดท้าย ได้รับการแก้ไขโดยค่าเริ่มต้น

สามารถเพิ่ม / ลบแถวได้ ไม่มีเครื่องหมายอื่น ๆ

เช่น.
#+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 และ@-1แถวก่อนหน้าที่มีสูตร สูตรนั้นละเว้น hlines:

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

0

สิ่งที่ผู้อ่านอาจไม่เห็นได้ชัดคือฟังก์ชันvsum()ไม่ใช่ sum ()

อีกอย่างก็คือ@2..@-1สิ่งนั้นคือการอ้างอิงไปยังป้ายกำกับเฉพาะแถวสำหรับคอลัมน์ที่ถูกสรุป $A$1สิ่งใน Excel เป็นเหมือน@1$1ดังนั้นการอ้างอิงถึงvsum(@2..@-1)จะบอกว่า "ทำผลรวมของค่าจากคอลัมน์ที่ใช้เป็นดัชนีแถว@ค่าในช่วง 2 เพื่อ -1th (เช่นวินาทีสุดท้าย) แถว แต่คอลัมน์ที่เป็น "กำหนด" ในสิ่งนี้ดังนั้น vsum จึงถูกนำไปใช้[@2$col @3$col @4$col... @-1$col]ถ้าคุณพยายามจับคู่แนวคิดเหล่านี้กับ Excel

โดยการใช้ไซต์ของเรา หมายความว่าคุณได้อ่านและทำความเข้าใจนโยบายคุกกี้และนโยบายความเป็นส่วนตัวของเราแล้ว
Licensed under cc by-sa 3.0 with attribution required.