2014-01-24 109 views
1

我有一个Word文档,里面有一个很大的时间表,每行有n行,与一天中的活动有关。我已经在表中的一列分配每个活动的持续时间d(以分钟计),和一个活动开始时间T,其中T(N + 1)= T(N)+ d(N):MS Word 2010:表格中的时间增量

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

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

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

有没有办法做到这一点?

+0

它不可能在Excel中复制表(风格明智的)? – James

+0

我认为你不允许将word文档中的表格与excel链接,因为它们与[此处显示]不同[http://office.microsoft.com/zh-CN/en-live-word-help/link -or-embed-an-excel-worksheet-HA010120810.aspx) – ajfstuart

+0

到目前为止,我一直在将表格复制到excel并更新列然后粘贴回去。但是经常有人会改变一个持续时间而不改变开始时间,并且表格最终会失去同步,所以我想在文档中找到一些补救措施。可悲的是,我无法嵌入,因为文档的创建者希望它保持字表。真的,整个文档应该是一个电子表格。 – Retiarius

回答

0

关于行插入的评论,你可以使用下面的域代码来实现。

我们假设时间是在列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”等))

+0

这看起来很像我想要的 - 我会试着让它工作! – Retiarius

+0

谢谢!我并没有这样做(我会在下面写我的),但这非常有帮助。作为字词公式的新手,我误读了'所有的{}都是特殊字段代码大括号',并且想知道为什么它会打印出'{'。另外,Alt + F9对于显示所有公式非常有用。 – Retiarius

+0

看起来不错 - 是的,我认为人们在阅读关于ctrl-F9的时候一般会釉下去,但是我发现除非你在消息中说出它,否则即使是曾经使用过字段的人有时最终会在键盘上输入字符第一。 – 2014-01-28 14:15:16

0

我最终决定采用很像bibadia的上面的解决方案,而列引用:

表之前的字段有:

设置表

{ set th {9} } 

设置起始时间该表的开始分钟数

{ set tm {15} } 

然后在每个时间单元粘贴以下字段:

打印时间

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

从TM获取从列增量的权利和添加到分钟

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

剥去任何时间,并加入到小时(不包括像bibadia一样的24转)

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

获取剩余分钟

{ set tm { = mod({ref tm, 60}) }}