常用公式示例 Permalink
本指南提供实际应用的公式示例,帮助你在 Quire 中计算费用、合并数值、度量时间、应用条件逻辑以及整理任务数据。每个示例都展示了公式如何将原始任务数据转化为有价值的信息。
费用计算
要计算一个任务及其所有子任务的总费用,需要创建两个自订字段:
- 创建 Cost 自订字段。
- 字段类型:Number
- 小数位数:2
- 创建 Total Cost 自订字段。
- 字段类型:Formula
- 输入以下公式:
SUM(subtasks.{Total Cost}, Cost)
此公式将任务本身的费用与所有子任务的总费用相加。
查看 Quire 公式中所有可用的函数。
在单个字段中显示多个值
你可以使用数组公式一次性显示或计算多个值。数组是由任务、数字或文本值等项目组成的集合。
示例: 在单个字段中显示指定任务
[#2, #23]
这会以列表形式返回指定的任务。
提示: 在公式中,你可以使用任务标识符 #task_ID 来指定任务。
数组计算
数组公式允许你同时对多个项目执行相同的操作。
示例: 获取多个任务的到期日期
[#2, #23].due
等价于:
[#2.due, #23.due]
使用数组可以减少重复内容,提升公式的可读性。
了解更多关于 Quire 数组公式的内容,它能让你列举或计算一组数据。
持续时间计算
你可以用不同的单位计算两个日期之间的持续时间。
示例: 以天为单位计算持续时间
(due - start).days
这会返回开始与到期日期之间的天数。
注意: 结果会向上取整到最近的整数(即不小于实际值的最小整数)。例如,一小时的持续时间会被计为一天。
精确持续时间
若需更精确的结果,可以调整公式。
示例: 将小时数转换为天数
(due - start).hours / 24
提取日期信息
你可以从日期字段中提取各个组成部分,例如:
- 年
- 月
- 日
- 时
- 分
- 秒
- 星期
示例: 获取到期日期对应的星期
due.weekday
注意: 星期值采用数字格式,其中 1 = 周一,2 = 周二,以此类推。
工作日计算
使用 WORKDAYS 函数计算两个日期之间的工作日数。
WORKDAYS(start, due)
若开始与到期日期相同,结果为 1 天。
使用今天的日期
示例:
WORKDAYS(<today>, <tomorrow>)
返回结果为 2 天。
自定义周末配置
你可以定义哪些天算作周末。
WORKDAYS(start, due, weekend)
将 weekend 替换为以下值之一:
| 周末代码 | 视为周末的日期 |
|---|---|
| 1 | 周六、周日 |
| 2 | 周日、周一 |
| 7 | 周五、周六 |
| 9 | 周五、周日 |
| 11 | 周日 |
| 16 | 周五 |
条件逻辑
使用条件运算符 ?: 可以根据条件返回不同的结果,其作用类似于 IF 语句。
你可以设置两个结果:条件为真时显示第一个结果,条件为假时显示第二个结果。
示例:根据花费时间显示状态指示符(当任务的总花费时间超过 5 小时时)
timeSpent > 5h ? "🔴" : "🟢"
- 条件:
timeSpent > 5h - 为真时的结果:🔴
- 为假时的结果:🟢
排序与整理值
使用 SORT 函数将值按升序排列。
例如,若有 4 个子任务,其到期日期分别为 9月1日、8月23日、9月1日、7月30日:
SORT(subtasks.due)
结果:将子任务的到期日期从最早到最晚排序,并在字段中列出所有到期日期。
Jul 30, Aug 23, Sep 1, Sep 1
去除重复项
将 SORT 与 DISTINCT 函数结合使用。
从结果中可以看到,有两个子任务具有相同的到期日期(9月1日)。 尝试:
DISTINCT(SORT(subtasks.due))
结果:
Jul 30, Aug 23, Sep 1
按到期日期排序
使用 order by 运算符。
subtasks order by any.due
这会找到所有子任务并按其到期日期排序。
注意: 你可以将 any 标识符与 order by 运算符配合使用,指定排序所依据的字段。
了解 Quire 公式中所有可用的运算符和函数。
常见问题
如何在 Quire 的单个公式字段中显示多个任务的值?
使用数组语法 — [#2, #23].due 以列表形式获取任务 #2 和 #23 的到期日期。详见 Quire 数组公式。
如何在 Quire 中计算一个任务(含其所有子任务)的总费用?
创建名为「Cost」的数字字段和名为「Total Cost」的公式字段,然后输入 SUM(subtasks.{Total Cost}, Cost)。
如何在 Quire 中计算任务从开始到到期日期之间的天数?
使用 (due - start).days 获取向上取整的整天数,或使用 (due - start).hours / 24 获取更精确的结果。
如何在 Quire 中计算两个日期之间的工作日数?
使用 WORKDAYS(start, due)。可在第三个参数传入周末代码来自定义哪些天算作周末 — 例如,WORKDAYS(start, due, 7) 将周五和周六视为周末。
如何在 Quire 公式中提取日期的特定组成部分(如星期几或月份)?
使用点表示法 — due.weekday 返回星期数字(1 = 周一,7 = 周日)。同样的方式也适用于年、月、日、时、分、秒。
如何在 Quire 中编写条件公式?
使用 ?: 运算符 — timeSpent > 5h ? "🔴" : "🟢" 在花费时间超过 5 小时时显示红色指示符,否则显示绿色。
如何在 Quire 公式中对子任务的值进行排序?
使用 SORT(subtasks.due) 从最早到最晚排序。用 DISTINCT() 包裹可去除重复项:DISTINCT(SORT(subtasks.due))。