-1

我有一个选择查询,它给出部分重复的行,我想将重复的行合并到一行中,非重复的值用逗号分隔。查询的当前输出是:

    **Contacts           Department                    Type**    
    Elena Stone          Biology                       Impact
    Elena Stone          Biochemistry                  Impact
    Elena Stone          Biotechnology                 Other

我想要的输出应该是:

    **Contacts           Department                                 Type**   
     Elena Stone          Biology,Biochemistry,Biotechnology        Impact,other

有人可以帮我如何得到这个。谢谢你

4

1 回答 1

0

要进入 VBA,请按 ALT+F11,这将调出编辑器。由于您不是在开发表单,因此您只需创建一个模块即可。转到“插入”,然后选择“模块”,您会看到Option Compare Database顶部有一个空白窗口。

要启动您的模块,您需要创建一个子函数并将代码放在那里:

Public Sub CleverNameHere()

    'Code

End Sub

保存时,不要将模块命名为与 相同的名称CleverNameHere,因为如果您必须调用它,那么它将看起来像这样ModuleNameHere.CleverNameHere,括号用于参数。

从那里你将只写一些东西来调用你的表,创建一个记录集,并逐行获取记录并对其进行操作,直到文件结束(EOF)。也许是这样的:

Public Sub CompareDuplicates()

Dim myR As Recordset
Dim myR2 As Recordset

Set myR = CurrentDb.OpenRecordset("Original_Table", dbOpenDynaset)
Set myR2 = CurrentDb.OpenRecordset("Duplicate_Table", dbOpenDynaset)

Do Until myR.EOF = True
    myR2.FindFirst ("Contacts = '" & myR![Contacts] & "'")
    If myR2.NoMatch = True Then
        myR2.AddNew
        myR2![Contacts] = myR![Contacts]
        myR2![Department] = myR![Department]
        myR2![Type] = myR![Type]
        myR2.Update
    Else
        myR2.Edit
        myR2![Department] = myR2![Department] & ", " & myR![Department]
        myR2![Type] = myR2![Type] & ", " & myR![Type]
        myR2.Update
    End If
    myR.MoveNext

Loop

Set myR = Nothing

End Sub
于 2013-09-05T19:16:43.013 回答