2013-07-22 35 views
0

我想,如果在列中存在重复一个合并单元格的值,如果重复存在

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 

我有大量的合并在B列中的值的数据,它很难手动,所以你们有任何想法在Excel中的宏?

任何帮助将提前appreciated..Thanks

+0

循环+连接... – matzone

+0

感谢您的提示,但iam新尝试宏.. – Bharu

回答

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 

请注意,我已经声明名称数组与两个dimenesion存储数据。然后搜索数组以获得结果。

+0

非常感谢你@Ranan U把我的工作时间花在了几分钟的时间里。我需要一个连续值之间的空格。 – Bharu

+0

是的,我通过添加strg = strg +“”+ names(i,2)获得了值之间的空格。非常感谢你,现在它完美无缺。 – Bharu

2

我欺骗和使用的公式如下: 1)排序列A

2)在山口C,添加公式来测试是否当前的一个是最后(假设有一个报头,把这个在C2现在

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

,这仅应是在一系列在山口d相同的ID的

3),添加一个公式,如果ID是相同的级联的最后一个单元真,

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

4)列C过滤至SHO w只是每个系列中的最后一个单元格。

干杯。

+0

对不起,当我尝试这个我的输出为0CD0列D这不是我的预期输出,你有没有想法?任何方式谢谢你的帮助.. – Bharu

+0

我不知道你如何结束了十六进制代码.....检查你有一个标题行,并且你的公式从第2行开始。 – RowanC

+0

Im sorry Rowan它的工作感谢你.. + 1,现在我想删除列A中的重复单元格除了最后生成的单元格,如何做到这一点任何猜测? – Bharu

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 

所请求的数据会从细胞中印10

+0

谢谢你@Rangan它的工作+1,我想在串联值之间添加一些空格,我尝试了strg =“”,但不工作。 – Bharu

+1

@Ranan:不是将答案发布为不同的用户,而是可以删除此答案并将其与上述答案合并?如果不是,请删除此答案。 – shahkalpesh