我正在使用 Windows Word 2010 进行测试。其他版本(尤其是在 Mac 上)的行为可能有所不同,因此请告诉我们您使用的是哪个版本。
以前,我假设您正在执行一对多合并(包含多页数据,但每页最多 5 行)。现在我再次阅读您的文字,我意识到您的数据源可能确实最多有 5 行,并且您正在寻找一种方法来检测不存在的行。假设是这样的话,那么...
重要的是您要“完成合并”,即输出到新文档或其他任何内容。预览合并只会让您了解将要发生的事情,并且有时可能会产生误导。
要测试不存在,您应该能够测试
{ IF { MERGEFIELD Product_ID } = "" }
正如我在之前的评论中指出的那样。尽管有时在预览期间可能不会显示预期结果,但它应该在您完成合并时显示预期结果。(它可能只需要更新字段才能在预览期间正确显示。
我怀疑与不显示总数有关的问题与您计算它们的方式有关。如果您使用的是运行总计而不检查每一行中是否存在值,那么事情可能会出错。显然,您的做法与我不同,因为我实际上看到了一条错误消息:
!Unexpected end of formula.
那就是如果我通过在页面开头添加以下内容来做到这一点
{ SET Total 0 }
以及每行中的以下计算
{ SET Total { =Total+{ MERGEFIELD Extended_Amount } } }
为了解决这个问题,我认为你需要做类似的事情
{ SET Total { =Total+{ IF { MERGEFIELD Extended_Amount } = "" 0 { MERGEFIELD Extended_Amount } } } }
但是,对于该计算,您可以使用完全不同的方法 - 选择表格,插入书签,比如说“数据表”,然后使用类似的字段
{ =SUM(datatable [F:F]) }
或者,如果您希望在输出文档中解析域代码,请使用
{ QUOTE { =SUM(datatable [F:F]) } }
如果您正在进行一对多合并(数据源中的记录超过 5 条),则 { NEXT } 字段方法将不起作用。我可以详细说明你需要做什么,但大纲是你必须有一些东西可以告诉你页面数据何时结束,并使用它来抑制不应该存在的行的输出。(有些人可能认为更简单的替代方法可能是在每页的第一行中设置一个行数,并有一个 IF 块根据行数插入正确数量的表行+内容。