张芷铭的个人博客

Markdown表格公式语法总结

Markdown表格公式语法总结

原文链接:如何使用公式

概述

该库为Markdown表格添加了公式功能,格式类似Org Mode(功能稍简),支持复制单元格/行列/范围数据、求和、求平均、数值比较、代数运算等,公式需放在表格后的HTML注释中。

公式基本结构

公式格式固定为:
<!-- TBLFM: 目标=源 -->

  • <!-- --> 是HTML注释标记,内部需留空格
  • TBLFM: 是公式标识,后接空格
  • 核心为 目标=源:目标是结果存放位置,源是计算数据来源

核心语法

1. 单元格/行列引用

  • 行用 @ 表示,列用 $ 表示,格式为 @行$列(行前列后)
  • 绝对引用:直接用数字,如 @1(第1行)、$2(第2列)、@3$4(第3行第4列)
  • 相对引用:以当前单元格为基准,如 @-1(上一行)、$+2(右两列)
  • 特殊符号:
    • @< 第一行,@> 最后一行;$< 第一列,$> 最后一列
    • @I 表头下方第一行(内容起始行)

2. 范围表示

用两个点 .. 连接两个引用,表示连续范围(两边类型需一致,如行→行、单元格→单元格):

  • @1..@3:第1到3行(当前列)
  • @2$3..@5$5:第2行3列到第5行5列的单元格范围
  • $4..$6:第4到6列(当前行)

3. 运算类型

代数运算(需用括号包裹)

  • 加法:(@2$3+@3$4)(至少一个为单个单元格)
  • 减法:(@2$3-@3$4)(第二个操作数需为单个单元格)
  • 乘法:(@2$3*@3$4)(至少一个为单个单元格)
  • 除法:(@2$3/@3$4)(第二个操作数需为单个单元格)

条件操作

格式:if(比较表达式, 结果1, 结果2)

  • 比较表达式:仅支持单元格比较,用 <(小于)、>(大于)、<=>===(等于)、!=(不等于)
  • 示例:if($1>3, $1, 3)(若第1列值>3,取该值;否则取3)

4. 函数

  • sum(范围):求范围内所有值的和,返回单个结果
    示例:sum(@I..@-1)(表头下第一行到当前行上一行的和)
  • mean(范围):求范围内所有值的平均值,返回单个结果

5. 嵌套与链式公式

  • 嵌套:运算/函数可嵌套(需保证数据格式匹配),如 sum(@3..@4)+@3$1
  • 链式公式:多个公式用 :: 分隔或分多行,按顺序执行(前一个结果作为后一个的输入)
    示例:<!-- TBLFM: @2=@4::$1=$2 --> 或分两行写两个 <!-- TBLFM: ... -->

6. 格式选项

; 附加格式指令:

  • ;%.2f:保留2位小数
  • ;dt:显示为日期时间(如2023-07-12 10:00)
  • ;hm:显示为时分(如02:10)

时间与持续时间处理

  • 支持的格式:日期时间(2023-07-12 10:00)、毫秒数(1672559940000)、时分(09:15)
  • 运算:可直接加减(如 $2 - $1 计算时间差)
  • 示例:$5=($2 - $1);hm(计算时间差并显示为时分)

💬 评论