成为极客-03: 命令行玩转excel计算

今天10月24号,程序员日,特此写篇文章记住一下。

一直以来不太喜欢OFFICE,太笨重了,也搜索不了。
一般的文档用MARKDOWN就可以解决了。
可是如果涉及EXCEL的计算,也能不能用文本实现呢?

当然有,并且比EXCEL更加强大,因为我们可以调用LISP函数!

它是谁? 它是强大的emacs org-mode!

org-mode写文档比markdown也更加强大,gitlab跟github也都支持。
写文档的活太简单,markdown能干。
org-mode还可以轻松导出markdown, 还附送html, pdf, odf...
但是,org-mode有更崇高的理想,它不会满足于现状的。

它有更强大的杀手锏: 项目管理 + 表格计算!

项目管理方面文档比较多,这篇主要介绍表格计算功能!

  1. 打开CSV文件

  2. 常用编辑功能

  • 添 加水平分隔线
  • 移动大法
  • 交换大法
  • 删除大法
  • 插入大法
  1. 选择计算

  2. 调用公式

  • 公式范围选择
  • 填写公式
  • 函数调用
  • 范围计算
  1. 排序及过滤

  2. 高级功能

  • LOOKUP函数
  • 画图
  • 日期处理

一. emacs打开CSV文件

[larluo@nixos-larluo:~/my-tmp]$ emacs -nw data.csv
成为极客-03: 命令行玩转excel计算_第1张图片
image.png

输入alt+x, org-mode回车切换到org-mode
全选之后输入control+c, |键转换成表格


成为极客-03: 命令行玩转excel计算_第2张图片
image.png

二. 常用编辑功能

a. 添加水平分隔线

在第一行标题,输入[Control+C, -]即可


成为极客-03: 命令行玩转excel计算_第3张图片
image.png

b. 移动大法

移动至下面单元:下方向键 或Enter(自动创建新行)
移动至上面单元: 上方向键
移动至右边单元:Tab
移动至左边单元: Shift+Tab
移动至单元内容开始: Alt+a
移动至单元内容结束: Alt+e

c. 交换大法

左右行交换: Alt+左右方向键
上下行交换:Alt+上下方向键

d. 删除大法

清空当前单元: Control+C, 空格
删除当前列: Alt + Shift + 左方向键
删除当前行: Alt + Shift + 向上方向键

e. 插入大法

列前插入: Alt + Shift + 右方向键
列尾插入: 输入内容后,[Control+C,Control+C]刷新表格即可
行前插入: Alt + Shift + 下方向
行尾插入: Enter

三. 选择计算

通过矩阵选择需要计算的块,[Control+C, +]进行求和计算,底部显示结果


成为极客-03: 命令行玩转excel计算_第4张图片
image.png

四. 调用公式

1. 公式范围选择

@表示行,$表示列, @3$2表示第3行第2列单元,也可以使用B3表示

a. 打开窗格线

输入[Control+C, }]显示窗格线


成为极客-03: 命令行玩转excel计算_第5张图片
image.png

b. 查询单元格

在单元格内可输入[Control+C, ?]查看单元格位置,结果显示底部


成为极客-03: 命令行玩转excel计算_第6张图片
image.png

2. 填写公式

在单元格内填写公式,或者直接在表格底部编写公式即可

a. 使用单元格输入公式

在单元格内办理入:=后,填写公式内容
按着键入[Control+C, Control+C]刷新表格数据。

公式将自动生成到表格下方,当前单元格数据亦被计算出来


成为极客-03: 命令行玩转excel计算_第7张图片
image.png
成为极客-03: 命令行玩转excel计算_第8张图片
image.png

b. 直接在表格底部输入

在第一列前新增一列,在底部输入公式:
#+TBLFM: $1=#@-1
接着键入[Control+C, Control+C]刷新公式

成为极客-03: 命令行玩转excel计算_第9张图片
image.png

成为极客-03: 命令行玩转excel计算_第10张图片
image.png

3. 函数调用

函数调用分为两种方式: emacs calc模块函数以及elisp函数

a. emacs calc模块

参考文档:

  • https://orgmode.org/manual/Formula-syntax-for-Calc.html#Formula-syntax-for-Calc
  • https://www.gnu.org/software/emacs/manual/html_mono/calc.html

这里我们使用calc函数
新增一列后,调用calc函数计算平均值

在表格下方编写公式: #+TBLFM: $7=vmean($4,$5,$6)
键入Control+C, Control+C刷新即可

成为极客-03: 命令行玩转excel计算_第11张图片
image.png

b. elisp 函数

这里我们使用elisp函数
新增一列后,调用calc函数计算三门科的总分

在表格下方编写公式:: #+TBLFM: $8='(+ $4 $5 $6);N

成为极客-03: 命令行玩转excel计算_第12张图片
image.png

4. 范围计算

键入公式: #+TBLFM: @3$9..@4$9=vsum(@2$4..@4$6)
键入Control+C, Control+C刷新即可

成为极客-03: 命令行玩转excel计算_第13张图片
image.png

5. 排序及过滤

a. 单字段排序

这里对数学成绩进行排序
选择任一数学成绩单元格后键入[Control+C, ^]后,
按N进行数值模式从大到小排序


成为极客-03: 命令行玩转excel计算_第14张图片
image.png

成为极客-03: 命令行玩转excel计算_第15张图片
image.png

b. 多字段排序

需要编写代码,后续进行补充。。。

六. 高级功能

后续整理出来

a. LOOKUP函数

https://orgmode.org/manual/Lookup-functions.html#Lookup-functions

b. 画图

https://orgmode.org/manual/Org_002dPlot.html#Org_002dPlot

c.日期处理

https://orgmode.org/manual/Durations-and-time-values.html#Durations-and-time-values

你可能感兴趣的:(成为极客-03: 命令行玩转excel计算)