单词:创建公式以在Word中减去日期

时间:2013-12-03 14:19:48

标签: vba ms-word ms-office

我在Word 2010中有一个表单,我正在尝试输入两个日期并获得天数差异。我尝试创建一个包含一行和三列的表。我在第一列和第二列中输入了数字,而在第三列中输入了公式=B1 - A1,而不是日期。数字有效,但没有日期。

是否可以输入两个日期并获得Wo​​rd 2010中的天数差异?我知道我可以轻松地在Excel中执行此操作,但由于表单很广泛,我想尝试在Word中执行此操作。

2 个答案:

答案 0 :(得分:1)

如果您使用的是VBA,则可以使用 DATEDIFF

答案 1 :(得分:1)

Word 2010中至少有3种类型的“内联表单”。所有这些都可以让您检测VBA中字段的更改。

  • 如果您使用的是旧的ActiveX表单(通常不推荐这些表单 天)你可以使用与每个控件相关的事件
  • 如果您使用的是所谓的“遗留表单”,则可以使用On 为每个字段输入和退出宏以调用VBA
  • 如果您使用的是内容控件,则可以使用内容控件 事件。

在这3个选项中,只有旧版表格在任何版本的Mac Word上都可用,并且在Mac Word 2008上无法使用VBA。

如果您想避免使用VBA并使用字段,则有两个主要注意事项:

  1. 公式字段{=}中没有日期函数或运算符。
  2. 表格单元格引用(参见A1,B1等)也只能使用 数字,而不是日期。
  3. 您可以通过将日期转换为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 }
    

    一些注意事项:

    • 这些字段代码基于here
    • 提供的计算结果
    • 变量名称稍微改变了(X1-> XA等),并且 计算已经改变了一点,因为没有FLOOR 功能在田野语言中,虽然有MOD功能 如果您希望字段编码工作,最好避免使用它 国际。
    • 在这种情况下,您可以省略两个“-1721119”表达式。
    • 如果您可以删除上述表达式中的大部分空格 比较喜欢 我在行的开头列出了带有“} {”的字段,因为当显示字段结果时,该方法会隐藏段落标记。
    • 请注意,预览/打印时可能会出现问题 在Word的字段更新设置。

    使用字段进行日期计算时,“macropod”有一篇更完整的论文。它使用稍微不同(可能更短)的算法版本,但本文还提供了向另一个方向前进的算法,依此类推。我认为您必须登录get a copy from here,但您可以在其他地方找到它。