最后更新:2026 年 5 月 28 日
想象一下:你正盯着自己的项目管理软件,心里嘀咕:"等等,数组公式真的属于这里吗?" 我是说,我们通常觉得公式无非就是加加减减数字的玩意儿,对吧?先别急着下结论。
因为事情是这样的:当一个项目里有一大堆任务、各自忙活着各自的事时,你必须成为掌控各项指标的高手,才能取得成功。这正是数组公式大显身手、力挽狂澜的时刻。在这篇博文中,我将向你展示这些精彩的公式如何为你的数据玩法增添亮色。准备好以前所未有的方式深入你的项目世界吧!
数组公式适用于所有订阅套餐。更多信息请见我们的价格页面。
数组是一组数据的集合,比如任务、负责人、时长和数字。数组公式让你能够在选定的数据集合(也就是一个数组)中执行多项计算。
例如,如果你想计算一个任务的进度偏差,可以这样写一个公式:
timeSpent - estimated
接着,如果你想计算所有子任务的进度偏差,可以这样写公式:
subtasks.timeSpent - subtasks.estimated
它看起来可能有点陌生——我稍后会解释。这里你只需要知道,在上面的公式中,subtasks 是子任务的集合,而借助数组公式,你可以像处理普通数值一样,直接用一个数组减去另一个数组。
你只需在任务描述中输入公式,并用 {{ 和 }} 把它括起来,就能体验公式的运作方式。更多信息请访问我们的指南。
在 Quire 的公式中,你可以用 [ 和 ] 来构建任意数组。例如,你可以这样得到一个由 1、2、3 组成的集合:
[1, 2, 3]
接着,如果你想乘以某个数值,可以这样做:
[1, 2, 3] * 5
结果会是
[5, 10, 15]
此外,你还可以对两个数组进行运算:
[1, 2, 3] - [2, 1, 3]
结果会是
[-1, 1, 0]
好了,现在我们可以来解释前面提到的那个公式了:
subtasks.timeSpent - subtasks.estimated
假设我们有三个子任务,它们花费的时间分别是 1h、2h 和 3h,预计时间分别是 2h、1h、3h。那么,subtasks.timeSpent 实际会计算为 [1h, 2h, 3h],而 subtasks.estimated 会计算为 [2h, 1h, 3h]。于是,结果就是 [-1h, 1h, 0h]。
1h 表示 1 小时的时长。更多信息请访问我们的指南。
要对一组数据进行排序,你只需使用 sort 函数:
sort([3, 1, 5, 2, 4]) * 2
它会返回以下结果:
[2, 4, 6, 8, 10]
它等价于 sort(3, 1, 5, 2, 4) * 2
如果你只想筛选出前三个元素,可以这样使用 limit 运算符:
sort([3, 1, 5, 2, 4]) * 2 limit 3
如果你想筛除较小的数值,可以这样使用 where 运算符:
[3, 1, 5, 2, 4] where any > 4
它会返回以下结果:
[3, 5]
any 是一个关键字,用来表示 where 运算符左侧数组中的每一个值。
让我们回到那个计算进度偏差的公式,再来玩一玩:subtasks.timeSpent - subtasks.estimated.
它会返回所有子任务的时间偏差。现在假设我们想取回任务本身,而不是进度偏差,那么可以这样使用 order by 运算符:
subtasks order by any.timeSpent - any.estimated
默认的排序是升序。你可以用 desc 关键字将它改为降序,如下所示:
subtasks order by desc any.timeSpent - any.estimated
下面是一个更高级、更复杂的公式。来试试看你能不能看出它想做什么:
subtasks where any.timeSpent > 1d and any.due < tomorrow and any.priority >= high order by desc any.timeSpent - any.estimated limit 3
用起来易如反掌——只需创建一个带公式的自定义字段。比方说,你一心想盯紧每个任务到底花了你多少钱。首先,你可以定义一个自定义字段,比如 Cost,用来记录每个任务的成本。

接着,你可以定义另一个字段,例如 Total Cost,用来计算每个任务(包括其子任务)的总成本,如下所示。

有几点值得注意:
Cost 和 cost 是等价的,SUBTASKS 和 subtasks 也是如此。{ 和 } 把它括起来。这就是为什么你在上面的公式中会看到 {Total Cost}。让我们再深入了解一下 Total Cost 是如何计算的。首先,假设我们有三个任务:A、B 和 C。其中,B 和 C 是 A 的子任务。另外,你为 A、B、C 输入的 Cost 分别是 50、30、10。那么,
SUM(30, 10, 50),也就是 90。
这里还有一种使用公式的妙招——你可以把它们直接放进项目描述里。想象一下你希望显示整个项目的总成本,只需在项目描述中写下类似这样的内容:
Total cost: {{SUM(tasks.{Total Cost})}}
其中:
{{ 和 }} 把它括起来。此外,一旦你输入 {{,就会有一个自动补全对话框帮你完成公式。tasks 是一个内置标识符,代表项目中的所有任务。同样,它也不区分大小写。如果我们想知道成本最高的 5 个任务,可以这样做:
{{tasks order by desc any.{Total Cost} limit 5}}
或者,如果你想列出耗时过多的任务:
{{tasks where any.timeSpent - any.estimated > 1d order by desc any.timeSpent - any.estimated limit 5}}
只要支持 markdown,你就可以把公式放进任何描述中,包括任务和评论。你甚至可以通过在同事个人资料的描述中写下合适的公式,来汇总他们的工作表现。
要了解和探索 Quire 数组公式能为你带来什么帮助,你可以在任务描述中亲自试一试。这样反复尝试、试错会更方便。
数组公式让你能够对数据集合(任务、子任务、自定义字段)进行运算,而不只是处理单个数值。例如,subtasks.timeSpent - subtasks.estimated 只需一行就能返回每个子任务的进度偏差。
打开任意任务描述,用双花括号把公式括起来,随着你的输入,自动补全对话框就会弹出。同样的用法也适用于评论、项目描述和自定义字段。
sort 会重新排列数组,limit 会返回前 N 个元素,而 where 则使用 any 关键字进行筛选。它们可以串联使用,因此你可以先按花费时间降序排列子任务,再限制为前 3 个。
可以。任何支持 Quire 风格 markdown 的字段都支持在双花括号内使用公式,包括任务描述、项目描述和评论。
对数组进行的算术运算、比较运算、sort/limit/where/order by,以及 SUM、AVG 这类聚合运算。完整参考请见 Quire 公式指南。
好了,关于 Quire 数组公式的内幕,你都掌握了——它正是你最得力的项目管理好帮手。而且你猜怎么着?Quire 可不只是赶上了数组公式这趟车,它干脆就是开车的那个人!它是先行者,是开拓者——史上第一款为你带来数组公式的项目管理软件,而且不止于此,它还玩得游刃有余。
在 Quire 里,数组公式不只是一项功能,更是一种打磨到极致的体验。所以,如果你一心想为项目洞察力大幅提速,Quire 的数组公式定会让你眼前一亮。准备好用 Quire 强大的数组公式来计算数据、发掘洞见,把你的项目管理提升到全新的高度吧。你的项目会因此感激你——你那条理分明、热爱数据的另一面也会同样感激你!