
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),僅供參考