Excel宏来维护数据包之间的关系

时间:2013-01-23 21:10:04

标签: excel excel-vba vba

这可能有点奇怪,但我正在研究已经存在的系统,并且正在寻找一种在不重组数据的情况下改进的方法。

我所拥有的是一个包含以下列和数据结构的电子表格。对于格式化道歉我不知道如何更好地解释这里的电子表格。

LocalizationPackId | TextValue | PageId | TargetId | ApplicationId
         1         |    xxx    |   1    |  AA1     |       1
         1         |    xxx    |   1    |  AB1     |       1
         2         |    xxx    |   1    |  AA1     |       1
         2         |    xxx    |   1    |  AB1     |       1
         3         |    xxx    |   1    |  AA1     |       1

当然,实际工作表中每个LocalizationPack中都有数百个条目。我正在寻找的是一种技术,用于验证LocalizationPackId = 1中包含的PageId + TargetId + ApplicationId的任何唯一条目是否也包含所有后续本地化包中的镜像条目。

在上面的示例中,我希望MACRO在运行时检查是否有任何缺失值。它会看到在LocalizationPack 1中有一个值1 / AB1 / 1,然后检查其他包的值。然后它会发现LocalizationPack 3缺少1 / AB1,并创建一个镜像来自LocalizationPack 1的原始行,除了正确的LocalizationPackId和TextValue =“NEEDS LOCALIZATION”。理想情况下,新创建的行也会以红色突出显示。

我对宏没有任何经验,但我对C#相当了解。有人可以帮助我开始这个或者指向一个能够展示完成这样的事情所需技术的指南吗?

1 个答案:

答案 0 :(得分:0)

我首先要使用公式而不是宏来识别缺少的本地化包。如果LocalizationPackId在单元格A1中,其他标签在第1行,数据从第2行开始,则第2行的合适公式为:

=COUNTIFS(C2:C$1000,C2,D2:D$1000,D2,E2:E$1000,E2)-(MAX(A2:A$1000)-A2+1)

...然后可以将所有相关行复制下来(我已经将公式排到第1000行,但它可以轻松地按照您的要求进行操作)。

(编辑)

以下是我的电子表格中的内容,上面的公式在G列中列出:

enter image description here

(编辑结束)

此公式的结果是与PageId,TargetId和ApplicationId的每个组合对齐的负数,显示在首次引入包之后包中缺少多少个本地化版本。

它不会告诉您哪个包缺少本地化,而是=COUNTIF()告诉您每个包中存在的本地化数量会指向正确的方向。

您可以自动执行搜索,以确定使用VBA确切地定义每个包中缺少的本地化但是,如果您不经常这样做,编写和调试VBA代码可能比它的价值更麻烦。上面的=COUNTIFS()公式可以自动且持续地保证不会丢失本地化。

如果您经常这样做,那么=COUNTIFS()列将是VBA代码自动执行该过程的良好开端。