[英]MS Word 2010: time increment in table
我有一个 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中做到这一点?
在我对行插入的评论中,您可以使用以下域代码来执行此操作。
假设时间在 B 列中,初始时间在 B2 中,而持续时间只是 C 列中的分钟类型数。
然后在 B2 中,您有以下字段。 要设置初始时间,用户必须显示字段并修改 { SET s } 字段中的时间。 或者您可以改用 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”等)的书签名称。
我最终确定了一个类似于上面 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}) }}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.