Org mode 中的表格的另外一个强大之处,在于它支持公式。在表格区域使用快捷键 "C-c '",就可以对表格公式进行编辑,完成后公式会显示在表格下方,以 "#+TBLFM:" 开头,如下图所示。

使用 "C-c '" 后能在一个独立的、临时的 buffer 中编辑公式,但我们也可以在表格下方手工添加以 "+TBLFM:" 开头的行,然后直接添加公式。

上面这个公式表示将第四列的值设为第二列的值与第三列的值的乘积。在编辑好公式并保存后,将光标移动到公式所在行然后使用 "C-c C-c",就可以应用公式到表格中。如下图所示:

在Org mode的表格公式中,用 "@" 来表示行,用 "$" 来表示列,最简单的,"@3$2" 表示的是第三行第二列的位置。使用快捷键 "C-c }" 可以开启表格的横纵坐标显示——若要关闭的话也是用它。如果是用 "C-c '" 来进行公式编辑,在输入表格位置时,会看到表格上对应的位置会在当时高亮,所以建议用这种方式进行编辑。

如果只给一个坐标,则另一个坐标会被设为"当前行"或者"当前列",这在批量处理表格内容时会有用。

如果想表示一个区域的话,用 ".." 来表示。

下面这个表示左上角为第二行第一列单元格、右下角为第四行第三列单元格的区域,共包含 9 个单元格。

@2$1..@4$3

下面这个则表示"当前行"的第一列到第三列的区域:

$1..$3

在公式中,可以用 "@#" 表示当前行的行号,用 "$#" 表示当前列的列号,在一些稍复杂点的公式里会有用。

此外,还可以定义常量、变量,或者给某个单元格命名,然后引用它们。假设其名字为 "name",那么 "$name" 就可以引用它了。常量的定义可以通过 "org-table-formula-constants" 来进行,这样定义的常量是全局的;如果要定义局部的常量,可以在org文件中添加诸如这样的行:

#+CONSTANTS: pi=3.14 eps=2.4e-6

还可以在当前表格引用其他表格的域,这需要其他表格被命名为某个名字,如"FOO",我们要在另一个表格中使用其第三行第四列的域,将其值赋给当前表格的第五行第二列,则可以这样写:

@5$2=remote(FOO, @3$4)

下图将被命名为 "fruit_expend" 的表格的第 6 行第 4 列的数据插入到新表格的第二行第二列中:

Org mode 的表格公式中,四则运算符都能正常使用,不过略有不同——乘号 "*" 的优先级要比除号 "/" 要高,因此

$3 / $2 * $1

会被解释为

$3 / ($2 * $1)

Org mode 默认使用的是 Emacs 中自带的 Calc 这个 package 来进行计算,而 Calc 中提供了相当丰富的计算方法,这里列举一二:

基础算术方法: abs, sign, inv, sqrt, min, max,详见 Arithmetic Functions

对数方法: ln, exp, log,详见 Logarithmic Functions

随机数方法: random

向量/矩阵方法: vunion, vint, vsum, vmean, vmax, vmin, vmedian,详见 Vector/Matrix Functions

Calc 的内容比较多,这里不做深入展开,有需要的话可以参考 GNU Emacs Calc Manual。

此外,表格公式还能以 Emacs Lisp 的形式来进行编写,不过要在这种形式的公式前加上单引号 "'",才能正确求值。在 Emacs Lisp 形式的公式表达式中,传入的参数会被当作字符串,所有需要用格式化选项 "N" 来指明参数类型都是数值。如下图,在不加格式化选项时,公式计算出错,加上 ";N" 后才得到了正确的结果。

所有的格式化选项,必须通过分号 ";" 和公式进行分隔并跟随在公式后面,可用的选项有:

p: 设置计算精度

n/s/e/f: 设置结果的输出格式

n3: 输出结果为3位有效数字(1.45)

s3: 输出结果为科学计数法,3位有效数字(1.45e0)

e3: 输出结果为工程计数法,3位有效数字(0.145e1)

f3: 输出结果精确至小数点后3位

D/R: 计算时使用角度制还是弧度制(如三角函数)

F/S: 分数还是符号(当为 S 时,若结果不为整数,则显示式子本身,如: sqrt(6))

T/t: 时间计算,要求用于计算的值是"HH:MM[:SS]"的形式,当使用 T 时,输出结果是 "HH:MM:SS" 形式;使用 "t" 时,结果显示为一个数值,默认情况下单位是小时,可以通过变量 org-table-duration-custome-format 来设置

E: 不使用时,所有空白单元格都会被跳过,不会包含在计算过程中;当使用时,如果还使用了 N ,则用 "0" 填充;否则,在普通公式中,用 "nan" 填充,在 emacs lisp 公式中,用空字符串填充

N: 使用时,将所有域的值视为数字,对于非数值型,用 0 替代

L: 只用于 emacs lisp 公式,后续

如果需要对表格公式的求值进行调试,可以通过快捷键"C-c {"来开启调试模式(或者关闭它)。

计算机公式mode,强大的 Org mode(3): 表格的基本操作及公式、绘图 · ZMonster's Blog...相关推荐

  1. 计算机一级证电子表格函数值怎么算,2017年计算机一级WPS辅导:WPS文字的表格中进行函数公式计算...

    如果我说是在WPS文字文档中的表格能进行函数.公式等计算,不仅要显示在WPS文字中,而且完全不用初少的表格计算插件,还要实现像ET中一样多的公式和函数功能.我是在痴人说梦吗?不,其实WPS Offic ...

  2. 计算机一级表格函数公式,计算机一级:《Excel表格的基本操作》函数和公式编辑技巧...

    Excel 是微软办公套装软件的一个重要的组成部分,它可以进行各种数据的处理.统计分析和辅助决策操作,广泛地应用于管理.统计财经.金融等众多领域.下文是为大家精选的计算机一级:<Excel表格的 ...

  3. 怎么利用计算机公式计算完成比例,excel表格数据计算所占比例公式的使用教程...

    Excel中经常需要使用到公式计算所占比例,所占比例具体该如何利用函数进行计算呢?接下来是学习啦小编为大家带来的excel表格数据计算所占比例公式的使用教程,供大家参考. excel表格数据计算所占比 ...

  4. 计算机表格 求差,教大家Excel2013中表格求差函数公式怎么使用

    近日有关于Excel2013中表格求差函数公式怎么使用的问题受到了很多网友们的关注,大多数网友都想要知道Excel2013中表格求差函数公式怎么使用的具体情况,那么关于到Excel2013中表格求差函 ...

  5. 计算机函数公式 加法,Excel中如何计算加减乘除法/表格加法公式

    EXCel表格怎样设置加减法公式 选中C1单元格,单元格中输入 =A1-B1 即可求出差值 选中C1单元格,单元格中输入 =A1 B1即可求出和值 选中C1单元格,单元格中输入 =SUM(A1:B1) ...

  6. 计算机一级常用函数英语翻译,无需打开翻译软件!1个公式让excel直接翻译中英文...

    如果你excel的表格内容,需要用到翻译.不论是中文翻译英文,还是英文翻译中文,都是个麻烦事. 你需要复制每个表格的内容,打开翻译软件或翻译网站,翻译过后再复制回来--效率太低了!尤其是有很多行的内容 ...

  7. 计算机一级wps表格函数,WPS表格函数学习之公式大全(字母顺序).pdf

    WPS表格函数学习之公式大全(字母顺序) 1. ABS:返回给定数字的绝对值. (即不带符号的数值) 格式: ABS (数值) 数值:需要计算其绝对值的实数. 2. ACCRINT:返回到期一次性付息 ...

  8. 计算机公式乘以百分之十五,EXCEL表格数据乘以15的公式【EXCEL表格中可以套用公式来实现输入数据后自动乘以某个数据的计算吗?】...

    EXCEL表格中数据如何自动计算乘以80%的数据 在某个空白单元输入0.8,然后复制这个单元,选择你要乘的区域,点 选择性粘贴-值-乘,ok! 怎样用EXCEL表格自动计算乘法? 操作方下: 1.首先 ...

  9. 两点间距离公式计算机,已知两点经纬度,用excel计算两点距离的公式?(转

    已知两点经纬度,用excel计算两点距离的公式?(转 (2008-08-03 17:51:26) 标签: 杂谈 用EXCEL进行高斯投影换算 从经纬度BL换算到高斯平面直角坐标XY(高斯投影正算),或 ...

  10. 计算机表格数据处理,《计算机操作基础》第四章 Excel表格数据处理课后练习.docx...

    PAGE1 / NUMPAGES1 <计算机操作基础> 第四章 Excel表格数据处理课后练习 一. 单项选择题 共 17 题 1. 在Excel2003工作表的A1单元格中输入" ...

最新文章

  1. 中国团队 Nature 新冠论文被指图片造假,科研论文不端“何时休”
  2. 单链表快速排序算法实现
  3. html表格以pdf格式导出到本地
  4. java与html5的区别_HTML4和HTML5的区别
  5. 设计模式 - 依赖倒置原则
  6. 【算法】剑指 Offer 59 - II. 队列的最大值
  7. WEB 开发异常:java.lang.ClassNotFoundException
  8. 机器学习算法与Python实践之逻辑回归(Logistic Regression)
  9. CDN实战:访问苹果开发者网站太慢、访问github太慢
  10. 信息论基础知识:【信息熵 不确定性】
  11. openssl 加盐_nodejs-md5加盐到解密比对
  12. PS教程:快速蒙版抠图
  13. JavaScript 中 typeof 和 instanceof 的区别及如何判断数组
  14. 计算机组成原理:MIPS
  15. 计算机windows错误恢复,教你“Windows错误恢复”的修复方法技巧
  16. 入手域名的渠道介绍!
  17. 新农慕课python小测验答案_python面向对象程序设计_章节测验,期末考试,慕课答案查询公众号...
  18. 沈阳大学博客网站的设计与实现
  19. 函数相乘和相除的导数及证明
  20. java常见的面试题

热门文章

  1. wine模拟器安装xshell
  2. 银河麒麟安装Wine
  3. Android开发方向,我们如何选择?
  4. 【0709作业】简易的购房商贷月供计算器
  5. 方维直播Android打包流程
  6. python客户端开发自行车租赁系统_Python数据可视化——共享单车数据分析
  7. JS:中文输入法,日文输入法做最大位数Check的坑maxlength
  8. 万用表蜂鸣器档の响一声
  9. EasyClick 原生UI 制作水印图
  10. 灵遁者组诗:无数个存在的可能