VTable2 公式功能
1. 功能概述
VTable2 内置了强大的公式计算引擎,支持类似 Excel 的公式功能,可以让用户直接在表格中进行数据计算和分析。主要特点包括:
- 支持丰富的内置函数,如 SUM、AVERAGE、IF 等超过 40 种常用函数
- 提供智能的公式编辑器,带有自动完成和语法高亮功能
- 支 持单元格引用和范围选择
- 可进行多表格引用和计算
- 支持公式依赖追踪和自动重新计算
- 检测并避免循环引用问题
2. 支持的公式函数
VTable2 支持的函数包括但不限于:
数学函数
- SUM: 计算总和,例如 =SUM(A1:A10)
- AVERAGE: 计算平均值,例如 =AVERAGE(B2:B8)
- MAX/MIN: 获取最大/最小值,例如 =MAX(C1:C20)
- ROUND: 四舍五入,例如 =ROUND(A1, 2)
- ABS: 绝对值,例如 =ABS(A1)
逻辑函数
- IF: 条件判断,例如 =IF(A1>10, "高", "低")
- AND/OR: 逻辑与/或,例如 =AND(A1>5, A1<10)
- NOT: 逻辑非,例如 =NOT(A1=0)
文本函数
- CONCATENATE: 文本连接,例如 =CONCATENATE(A1, " ", B1)
- LEFT/RIGHT: 提取左侧/右侧字符,例如 =LEFT(A1, 3)
- LEN: 计算文本长度,例如 =LEN(A1)
日期函数
- TODAY: 获取今天日期,例如 =TODAY()
- NOW: 获取当前日期和时间,例如 =NOW()
- YEAR/MONTH/DAY: 提取年/月/日,例如 =YEAR(A1)
查找函数
- VLOOKUP: 垂直查找,例如 =VLOOKUP(A1, B1:C10, 2, FALSE)
- INDEX/MATCH: 索引匹配,例如 =INDEX(A1:C10, MATCH(D1, A1:A10, 0), 2)
3. 公式编辑器
VTable2 提供了一个功能齐全的公式编辑器,帮助用户高效地输入和编辑公式:
- 智能提示: 输入"="后自动提示可用函数
- 自动完成: 键入函数名称的前几个字母,显示匹配的函数列表
- 参数提示: 输入函数时显示参数说明和用法
- 错误检查: 检测括号匹配、语法错误等
- 范围选择: 在输入公式时可直接点击选择单元格或拖动选择范围
- 选取范围高亮: 对公式选取范围进行颜色区分
4. 实现原理
VTable2 的公式系统主要基于以下组件实现:
核心计算引擎
VTableSheet 自身开发了 FormulaEngine 模块 作为核心的计算引擎:
- 支持大多数常见的 Excel 函数
- 构建依赖图以跟踪单元格之间的引用关系
- 高效的增量计算,只重新计算受影响的单元格
公式管理架构
公式系统主要由以下几个部分组成:
- FormulaManager: 核心管理类,负责与 FormulaEngine 交互,处理公式计算和单元格状态管理
- FormulaEditor: 处理公式输入和编辑界面
- FormulaAutocomplete: 提供智能的函数和单元格引用提示
- FormulaRangeSelector: 处理单元格和区域选择逻辑
- CellHighlightManager: 管理公式相关单元格的高亮显示
公式解析与计算流程
- 用户输入公式,以"="开头
- 公式编辑器解析输入内容,提供函数提示和参数提示
- 公式提交后,FormulaManager 将其传递给 FormulaEngine
- FormulaEngine 解析公式,构建依赖图,执行计算
- 结果返回并显示在单元格中
- 当依赖的单元格更新时,系统自动重新计算受影响的公式(TODO)
5. 使用示例
基本公式输入
- 点击单元格并输入"="符号开始公式
- 输入函数名称或直接引用单元格
- 按 Enter 键确认输入
示例:
=SUM(A1:A10) // 计算A1到A10的总和
=A1+B1*C1 // 基本运算
=IF(D1>100, "大", "小") // 条件判断
手动输入公式:

单元格引用与范围选择
- 在输入公式时,点击其他单元格可自动插入其引用
- 拖动可选择一个区域范围
- 支持绝对引用($A$1)和相对引用(A1)
输入单元格引用和范围选择:

公式复制
当复制包含公式的单元格时,引用会自动调整:
- 相对引用会根据位置偏移调整
- 绝对引用保持不变

填充柄自动填充
当选中区域存在公式的时候,利用填充柄拖拽自动填充单元格的公式。

多工作表支持(TODO)
支持在公式中引用其他工作表的单元格:
=Sheet2!A1 // 引用Sheet2的A1单元格
=SUM(Sheet3!B2:B10) // 计算另一个工作表的区域总和
公式依赖追踪(TODO)
系统能够追踪公式之间的依赖关系:
- 自动更新:当依赖的单元格改变时,相关公式自动重新计算
- 循环引用检测:自动检测并警告循环引用问题
错误处理
支持常见的公式错误处理:
- #DIV/0!: 除以零错误
- #VALUE!: 值类型错误
- #REF!: 引用错误
- #NAME?: 名称错误
- #NUM!: 数值错误
7. 注意事项
- 公式必须以"="符号开头
- 函数名称不区分大小写
- 支持嵌套函数,如
=IF(SUM(A1:A5)>100, MAX(B1:B5), MIN(C1:C5)) - 单元格地址使用A1格式,如A1, B2, C3等
- 区域引用使用冒号分隔,如A1:B10
目前公式能力并不完善 如公式的联动处理,公式和排序以及拖拽行列换位都有冲突 手动配置了其他单元格编辑器editor后,公式能力会失效 后续会逐步完善这些功能,也欢迎有兴趣的开发者参与贡献