Actual 怎么添加 Formula card 在报表仪表盘运行 Excel 公式
2026/9/12 3:15:36 网站建设 项目流程

Actual 怎么添加 Formula card 在报表仪表盘运行 Excel 公式

【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual

本文的目标是在 Actual Budget 的 Reports 仪表盘上添加一个 Formula card(公式卡片),让它按照你的 Excel 风格公式计算并展示结果,比如收入减支出的差值、两个账户的余额合计、或某个时间段内预算类别的支出总额。Formula card 属于Excel formula mode这一实验特性的一部分,它底层使用 HyperFormula 求值,公式必须以=开头。由于该功能仍在实验阶段,最新稳定版中可能没有此项,文档建议使用nightly版本获取最新实现;启用任何实验特性时文档也建议保持定期备份的习惯。

先开启 Excel formula mode 实验特性

Formula card 的入口在实验特性开关后面,按 实验特性说明 的路径操作:

  1. 进入Settings -> Show advanced settings -> Experimental features
  2. 先同意免责声明(agree to the disclaimer),之后才能看到可启用的实验特性列表。
  3. 勾选Excel formula mode (Formula cards & Rule formulas)

未开启该开关时,后面添加小部件的选择列表里不会出现 Formula card 选项。

在 Reports 仪表盘上添加 Formula card

开关生效后,按以下步骤添加卡片(步骤来自 formulas 文档):

  1. 进入Reports页面(即报表仪表盘,仪表盘本身支持自由定制,见 报表仪表盘说明)。
  2. 点击Edit dashboard
  3. 点击Add widget
  4. 在可选类型中选择Formula card

添加后点击卡片即可打开编辑器,公式、命名查询和卡片样式都在编辑器里配置并保存。

在编辑器里编写公式

Formula card 编辑器包含几个区域,从上到下依次是:

  • Result:公式的当前求值结果,修改公式时会随之更新;
  • Formula:公式输入区。内置自动补全和悬停帮助(autocomplete and hover help),可从中查看函数用法;
  • Font size:结果文字的字号模式,可选 Dynamic 或 Static(Static 时可指定像素值);
  • Query Definitions:右侧面板,用于定义可被QUERY(...)引用的命名查询。

写公式的第一条硬性要求:=开头。文档给出的基础示例:

=SUM(1, 2, 3)

编辑器右侧有Query Definitions面板,可以按报表过滤器的方式定义数据范围。Formula card 还能对数字做格式化,FORMATNUMBER/FORMATCURRENCY在省略可选参数时会沿用应用内的格式设置,也可以按单次公式覆盖分隔符和货币符号,例如:

=FORMATCURRENCY(1234.5, "€", 2, ".", ",", "after", TRUE())

其中symbolPosition参数接受"before""after"spaceBetweenAmountAndSymbol参数接受TRUE()FALSE()

用命名查询和 BALANCE_OF 引用真实数据

纯常数公式只能验证环境,真正有用的是引用账目数据。文档支持两类引用方式:

方式一:命名查询QUERY("name")

在编辑器的Query Definitions面板中定义命名查询,步骤是:

  1. 点击Add Query并给它起名——这个名字就是公式里QUERY("...")引用的字符串;
  2. 设置日期范围:Live(范围随时间移动,例如“最近 3 个月”)或Static(固定起止日期);
  3. 添加Filters,过滤条件与报表过滤器风格相同。

然后在公式中引用:

=QUERY("income") - QUERY("expenses")

规则如下(incomeexpenses替换为你在 Query Definitions 里实际定义的查询名):

  • QUERY("myQuery")返回该查询过滤条件和日期范围内交易金额的总和,单位是普通“金额”单位(例如-123.45);
  • 查询名不存在时结果为 0——这是文档明确的行为,公式不会报错,因此拼错查询名时卡片会静默显示 0,需要回查 Query Definitions 里的名字;
  • QUERY_COUNT("name")则返回匹配行数,可用于和QUERY配合算平均金额。

方式二:账户余额BALANCE_OF("name")

不想建命名查询时,可以直接引用账户当前余额:

=BALANCE_OF("Checking") + BALANCE_OF("Savings")
  • 参数是带引号的账户 id(确定性匹配)或带引号的账户名(精确名称匹配),把示例中的账户名替换成你自己预算中的账户名即可;
  • 返回值是该账户当前余额,单位与普通金额相同(例如-123.45);
  • 账户找不到时结果为 0,同样是静默行为。

可选:预算查询BUDGET_QUERY

如果你使用信封式预算(envelope budget),还可以直接查询预算维度的数字,语法为:

=BUDGET_QUERY("dimension", categories, startMonth, endMonth)
  • dimension取值为budgetedspentbalance_startbalance_endgoal之一,分别对应区间内预算总额、支出总额、首月期初结余、末月滚动结余(预算 + 支出 + 结转)和目标总额;
  • categories推荐用QUERY_EXTRACT_CATEGORIES("queryName")从命名查询的过滤条件中提取类别集合;若该查询没有类别过滤条件,则包含全部非收入、非隐藏类别;
  • startMonth/endMonthYYYY-MM格式,或分别用QUERY_EXTRACT_TIMEFRAME_START("queryName")/QUERY_EXTRACT_TIMEFRAME_END("queryName")复用查询的日期范围。

文档给出的示例——统计与命名查询expenses相同类别、相同时间段的总支出:

=BUDGET_QUERY("spent", QUERY_EXTRACT_CATEGORIES("expenses"), QUERY_EXTRACT_TIMEFRAME_START("expenses"), QUERY_EXTRACT_TIMEFRAME_END("expenses"))

结果单位与QUERY()一致。函数完整清单(含各函数是否可用于 Formula card,文档表格中的 “Query” 列)见 formulas 文档的 Function reference 一节;文档也说明,未列出的函数不一定不可用,可参考 HyperFormula 的内置函数列表。

可选:条件颜色公式

Formula card 支持一行可选的Conditional color公式,返回值是red#ff0000这类颜色字符串。用RESULT变量引用主公式的计算结果,例如根据主公式结果是否为负来决定卡片文字颜色。留空则使用默认样式。

保存并验证卡片

编辑器右上角有Save widget按钮,保存后应用会弹出Dashboard widget successfully saved.通知;卡片标题可在编辑器顶部的标题处直接编辑保存。验证是否配置成功的路径:

  1. 编辑器中 Result 区域显示出公式的计算值(而非错误信息);
  2. 保存后回到 Reports 页面,新卡片上展示同样的数值;
  3. 若引用了命名查询或BALANCE_OF,结果为 0 时先核对查询名/账户名是否拼写正确——按前文说明,不存在的名字不报错而是返回 0。

限制与前提

  • 实验特性:文档明确提示该功能可能不在最新稳定版中,需要使用nightly镜像/版本才能拿到最新实现;启用实验特性前建议定期备份预算文件。
  • Rule formulas 不在本文范围:同一个实验开关同时启用规则公式(Rules 编辑器中用 ƒ 按钮开启),那是给规则“set field”动作用的,变量单位是“分”(cents),与 Formula card 的金额单位不同,不要混用两套变量说明。
  • 静默返回 0QUERY查询名不存在、BALANCE_OF账户找不到,都返回 0 而不是报错,这是公式排错时最需要留意的行为。
  • 编辑器中公式支持多行;自动补全与悬停提示只覆盖文档列出的函数子集,未列出的函数仍可能可用。

【免费下载链接】actualA local-first personal finance app项目地址: https://gitcode.com/GitHub_Trending/ac/actual

创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询