Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1711|回复: 6

[已解决]excel分类合并,高手帮忙下,谢谢。

[复制链接]
发表于 2013-12-20 16:59 | 显示全部楼层 |阅读模式
QQ截图20131220161519.png
    A B列是数据   ,要得到C D列的结果,  b列字符长短不一,有数字有文字。   谢谢了!


新建 WinRAR 压缩文件管理器.rar (3.61 KB, 下载次数: 13)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2013-12-20 17:01 | 显示全部楼层
先下载看看                        
回复

使用道具 举报

发表于 2013-12-20 17:29 | 显示全部楼层
数字的汇总15位数字以内,还可以考虑用公式,一旦超过15位,函数公式就无能为力了,只能用VBA来完成。

点评

数字没法连接,可用函数加技巧,最好还是VBA。  发表于 2013-12-20 20:23
回复

使用道具 举报

发表于 2013-12-20 19:42 | 显示全部楼层
若即有文本又有纯数字,合并就用VBA吧,见附件:
VBA-汇总.rar (9.66 KB, 下载次数: 12)
回复

使用道具 举报

 楼主| 发表于 2013-12-21 11:19 | 显示全部楼层
CheryBTL 发表于 2013-12-20 19:42
若即有文本又有纯数字,合并就用VBA吧,见附件:

大神,   太感谢你了。     你说我要看哪些书籍才能看懂那些代码呢?
回复

使用道具 举报

发表于 2013-12-21 12:33 | 显示全部楼层    本楼为最佳答案   
自下而上汇总,就可以省掉字典,再减化下:
  1. Sub 汇总()
  2.     Dim ar, re
  3.     Dim i As Integer, str As String
  4.     ar = Sheets(1).Range("A1:B" & Sheets(1).[a65536].End(3).Row)
  5.     ReDim re(1 To UBound(ar), 1 To 2) As String
  6.     For i = UBound(ar) To 1 Step -1
  7.         If i = 1 Then
  8.             re(i, 1) = ar(i, 1)
  9.             re(i, 2) = ar(i, 2) & str
  10.         Else
  11.             If ar(i, 1) <> ar(i - 1, 1) Then
  12.                 re(i, 1) = ar(i, 1)
  13.                 re(i, 2) = ar(i, 2) & str
  14.                 str = ""
  15.             Else
  16.                 str = ar(i, 2) & str
  17.             End If
  18.         End If
  19.     Next i
  20.     Sheets(1).[c1].Resize(UBound(re), 2) = re
  21. End Sub
复制代码
回复

使用道具 举报

发表于 2013-12-21 12:34 | 显示全部楼层
loading_zzz 发表于 2013-12-21 11:19
大神,   太感谢你了。     你说我要看哪些书籍才能看懂那些代码呢?

可以在站内搜索,VBA80集视频来学习
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-5-3 12:06 , Processed in 0.365475 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表