Tolaria 表格公式完全指南:IronCalc 引擎、跨笔记引用与 195 个内置函数目录 Tolaria 表格公式完全指南IronCalc 引擎、跨笔记引用与 195 个内置函数目录【免费下载链接】tolariaDesktop app to manage markdown knowledge bases项目地址: https://gitcode.com/GitHub_Trending/to/tolariaTolaria 的表格Sheet编辑器在标准电子表格公式之上叠加了一层vault 感知的引用语法公式可以像 wikilink 一样指向另一篇笔记的单元格、frontmatter 标量属性甚至笔记正文的某一行原文。本文以官方参考文档 spreadsheet-functions 为核心系统讲解基本公式语法、三种跨笔记引用形式的语义边界以及 195 个公式函数目录的完整清单并结合 src/utils/sheetFormulaAutocomplete.ts、src/utils/sheetWorkbook.ts 等源码说明这些引用在求值前是如何被解析和替换的帮助你在 Tolaria 中构建可跨笔记联动的财务模型与追踪表。一、公式引擎IronCalc 负责计算Tolaria 负责引用Tolaria 的公式单元格以开头求值统一委托给 IronCalc——一个面向 Web 的电子表格引擎它瞄准 Excel 兼容的公式行为。Tolaria 在此之上增加的只有vault 感知的笔记引用其余行为应视为 IronCalc 的公式语义。需要明确的前提IronCalc 上游仍在演进文档自称其公式能力仍在完善中因此对精度要求高的复杂公式建议先对照 IronCalc 官方文档验证参考文档中也专门列出了 IronCalc 的不支持特性页面。这意味着在 Tolaria 中使用时要注意上游文档中更新的函数未必存在于 Tolaria 打包的 IronCalc 版本中Tolaria 的公式补全菜单暴露的是打包版本实际实现的函数目录而不是上游全部函数。一个 sheet 笔记的完整形态见 concepts/spreadsheets 中的示例frontmatter 携带type、_display: sheet等元数据正文是 CSV 风格的文本公式直接以SUM(B2:D2)这类形式内联存储展示状态冻结行、列宽、单元格数字格式放在_sheet系统元数据下。演示库中的 24q4.md、tolaria-sheet-prototype-sample.md 等文件都可以作为可打开的样例。二、基本公式语法参考文档给出的基础语法表如下全部继承自 IronCalc 语义语法含义B2B3-B4单元格算术运算SUM(B2:D2)对区域调用函数ROUND(E6, 2)带参数的函数调用IF(E60, Up, Down)条件表达式$B$2行列均绝对引用B$2列相对、行绝对$B2列绝对、行相对B2:D10当前 sheet 笔记内的区域Q 1文本拼接当公式依赖运算优先级时使用括号显式分组(B2B3-B4)/B5三、Tolaria 跨笔记引用三种目标形式Tolaria 的核心增量是把 wikilink 语法引入了公式[[目标]].访问路径。源码中这三类引用各有独立的识别正则定义在 src/utils/sheetExternalReferences.ts单元格引用: [[note]].$?A1式地址 # [[target]].B5 / [[target]].$B$5 正文行引用: [[note]].1基数字行号 # [[target]].2 属性引用: [[note]].点路径 frontmatter # [[target]].power.watts三类引用按单元格地址 → 行号 → 属性路径的先后顺序在公式文本上做替换。注意优先级带来的实际约束首个看起来像 A1 地址的段如B2会被当作跨 sheet 单元格引用所以给 frontmatter 属性命名时应避免与 A1 记法冲突参考文档原文即此约定。3.1 跨 sheet 单元格引用[[newsletter-revenue]].B5 SUM(B2:D2)[[sponsorship-pipeline]].E12 ROUND([[business-plan]].$E$12, 2) [[launch-brief]].2[[...]]内的目标按普通 Tolaria wikilink 规则解析支持别名、路径、文件名.md等形式点号后的单元格地址使用 A1 记法。绝对标记遵循电子表格的复制语义引用复制行为[[revenue]].B5行、列都可能随粘贴位置偏移[[revenue]].$B$5行、列固定[[revenue]].B$5行固定列可偏移[[revenue]].$B5列固定行可偏移当前限制跨 sheet 引用只解析单个单元格跨笔记的区域引用尚未成为稳定的文件格式特性区域公式请保留在同一 sheet 笔记内。从源码看这个单格约束背后还有一组工程细节src/utils/sheetWorkbook.ts 的resolveExternalCellReference被引用笔记若本身是 sheet会先递归构建其工作簿再取格值若被引用的格是公式取的是它的格式化后的计算结果getFormattedCellValue而非公式原文若目标解析回当前笔记自身引用会直接降级为本 sheet 内的普通单元格地址localSheetCellReference即[[self]].B5等价于$B$5风格的本地引用存在MAX_EXTERNAL_FORMULA_DEPTH 4src/utils/sheetWorkbook.ts的嵌套深度上限超过深度的链式跨笔记引用不会被继续解析。3.2 读取 frontmatter 标量属性[[device.md]].power.watts [[project-alpha]].status [[book-notes/the-design-of-everything-things.md]].rating目标同样按 wikilink 解析点路径读取嵌套 frontmatter 键。取值到公式字面量的转换规则在 src/utils/sheetWorkbook.ts 中可以逐条对上数字 → 数值字面量非有限数值则转为NA()布尔 →TRUE()/FALSE()字符串 → 带引号的文本字面量缺失笔记、目标有歧义、属性缺失、数组、映射以及其他非标量值一律解析为#N/A。目标解析策略也值得注意frontmatterReferenceEntryResolution先尝试含/的路径后缀匹配再依次尝试文件名主干、别名、标题含连字符转空格的拟人化形式任一组匹配到多条笔记即判为歧义结果同样是#N/A。3.3 读取笔记正文的原始行[[launch-brief]].1 [[launch-brief]].2行引用读取任意笔记正文中一整行原始 Markdown 文本行号排除 YAML frontmatter从 1 开始计数整行文本中的逗号被保留为文本不会被当作 CSV 分隔与[[note]].A1的网格语义区分开后者是单元格访问可能拆分发号分隔的内容前者返回整行原文。实现上bodyLinelineFormulaLiteral若整行内容本身可识别为数字会被转成数字字面量参与算术否则作为文本字面量行号越界同样落到#N/A。3.4 求值流程先替换后交给 IronCalcuseSheetExternalFormulaResolution.ts 展示了完整管线编辑器的内容变化会触发对公式中的三类外部引用扫描把 vault 内容带笔记缓存与预取组装成依赖集合然后由resolveExternalFormulaInputsrc/utils/sheetWorkbook.ts把公式文本中的[[...]].xxx逐个替换为公式字面量如1250、Draft、NA()替换完成后的纯 IronCalc 公式才进入引擎求值。源码中还有一条可观察的防御逻辑只要有任何引用未能全部解析该公式在本次构建中保持原样unresolved时返回null等待依赖笔记内容就绪后重试——这与 vault 内容的异步缓存加载prefetchNoteContent/subscribeNoteContentResolved配合保证跨笔记公式在依赖到位前不会算出错误值。四、公式补全与 195 个函数目录Tolaria 的公式自动补全暴露的是打包 IronCalc 引擎实际实现的函数目录当前共195 个函数按 9 个分类组织。这份目录与 src/utils/sheetFormulaAutocomplete.ts 中的IRONCALC_FUNCTION_GROUPS逐名一致可直接作为可信的已实现清单Logical11 个AND、FALSE、IF、IFERROR、IFNA、IFS、NOT、OR、SWITCH、TRUE、XORMath and trigonometry28 个ABS、ACOS、ACOSH、ASIN、ASINH、ATAN、ATAN2、ATANH、COS、COSH、PI、POWER、PRODUCT、RAND、RANDBETWEEN、ROUND、ROUNDDOWN、ROUNDUP、SIN、SINH、SQRT、SQRTPI、SUM、SUMIF、SUMIFS、TAN、TANH、SUBTOTALLookup and reference13 个CHOOSE、COLUMN、COLUMNS、HLOOKUP、INDEX、INDIRECT、LOOKUP、MATCH、OFFSET、ROW、ROWS、VLOOKUP、XLOOKUPText22 个CONCAT、CONCATENATE、EXACT、FIND、LEFT、LEN、LOWER、MID、REPT、RIGHT、SEARCH、SUBSTITUTE、T、TEXT、TEXTAFTER、TEXTBEFORE、TEXTJOIN、TRIM、UNICODE、UPPER、VALUE、VALUETOTEXTInformation17 个ERROR.TYPE、FORMULATEXT、ISBLANK、ISERR、ISERROR、ISEVEN、ISFORMULA、ISLOGICAL、ISNA、ISNONTEXT、ISNUMBER、ISODD、ISREF、ISTEXT、NA、SHEET、TYPEStatistical14 个AVERAGE、AVERAGEA、AVERAGEIF、AVERAGEIFS、COUNT、COUNTA、COUNTBLANK、COUNTIF、COUNTIFS、GEOMEAN、MAX、MAXIFS、MIN、MINIFSDate and time8 个DATE、DAY、EDATE、EOMONTH、MONTH、NOW、TODAY、YEARFinancial28 个CUMIPMT、CUMPRINC、DB、DDB、DOLLARDE、DOLLARFR、EFFECT、FV、IPMT、IRR、ISPMT、MIRR、NOMINAL、NPER、NPV、PDURATION、PMT、PPMT、PV、RATE、RRI、SLN、SYD、TBILLEQ、TBILLPRICE、TBILLYIELD、XIRR、XNPVEngineering54 个BESSELI、BESSELJ、BESSELK、BESSELY、BIN2DEC、BIN2HEX、BIN2OCT、BITAND、BITLSHIFT、BITOR、BITRSHIFT、BITXOR、COMPLEX、CONVERT、DEC2BIN、DEC2HEX、DEC2OCT、DELTA、ERF、ERF.PRECISE、ERFC、ERFC.PRECISE、GESTEP、HEX2BIN、HEX2DEC、HEX2OCT、IMABS、IMAGINARY、IMARGUMENT、IMCONJUGATE、IMCOS、IMCOSH、IMCOT、IMCSC、IMCSCH、IMDIV、IMEXP、IMLN、IMLOG10、IMLOG2、IMPOWER、IMPRODUCT、IMREAL、IMSEC、IMSECH、IMSIN、IMSINH、IMSQRT、IMSUB、IMSUM、IMTAN、OCT2BIN、OCT2DEC、OCT2HEX补全交互的源码细节参考文档说输入时下拉框显示一小撮按排名排列的匹配项继续输入可收窄列表含数字和点的函数名如BIN2DEC、ERFC.PRECISE也被支持。对应到 src/utils/sheetFormulaAutocomplete.ts 的实现有四个可验证的行为参数仅当编辑内容以开头才进入公式补全matchFormulaAutocomplete的守卫条件前缀必须达到2 个字符MIN_FORMULA_PREFIX_LENGTH 2才开始弹候选最多显示8 条候选MAX_FORMULA_SUGGESTIONS 8与文档中a small ranked set of matches一致token 边界正则/[\-*/^(,;{]/与 token 字符集/^[A-Z0-9.]$/解释了为什么ERROR.TYPE、ERF.PRECISE这类带点的名称能整名匹配——点号被视为 token 合法字符。选中候选后applyFormulaSuggestion插入的是FUNC(并把光标移到括号内若光标处已有左括号则只补函数名。另外COMMON_FUNCTION_METADATA为 40 余个高频函数SUM、IF、VLOOKUP、XLOOKUP等提供了显式签名如INDEX(range, row, column)其余函数回退为FUNC(...)通配签名或无参函数的FUNC()FALSE、NOW、PI、TODAY等被显式列为无参函数。五、实战示例从合计到跨 sheet 模型参考文档按场景给出的示例公式全部可直接复制使用5.1 合计SUM(B2:D2) B2B3-B4 SUM(B2:D2)-SUM(B4:D4)5.2 增长与百分比(C5-B5)/B5 IF(B50, 0, (C5-B5)/B5) ROUND((C5-B5)/B5, 4)结果按百分比展示时把该单元格的数字格式num_fmt存储于 frontmatter 的_sheet.cells下设为0.00%。concepts/spreadsheets 中的最小示例笔记演示了完整写法E6单元格配置num_fmt: 0.00%正文的 Growth 行全部用(C5-B5)/B5形式的公式。5.3 条件逻辑IF(E510000, On track, Review) IFS(E510000, High, E55000, Medium, TRUE, Low) IFERROR(B5/B4, 0)5.4 日期TODAY() DATE(2026, 6, 15) YEAR(TODAY()) MONTH(TODAY())5.5 文本CONCAT(A2, - , B2) UPPER(A2) TRIM(A2) TEXT(B2, $#,##0.00)5.6 查找INDEX(B2:E10, 3, 2) MATCH(Revenue, A2:A20, 0) VLOOKUP(Revenue, A2:E20, 5, FALSE) XLOOKUP(Revenue, A2:A20, E2:E20)5.7 跨 sheet 模型[[newsletter-revenue]].E5 SUM(B2:D2)[[sponsorship-pipeline]].E12 IF([[business-plan]].$E$120, [[business-plan]].$E$12, 0) [[launch-brief]].2这正是 Tolaria 一笔记一 sheet 数据模型的直接体现多表模型不靠多 tab而是靠多 sheet 笔记 wikilink 单元格引用串联如newsletter-revenue.md、sponsorship-pipeline.md、refactoring-business-plan.md各自独立成文件公式跨文件取数。六、上游函数族与能力边界参考文档按 IronCalc 的分类给出函数族索引Lookup and reference、Financial、Engineering、Database、Statistical、Text、Math and trigonometry、Logical、Date and time、Information并指向 IronCalc 官方文档中关于值类型value types、错误类型error types、可选参数optional arguments与数值格式化formatting values的章节以及不支持特性清单。阅读这些上游资料时请记住参考文档的原文提醒上游文档可能包含 Tolaria 打包的 IronCalc 版本中尚不存在的函数。据此给出三条使用准则以本文第四节的 195 函数目录作为 Tolaria 当前可用的硬边界目录外函数名即使能输入也不保证可求值跨 sheet 引用只用单格[[note]].B5形式区域公式留在当前 sheet 内需要跨笔记的区域效果时用显式单元格引用逐项组合遇到#N/A时按 3.2 节的规则排查缺失笔记、目标歧义、属性缺失或非标量数组/映射都会归一到NA()这是设计内的降级而非数据损坏。七、与 HTML 块 Vault Expressions 的复用关系参考文档开头还指出与[[note]].field相同的目标形式同样可用于 HTML 块中的 vault expressions{{...}}语法与 HTML 格式化辅助函数见 vault-expressions。也就是说公式中的 vault 感知引用并非表格专属能力而是 Tolaria 中跨笔记取数的共享协议sheet 公式与 HTML 块表达式共用同一套[[note]].目标形式区别只在于外层语法公式 vs{{...}}表达式。小结Tolaria 的公式体系 IronCalc 的标准公式语义 三种 vault 感知引用跨 sheet 单格、frontmatter 标量、正文原始行 打包版本 195 函数的补全目录。跨笔记引用在求值前由 src/utils/sheetWorkbook.ts 替换为公式字面量解析失败统一降级为#N/A嵌套深度上限为 4函数补全的行为参数2 字符触发、最多 8 条候选、点号合法可在 src/utils/sheetFormulaAutocomplete.ts 中逐条核对。掌握这些边界后你可以放心地用纯文本、Git 可 diff 的 Markdown 文件搭建跨笔记联动的财务模型、收入管道与项目追踪表。【免费下载链接】tolariaDesktop app to manage markdown knowledge bases项目地址: https://gitcode.com/GitHub_Trending/to/tolaria创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考