使用VBA将具有相似数据的列排序到同一行中
我正在尝试使用最简单的方法合并包含类似数据的行,但我认为这需要一些VBA。如果有人能给我指出正确的方向那就太好了 我试图实现的一个例子是:使用VBA将具有相似数据的列排序到同一行中,vba,excel,excel-formula,excel-2010,Vba,Excel,Excel Formula,Excel 2010,我正在尝试使用最简单的方法合并包含类似数据的行,但我认为这需要一些VBA。如果有人能给我指出正确的方向那就太好了 我试图实现的一个例子是: NAME | AGE| AREA John | 32 | Portsmouth Will | 32 | Portsmouth Matt | 28 | Southampton Dave | 32 | Portsmouth Phil | 28 | Southampton Tony | 25 | Winchester 变成: AGE| AREA
NAME | AGE| AREA
John | 32 | Portsmouth
Will | 32 | Portsmouth
Matt | 28 | Southampton
Dave | 32 | Portsmouth
Phil | 28 | Southampton
Tony | 25 | Winchester
变成:
AGE| AREA | Name 1 | Name 2 | Name 3 |
32 | Portsmouth | John | Dave | Will |
28 | Southampton | Matt | Phil | |
25 | Winchester | Tony | | |
编辑:我已经成功地将我需要的内容堆积在一起,但是它似乎将不重复的数据放在了同一列中,而不是我首选的Name 1 | Name 2 | Name 3
是否有更新此内容以填充单独的单元格而不是相同的单元格的想法
以下是最新消息:
Sub mergeCategoryValues()
Dim lngRow As Long
With ActiveSheet
Dim columnToMatch As Integer: columnToMatch = 2
Dim columnToConcatenate As Integer: columnToConcatenate = 1
lngRow = .Cells(65536, columnToMatch).End(xlUp).Row
.Cells(columnToMatch).CurrentRegion.Sort key1:=.Cells(columnToMatch), Header:=xlYes
Do
If .Cells(lngRow, columnToMatch) = .Cells(lngRow - 1, columnToMatch) Then
.Cells(lngRow - 1, columnToConcatenate) = .Cells(lngRow - 1, columnToConcatenate) & "; " & .Cells(lngRow, columnToConcatenate)
.Rows(lngRow).Delete
End If
lngRow = lngRow - 1
Loop Until lngRow = 1
End With
End Sub
执行此操作时:
If .Cells(lngRow, columnToMatch) = .Cells(lngRow - 1, columnToMatch) Then
你希望进入这种状态吗?
如果lngRow之前设置为7,columnToMatch为1,除非单元格(7,1)和(6,1)具有相同的信息,否则它不会做任何事情。没有人会为您编写代码,因此我不清楚您的要求是什么,请说
为我指出正确的方向。在这种情况下,正确的方向是什么?如果你不知道任何VBA,你可以雇佣一名自由职业者,但如果你知道一些,展示你解决问题的尝试,然后告诉我们什么不起作用,以及你到底被困在哪里。目前,您的问题与堆栈溢出无关。请参阅以获取信息。对于您的困惑,我深表歉意,但按照正确的方向,我并不是指有人为我完成这项工作。只需给我指出一些需要研究的地方或一些需要研究的函数,这样我就可以编写自己的代码了。尽管我并不自称了解VBA,但我最终还是可以找到解决方案。要求我们推荐或查找工具、库或喜爱的非现场资源的问题对于堆栈溢出来说是离题的,因为它们往往会吸引固执己见的答案和垃圾邮件。相反,请描述问题以及迄今为止为解决问题所做的工作谢谢你通知我,经过一些挖掘和整理,我已经更新了这个问题,使其看起来更合适。对不起,我从web上提取了一些代码,但忘了更新它以适应我的问题。现在,我已将column的值更改为match
的正确列。您如何删除“;”
分隔符,而将合并的数据放在单独的列中?@Giles您可以执行以下操作: