我遇到了一个数据库格式化问题,在这个问题中,我试图基于列“a”行连接列“b”行。就像这样:
https://docs.google.com/spreadsheet/ccc?key=0Am8J-Fv99YModE5Va3hLSFdnU0RibmQwNVFNelJCWHc
抱歉,我不能发布图片。我还没有足够的名誉点数。不过我最终还是会拿到的
所以我想用excel或access来解决这个问题。它目前是一个access数据库,但我可以很容易地将它导出到excel。如您所见,我想在A列中找到“userid”,如果有多个A列,比如“shawn”,我想合并Shawn的多个实例,并连接属性num。
即使A列仍然有多个实例,我也可以稍后筛选表的所有唯一实例。我关心的是如果A列有多个实例,如何将B列与中间的“”连接起来。
这只是我的一部分数据(还有很多),所以我非常感谢你的帮助。
到目前为止,我脑子里的伪代码是:
if(A列有多个实例)
然后连接(B列用“”+“”+“”表示)
我还想知道是否有一种方法可以通过分组来实现这一点。
不管怎样,请帮忙。

最佳答案

在excel中,通过vba模块中的自定义函数可以方便地实现。希望使用vba(宏)不是你的问题。
这是可以在vba中添加的函数的代码。(按Alt+F11,这将带您进入可视化编辑器,右键单击项目并添加模块。在模块中添加以下代码)

Public Function ConcatenatePipe(ByVal lst As Range, ByVal values As Range, ByVal name As Range) As String
ConcatenatePipe = ""
Dim i As Integer

For i = 1 To lst.Count
    If name.Value = lst.Item(i).Value Then ConcatenatePipe = ConcatenatePipe & "|" & values.Item(i).Value
Next
ConcatenatePipe = Mid(ConcatenatePipe, 2)
End Function

这个函数可以在excel的f列中使用。将下面的formulla复制到f2,然后将单元格复制粘贴到f列的其余部分。=ConcatenatePipe($A$2:$A$20,$B$2:$B$20,E2)

10-05 21:19
查看更多