可以用数据透视表功能完成,步骤如下:
1、选中数据区域中的任意一个单元格。
2、点击【插入】,在【表格】分组,找到【数据透视表】。
3、在打开的【创建数据透视表】对话框中,单击确定。
4、在【数据透视表字段】设置菜单,把A列添加到【行标签】报B列添加到【值】区域。
如下图,即可达到要求的效果。
给你写的代码,你不要吗?
编程实现:
ALT+F11——F7——粘贴如下代码(注意换行)——F5运行
Sub mysub()
Dim i As Long, j As Long, k As Long
Range("c1") = [a1]
Range("d1") = [b1]
j = 1
For i = 2 To [a65536].End(xlUp).Row
If Range("c:c").Cells.Find(Range("a" & i), , , lookat:=xlWhole) Is Nothing Then
j = j + 1
Range("c" & j) = Range("a" & i).Value
Range("d" & j) = Range("b" & i).Value
Else
k = Range("c:c").Cells.Find(Range("a" & i), , , lookat:=xlWhole).Row
Range("d" & k) = Range("d" & k) & "," & Range("b" & i).Value
End If
Next i
End Sub
——————————————————————以下是不换行的纯代码——————
Sub mysub()
Dim i As Long, j As Long, k As Long
Range("c1") = [a1]
Range("d1") = [b1]
j = 1
For i = 2 To [a65536].End(xlUp).Row
If Range("c:c").Cells.Find(Range("a" & i), , , lookat:=xlWhole) Is Nothing Then
j = j + 1
Range("c" & j) = Range("a" & i).Value
Range("d" & j) = Range("b" & i).Value
Else
k = Range("c:c").Cells.Find(Range("a" & i), , , lookat:=xlWhole).Row
Range("d" & k) = Range("d" & k) & "," & Range("b" & i).Value
End If
Next i
End Sub
一个笨办法,先按A列排序,然后在C列用if函数,=if(Ai+1=Ai),Bi+1+Bi,Bi+1
i和i+1为下标