我需要帮助。
似乎我在这个网站上偶然发现的所有宏都要求我写出我正在连接和合并的所有行。我想知道我是否可以用一段时间或if语句来做这件事。与此同时,
我需要合并一个超过21000个名称的表(其中一半以上是重复的),但每个名称重复的数据都有原始缺失的数据,反之亦然,或者有时在每列下有不同的数据,我需要合并他们。还有34个(最多AF)列。
谢谢, 埃迪
P.S。显然我需要至少10个声望来发布图片,所以如果你想要我正在寻找的截图,请通过我的帐户名给我发消息。
P.S.S。 因此,在与通过评论提供帮助的人协商后,我编写了这个基于java的伪代码。当我开始自己学习VBA时,有人可以帮我翻译成VBA吗?他们也可以验证它在理论上有效吗?我希望在一天结束时完成这项工作,这就是我要求翻译帮助的原因,但我计划在不久的将来能够自己完成这项工作。
//创建用于比较的主键,使用最后一个单元格作为PK以便于线条完成 //创建连接比较键(conKey)以比较单元格并合并 //导入新工作表并创建单元格位置以写入新工作表。
Create PK1 = (cell) AF1
Create PK2 = (cell) AF2
Create conKey1 = (cell) A1
Create conKey2 = (cell) A2
Create newSheet = [a new sheet]
Create writeLine = A1
//Initialize while loop. This list lasts until it reaches the last person's name
While(conKey2 <= maxClient) {
//Initialize the if statement. It finds out whether merge is necessary
If(PK1.equals(PK2)) {
//Initialize while loop. This lasts until PK1 no longer equals PK2
while(PK1.equals(PK2)) {
//Initialize if loop. It checks to see if the values are not equal. if so, it concatenates into conKey1
if(!conKey1.equals(conKey2)) {
conKey1 = concatenate(conKey1,", ",conKey2)
}
//Export cell to writeLine of newSheet. Shift everything to the right. verify writeLine equals conKey1
//Clear the doubled cell for safe keeping and to assist us in closing the while loop.
exportTo(newSheet.writeLine, conKey1)
conKey1.shiftsRight
writeLine.coordinates(equals(conKey1))
conKey2 = ""
conKey2.shiftsRight
}
//After this while loop is finished, delete the blank row.
//coordinates of PK1 and PK2 should remain the same at this point
deleteRow(PK2)
//If the merge was not necessary it will skip all of that above and shift each variable down a row.
} else {
PK1.nextRow
PK2.nextRow
conKey1.nextRow
conKey2.nextRow
writeLine.nextRow
}
答案 0 :(得分:0)
如果SQL是一个解决方案,并且所有值的MAX值都是可接受的值...那么使用ODBC,定义的表和自引用可能会起作用..
它从表1中获取数据,例如:
如果向导已完成(步骤5-11),然后在步骤16中更新了SQL,您将获得类似的内容
这是我使用的命令文本。因为它的SQL可以改变以适应你的需要max,concat,无论
Select firstName, MiddleName, LastName, max(attrib1), max(attrib2), max(attrib3), max(attrib4)
From `yourPath&FileName.xlsx`.`YourDefinedName`
GROUP BY firstName, MiddleName, LastName