使用 NEXTIF 或 VBA 而不是插件,使用 .CSV 文件对发票进行 Word 多对一合并

问题描述 投票:0回答:1

我使用的是Word 2021。通过搜索我知道人们说Word仍然无法进行“多对一”邮件合并,但是如果您使用“NEXTIF{}”和变量来比较具有相同记录号的事物,是这样的可以使用合并字段甚至VBA吗?我的限制是我需要使用 .CSV 文件(转换为其他文件只会添加一个步骤),并且我无法控制给我的数据格式。例如,只有第一行包含相同顺序的事物的重复数据(名称、日期等)。由于同样的原因,ManyToOne 插件不是一个选项。

我的合并字段和脚本为“订单 ID”保存一个变量,以将最后一个与当前订单进行比较,如果相同,则将它们输入到发票上的表格中,如果不同,则跳到下一条记录。我的问题是,在一张发票上的最后一项之后,NEXTIF{} 导致它转到下一条记录,因此它会跳过它所在的记录。我丢失了下一张发票上的第一项(记录)。我需要能够拥有上一个记录功能,或者在不前进的情况下对下一个记录进行测试。

数据格式如下:

这是嵌入的合并字段代码。第二行重复我在页面上有空间的行数。我正在打印 MERGESEQ、MERGEREC、ID1 和 ID2 以进行调试。

ms-word mailmerge
1个回答
0
投票

从我迄今为止的研究来看,似乎没有办法在没有“作弊”的情况下做到这一点,因为你需要能够将一个记录与另一个记录进行比较。一旦您执行“NEXTIF”来获取该字段数据,您就会进入下一条记录并且无法返回。

我的“作弊”基于此处的 YouTube 视频 https://www.youtube.com/watch?v=MIfid43hlHw,是在 Excel 中打开 CSV 并创建一个宏,插入一个空白行,转到最后一个列 + 1 并添加一个名为“比较”的标题,返回到第一列,复制该数据 (order_id) 并将其向上偏移 1 粘贴到新列中。然后,它删除插入的行(以及粘贴列中的第一条记录)并将其保存回来。

其作用是将下一条记录的 order_id 输入到当前记录的数据中,以便在合并文档中进行比较。

以下是表中处理数据的前 2 行。为了允许发票/装箱单上需要的项目数量,您可以将第二行剪切并粘贴到剩余的每一行中。我的数据包括每个 order_id 的第一个记录(已售出商品)中的运输总额和订单总额,因此我将它们保存起来供以后使用。

第一条记录正常打印。下一行的第一列保存“model_number”(当前项),如果 order_id 与比较字段(下一条记录的 order_id)相同,则使用 NEXTIF 转到下一条记录。如果此测试为 false,我们完成后将进入下一张发票。

如果确实转到下一条记录,则我将 ID2 设置为下一条记录的 model_number。因为发票上不能有多个具有相同型号的商品(如果他们订购了更多商品,它只会增加数量),因此这是检查和抑制每行测试的输出(如果有)的最简单的比较没有要打印的项目。如果没有这个,如果只有一个项目具有该 order_id,则第一个项目将在每行中重复多次。

© www.soinside.com 2019 - 2024. All rights reserved.