1

我有一个包含大时间表的 Word 文档,其中有 n 行,每行与一天中的活动相关。我在表格的一列中为每个活动分配了持续时间 D(以分钟为单位)和活动开始时间 T,其中 T(N+1) = T(N)+D(N):

Name      | Time  | Duration
Activity1 | 09:00 | 5
Activity2 | 09:05 | 10
Activity3 | 09:15 | ...

我希望时间列是一系列公式,以便如果我更改开始时间或持续时间、添加或删除一行,它们会正确更新整个表。

目前我每次都将列表导出到 excel 进行计算,我不想嵌入工作表,因为压力不要从文档的创建者那里更改表格。

有没有办法在word中做到这一点?

4

2 回答 2

0

wrt 我对行插入的评论,您可以使用以下域代码来执行此操作。

假设时间在 B 列,初始时间在 B2,持续时间只是 C 列中的分钟数类型。

然后在 B2 中,您有以下字段。要设置初始时间,用户必须显示字段并修改 { SET } 字段中的时间。或者,您可以改用 ASK 字段。

{ SET s "09:15" }{ SET m { ={ref s \@HH }*60+{ref s \@mm } } }{ SEQ r \r2 \h }{ SET t1 "mod(int((m+SUM(C{ SEQ r \c }:C" }{ SET t2 "))/60),24)*100+mod(m+SUM(C{ SEQ r \c }:C" }{ SET t3 "),60)" }{ref  s }

在 B3 及以下,您将需要以下字段:

{ SET c "{ t1 }{ SEQ r \c }{ t2 }{ SEQ r \c }{ t3 }"  }{ SEQ r \h }{ ={ c } \#00:00 }

时间计算在 c 中建立,例如在 B5 中,

mod(int(initial_time_in_minutes+SUM(C2:C5))/60),24)*100+mod(initial_time_in_minutes+SUM(C2:C5),60)

所有 {} 都是特殊的字段代码大括号对,您可以使用 ctrl-F9 在 Windows Word 中输入,用户必须选择列并按 F9 重新执行字段。如果您愿意,可以消除这些字段中的很多空格。您可能需要避免使用看起来像单元格地址的书签名称(“t1”等)

于 2014-01-25T09:58:06.317 回答
0

我最终确定了一个类似于上述 bibadia 的解决方案,但没有引用该列:

表格前的字段是:

设置表格的开始时间

{ set th {9}  }

设置表格的开始分钟

{ set tm {15} }

然后在每次单元格中粘贴以下字段:

打印时间

{ ref th \# 00 }:{ ref tm \# 00 }

从右边的列中获取增量并添加到分钟

{ set tm { = SUM(RIGHT, { ref tm }) } }

从 tm 中删除任何时间并增加时间(这不像 bibadia 那样考虑 24 次翻转)

{ set th { = SUM ({ ref th }, int({ ref tm }/60)) } }

获取剩余分钟数

{ set tm { = mod({ref tm, 60}) }}
于 2014-01-28T14:00:37.543 回答