How to use tables for collecting data and calculating using Org-Mode

Chưa phân loại

Creating tables in org-mode

In org-mode, you have many features for organising your text. You can even execute code from inside the document. When you want to collect data, your expenses for example, you would want a table. Most users will use a spreadsheet program but that is a bit of overkill, especially since you are usually in Emacs! Consider an expense list, you want a few items with price and date.

To create this table you can start with a ‘|’ character and ‘Item’ then ‘|’ and so on until the end of the line. Finish the line with hitting the TAB key and your table will be created for you. After that you just hit TAB for each item you want to fill in.

Filling in data

You may also have a table already. In this case you can create from a region. If you take data from a spreadsheet and paste it into your org document it shows up as a list. It is usually separated by spaces. To make this a table, make sure it is marked and then convert it to a table, using ‘C-c |’.

Cabbage €0.84 06/06/2019 Sweet Potatoes €3.90 06/06/2019 Lettuce €0.43 06/06/2019 Broccoli €1.09 06/06/2019
If you mark the text above and convert it, the result is this:

The conversion looks for tabs first, second commas and last spaces on every line. Many times you will have extra fields due to spaces inside text. If this happens, experiment with adding more spaces and using ‘C-u C-u C-u 3’. Here 3 is an arbitrary number that sets how many spaces should mean ‘end of field’.

Moving data, formatting tables

The example above contains only the absolute basics, you may want to add a column in the table. This is easily achieved by being in the table and typing ‘M-S-<right>’. Once you start practising, you will notice the connection to the move column command ‘M-<right>’.

Continue with the same table and add a heading. Start by adding a new line with ‘M-S-<down>’, create a line across the table ‘C-c -‘. Continue to fill in the top with text.

This example is not possible to import into gnucash so you need to add a few columns. It is also useful to re-arrange them in the common order that gnucash expects. Try creating the below table yourself.

Adding formulas

When you have a table, many times you want to calculate the sum of columns, or specific fields. Org-mode uses the calc module that is usually part of Emacs. The simplest calculation you want to do is to summarise the current column, you do this with ‘C-c +’. The result will show up in the mini-buffer. If you want to put them in the column, use ‘C-y’ and it shows up in the current place of the cursor. Most likely you will have a table where you update the values on a regular basis and want to see their sum or average immediately in the table. To add a formula, you have two methods, type it in a cell or use a key chord. When you use the key chord ‘C-c =’, you can place your cursor anywhere in the column you want and the result will be placed in that cell. You can also fill in the formula manually, the format is simpler than it looks at first sight. Any formula starts with the cell where the data goes and then an equals sign and continues with the function choice, ‘vsum’ is the most common.

#+TBLFM: $6=vsum(@I..@II)

This example puts the result in the 6th Column ($6=), the values are calculated from all values in the column between the first (I) and the second separator (II). You can also point to the cells themselves. You do this by using the the row (@) and the column ($) and then the number. Since the table will change as you add data you should usually point to relative positions though. Relative positions are denoted with ‘>’s. A single one means the one closest to the end. The other direction ‘<‘ means the beginning so in the case of columns ‘$’ the leftmost. In the example table ‘$6’ equals ‘$>’. When you use the relative value the value will be found in the last column even when you add a new column. If you use ‘$6’, you need to change the number to match how many columns you have.

#+TBLFM: $>=vsum(@I..@II)

Exporting to other documents

You can export the table to a csv file if you want to use it in other applications. It is very simple, just put your cursor inside the table and hit ‘M-x org-table-export’.


The table mode is very easy to get started with for simple tables but if you look further you can find many spreadsheet features. This article has only scratched the surface of what is possible. There are many more mathematical features and you can even produce graphs from the data.

Sandclock IDC thành lập vào năm 2012, là công ty chuyên nghiệp tại Việt Nam trong lĩnh vực cung cấp dịch vụ Hosting, VPS, máy chủ vật lý, dịch vụ Firewall Anti DDoS, SSL… Với 10 năm xây dựng và phát triển, ứng dụng nhiều công nghệ hiện đại, Sandclock IDC đã giúp hàng ngàn khách hàng tin tưởng lựa chọn, mang lại sự ổn định tuyệt đối cho website của khách hàng để thúc đẩy việc kinh doanh đạt được hiệu quả và thành công.
Bài viết liên quan

Install Neo4J on Ubuntu

In this post, we will see how we can install one of the most popular Graph-based database, Neo4J on Ubuntu and start using...

[Checkmk] Giám sát port TCP

“Port” là một thuật ngữ chuyên ngành được sử dụng phổ thông trong network, system nói riêng và...

Installing Debian 10 Minimal Server

On a production server, you want only the bare minimum programs that are absolutely required for the proper function of...
Bài Viết

Bài Viết Mới Cập Nhật

Hướng dẫn chuyển đổi windows server windows evaluation to standard và active windows server 2008 + 2012 + 2016 + 2019

How to Update Ubuntu Linux

Squid Proxy Manager cài đặt và quản lý Proxy Squid tự động trên ubuntu

Hướng dẫn cài đặt Apache CloudStack

Hướng dẫn ký file PDF bằng chữ ký số (chữ ký điện tử) và sửa lỗi mới nhất 2021 foxit reader