【发布时间】:2015-06-27 17:11:15
【问题描述】:
快乐的骄傲日!
一个有点棘手的问题,我一直在努力解决。
我正在尝试将三列排序为 3 到 11 个单元格之间的随机长度行,其中 A 列和 B 列本质上是键。
我想要实现的一个简单示例是:
变成:
需要注意的一些关键事项:
- 一行中的最大单元格数应为 11。
- 一行中的单元格数量必须是随机长度,介于 3 到 11 之间,从不超过 11(随机化不是必需的)。
- 第一列 (A) 和第二列 (B) 是键。
以下是我一直在尝试修改以尝试此操作的一些代码,以及一些网站和 Stackoverflow 的人试图实现类似的事情以供参考。
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
参考资料:
【问题讨论】:
标签: vba excel excel-formula excel-2010