我在Word 2010中有一个表单,我正在尝试输入两个日期并获得天数差异。我尝试创建一个包含一行和三列的表。我在第一列和第二列中输入了数字,而在第三列中输入了公式=B1 - A1
,而不是日期。数字有效,但没有日期。
是否可以输入两个日期并获得Word 2010中的天数差异?我知道我可以轻松地在Excel中执行此操作,但由于表单很广泛,我想尝试在Word中执行此操作。
答案 0 :(得分:1)
如果您使用的是VBA,则可以使用 DATEDIFF
答案 1 :(得分:1)
Word 2010中至少有3种类型的“内联表单”。所有这些都可以让您检测VBA中字段的更改。
在这3个选项中,只有旧版表格在任何版本的Mac Word上都可用,并且在Mac Word 2008上无法使用VBA。
如果您想避免使用VBA并使用字段,则有两个主要注意事项:
您可以通过将日期转换为Julian Day Numbers来解决点(1),并使用{=}减去结果数字。请参阅下面的一些建议代码。
只要您使用表单字段输入日期,就可以避免第(2)点中的问题。然后你可以使用表单字段的书签名称来获取文本,并使用日期字段切换“\ @”来获取当天。月份和年份数字。
因此,假设您的两个日期表单字段称为DA和DB。然后,您可以在文档中您想要结果的位置插入以下字段代码 - 请注意,所有{}对都必须是可以使用ctrl-F9输入的特殊字段代码括号。
{ SET MA { DA \@M }
}{ SET CA { =INT((14-MA)/12) }
}{ SET XD { ={ DA \@YYYY }-CA }
}{ SET XC { =INT(XDA/100) }
}{ SET XB { =XD-XC*100}
}{ SET XA { =MA+12*CA-3 }
}{ SET JA { =INT(146097*XC/4) + INT(36525*XB/100) + INT((153*XA+2)/5) + { DA \@D } + 1721119 }
}{ SET MB { DB \@M }
}{ SET CB { =INT((14-MB)/12) }
}{ SET YD { ={ DB \@YYYY }-CB }
}{ SET YC { =INT(YD/100) }
}{ SET YB { =YD-YC*100 }
}{ SET YA { =MB+12*CB-3 }
}{ SET JB { =INT(146097*YC/4) + INT(36525*YB/100) + INT((153*YA+2)/5) + { DB \@D } + 1721119 }
}{ =JB-JA }
一些注意事项:
使用字段进行日期计算时,“macropod”有一篇更完整的论文。它使用稍微不同(可能更短)的算法版本,但本文还提供了向另一个方向前进的算法,依此类推。我认为您必须登录get a copy from here,但您可以在其他地方找到它。