如果存在重复项,则合并单元格值

时间:2013-07-22 05:55:37

标签: excel excel-vba excel-2007 vba

如果列A中存在重复项,我想合并B列中的值

   A    B
  123   A
  123   B
  123   C
  456   D
  456   E
  789   F

我的输出应该是这样的

  A     B
 123    A B C
 456    D E
 789    F

我有大量的数据,很难手动完成,所以你们有任何想法在Excel的宏中做到这一点吗?

任何帮助将不胜感激。谢谢你提前

3 个答案:

答案 0 :(得分:2)

我作弊,并使用如下公式; 1)按A列排序

2)在col C中,添加一个公式来测试当前的公式是否为最后一个(假设有一个标题,将其放在C2中

=if(A2<>A3,TRUE,FALSE)

现在,这应该只适用于一系列相同ID

中的最后一个单元格

3)在Col D中,添加一个公式,用于连接ID是否相同,

=if(A2=A1,D1&" "&B2,B2)

4)在C列上过滤以仅显示每个系列中的最后一个单元格。

干杯。

答案 1 :(得分:1)

您可以使用以下宏:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)

    cnt = 10
    For i = 2 To 7
    strg = strg + Cells(i, 2)
    If Cells(i + 1, 1) <> Cells(i, 1) Then
    Cells(cnt, 1) = Cells(i, 1)
    Cells(cnt, 2) = strg
    cnt = cnt + 1
    strg = ""
    End If
    Next

End Sub

将从Cells 10

打印所请求的数据

答案 2 :(得分:1)

如果您希望相同单元格中的结果数据存在原始数据,即不存在于单元格10中,则必须将源数据存储在二维数组中。然后从数组我们使用上面的代码将数据插入原始数据存在的相同位置。这里是列表来完成任务:

Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim names(2 To 7, 2)
For i = 2 To 7
names(i, 1) = Cells(i, 1)
names(i, 2) = Cells(i, 2)
Next
On Error Resume Next:
Sheet1.Cells.Clear
 cnt = 2
    For i = 2 To 7
    strg = strg + names(i, 2)
    If names(i + 1, 1) <> names(i, 1) Then
    Cells(cnt, 1) = names(i, 1)
    Cells(cnt, 2) = strg
    cnt = cnt + 1
    strg = ""
    End If
    Next

End Sub

请注意我已经声明了带有两个dimesnions的names数组来存储数据。然后搜索数组以获得结果。