Excel VBA多行连续数据分类合并
Excel VBA多行连续数据分类合并
1. 案例说明:
需要将如下数据
合并为以下形式,并且新建一个工作表展示出来:
2. 实现代码:
打开EXCEL的VBA环境,将以下代码复制粘贴到新的模块中,运行"多行合并"这个Sub即可
Option ExplicitPrivate Function SheetExists(sname) As Boolean
' Returns TRUE if sheet exists in the active workbookDim x As ObjectOn Error Resume NextSet x = ActiveWorkbook.Sheets(sname)If Err = 0 Then SheetExists = True _Else SheetExists = False
End FunctionSub 多行合并()Dim new_sht As WorksheetDim source_sht As WorksheetDim last_row As LongDim last_column As LongDim temp_rng As RangeDim write_rng As RangeDim cur_row As LongSet source_sht = ActiveSheetIf Not SheetExists("合并后的表") ThenSet new_sht = Worksheets.Add(after:=Worksheets(Worksheets.Count))new_sht.Name = "合并后的表"new_sht.UsedRange.ClearElseSet new_sht = Worksheets("合并后的表")End If' 把原表激活source_sht.Activatelast_row = source_sht.Cells(Rows.Count, 1).End(xlUp).RowSet write_rng = new_sht.[a1]For cur_row = 1 To last_rowIf cur_row = 1 Thenlast_column = source_sht.[a1].End(xlToRight).ColumnSet temp_rng = source_sht.Range(Range("a1"), Cells(1, last_column))new_sht.[a1].Resize(1, temp_rng.Count) = temp_rng.ValueSet write_rng = new_sht.[a1].End(xlToRight).Offset(0, 1)ElseIf source_sht.Cells(cur_row, "a").Value = source_sht.Cells(cur_row - 1, "a").Value Thenlast_column = source_sht.Cells(cur_row, "a").End(xlToRight).ColumnSet temp_rng = source_sht.Range(Cells(cur_row, "b"), Cells(cur_row, last_column))write_rng.Resize(1, temp_rng.Count) = temp_rng.ValueSet write_rng = write_rng.End(xlToRight).Offset(0, 1)Elselast_column = source_sht.Cells(cur_row, "a").End(xlToRight).ColumnSet temp_rng = source_sht.Range(Cells(cur_row, "a"), Cells(cur_row, last_column))new_sht.Cells(write_rng.Row + 1, "a").Resize(1, temp_rng.Count) = temp_rng.Valuelast_column = source_sht.Cells(cur_row, "a").End(xlToRight).ColumnSet write_rng = new_sht.Cells(write_rng.Row + 1, "a").End(xlToRight).Offset(0, 1)End IfEnd IfNext cur_row
End Sub
Excel VBA多行连续数据分类合并相关推荐
- Excel·VBA按行拆分工作表
对应之前文章<Excel·VBA按列拆分工作表>,对Excel表格数据按照固定行数,将工作表拆分 工作表按行拆分为工作表 Sub 工作表按行拆分为工作表()'当前工作表(worksheet ...
- Excel·VBA多行多列数据简单汇总
目录 1,多行多列数据简单汇总 举例 2,数据汇总函数化.通用化 match函数 举例1 举例2 3,字典嵌套字典汇总数据 举例 不同于之前写过的 <Excel·VBA统计表生成函数及应用实例& ...
- Excel VBA中单元格的合并与拆分
对于合并单元格这里提供"从上到下"和"从下到上"合并单元格两种方式,"从上到下"的方法需要记录当前列有多少个相同的单元格和判断相应的单元格是 ...
- 4.Excel vba开发-多个sheet合并成一个
需求:多个sheet合并成一个 效果 代码 Sub 合并当前工作簿下的所有工作表() On Error Resume Next Application.ScreenUpdating = False A ...
- Excel·VBA工作表整列拆分为工作簿
不同于<Excel·VBA按列拆分工作表.工作簿>按某列的值对工作表拆分,仅按固定列数拆分工作表单独保存为工作簿,类似于<Excel·VBA按行拆分工作表> Sub 工作表整列 ...
- cxgrid 行合并单元格_【Excel VBA】如何批量撤销合并单元格?
周末好,之前我们分享了批量合并单元格的VBA小代码,链接参考: [Excel VBA]如何批量合并相同值单元格? 天下大势合久必分.分久必合.分分合合合合分分又合合合再分分分又又合合合合合合合---- ...
- Excel·VBA指定条件删除整行整列
目录 1,删除工作表所有空行 2,删除工作表所有空列 3,删除选中单列包含指定字符的行 举例 3.1,改进版 4,删除选中单列不含指定字符的行 举例 5,删除选中列重复的整行 举例 6,删除选中列唯一 ...
- Excel vba开发 合并单元格拆分自动填充功能、在每一条数据后面插入空白行、将地理坐标的经纬度转换成度等功能
写在前面: 最近老大丢给我一个数据量比较大,比较复杂的表,让我用VB去处理,刚被分到这个任务的时候一脸茫然,对Excel VB开发一点都不了解,所以就自己研究并查资料,最后终于解决了. 一.Excel ...
- 如何在 Excel VBA 中插入行
在本文中,我将解释如何使用VBA(Visual Basic for Applications)在Excel中插入行.VBA 是一种编程语言,适用于在Excel和其他Office程序中工作的人员,因此可 ...
最新文章
- 巨变的时代、人工智能AI带来颠覆性的影响、技术十大趋势
- 使用JMeter进行性能测试
- 云炬Android开发笔记 14 个人中心、图片裁剪、图片上传、收货地址、消息推送、权限管理等功能开发与一键式封装
- 用计算机打出圣诞树,手机计算器圣诞树的祝福输入方式,手机计算器圣诞树获得方法...
- Visual Studio 清单(manifest)导致的问题
- ZUI – 开源HTML5跨屏框架
- fmea手册_黄老师与您共读新版FMEA手册07-DFMEA功能分析
- 【异常】No suitable driver
- Excel的python读写
- Linux网络属性配置—修改配置文件
- 二级c语言准考证,考试准考证打印
- java流程图是什么形状,流程判断(流程图判断框什么形状)
- 【干货】最新app源码下载:200款优秀Android项目源码
- 一场农业“人机”对战,能否凿开农村致富新门路呢?
- amesim子模型_为什么amesim模型建立后有的元件没有可用的子模型
- 机器学习笔记 - 什么是联合概率分布?
- 企业微信没有50名员工可以扩容吗?客户数达到上限会怎样?
- linux开机画面视频,Linux系统的开机画面
- 超调量怎么计算公式_matlab超调量怎么计算 求超调量、上升时间、峰值时间、调节时间 - 西部娱乐网...
- P1548 [NOIP1997 普及组] 棋盘问题