热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

VBA将一个表格拆分成多个新表格

背景:业务给了一个大表格,里面几十万条数据,要拆分成成百上千个小表格,思来想去,vba做这件事是效率最高的。样表数据源:请按照这个表头在excel中制作样表(最好将样表放在一个空文

背景:业务给了一个大表格,里面几十万条数据,要拆分成成百上千个小表格,思来想去,vba做这件事是效率最高的。

样表数据源:
《VBA将一个表格拆分成多个新表格》
请按照这个表头在excel中制作样表(最好将样表放在一个空文件夹里面)
然后调出VB编辑器,输入如下代码运行

Sub 按A列区分内容并拆分到新表格()
Dim i%
arr = Sheets(1).[a1].CurrentRegion
Set d = CreateObject("scripting.dictionary")
For i = 2 To UBound(arr)
If d.exists(arr(i, 1)) Then '判断key是否存在
Set d(arr(i, 1)) = Union(d(arr(i, 1)), Rows(i)) '如果存在则将前面相同key的行和当前key对应的行合并成一个对象
Else
Set d(arr(i, 1)) = Union(Rows(1), Rows(i)) '如果不存在则把表头拿过来和当前行合并成一个对象
End If
Next i
For ss = 0 To d.Count - 1
Workbooks.Add
With ActiveWorkbook
d.items()(ss).Copy .Sheets(1).[a1] '将列A每一个值对应的行单独拿出来,粘贴复制到一个新表格
.SaveAs ThisWorkbook.Path & "/" & d.keys()(ss) '每个新表格的名字是列A的每一个值
.Close
End With
Next ss
MsgBox "工作薄拆分完毕!"
End Sub

运行结果如下:
《VBA将一个表格拆分成多个新表格》
一个表格拆成7个小表格

补充第二个情景:
按照每10行做为一个表格,切分成多个表格

Sub 按A列区分内容并拆分到新表格()
Dim i%
arr = Sheets(1).[a1].CurrentRegion
For i = 2 To UBound(arr)
If i Mod 10 = 0 Then
Workbooks.Add
With ActiveWorkbook
Union(Workbooks("test.xlsx").Sheets(1).Range("a1:e1"), Workbooks("test.xlsx").Sheets(1).Range("a" & (i - 9) & ":e" & i)).Copy .Sheets(1).[a1]
.SaveAs ThisWorkbook.Path & "/" & i
.Close
End With
End If
Next i
MsgBox "工作薄拆分完毕!"
End Sub

推荐阅读
  • Java 模式原型在游戏服务器架构中的应用与优化 ... [详细]
  • 本文介绍了如何利用Apache POI库高效读取Excel文件中的数据。通过实际测试,除了分数被转换为小数存储外,其他数据均能正确读取。若在使用过程中发现任何问题,请及时留言反馈,以便我们进行更新和改进。 ... [详细]
  • 本文深入探讨了CGLIB BeanCopier在Bean对象复制中的应用及其优化技巧。相较于Spring的BeanUtils和Apache的BeanUtils,CGLIB BeanCopier在性能上具有显著优势。通过详细分析其内部机制和使用场景,本文提供了多种优化方法,帮助开发者在实际项目中更高效地利用这一工具。此外,文章还讨论了CGLIB BeanCopier在复杂对象结构和大规模数据处理中的表现,为读者提供了实用的参考和建议。 ... [详细]
  • SQLite数据库CRUD操作实例分析与应用
    本文通过分析和实例演示了SQLite数据库中的CRUD(创建、读取、更新和删除)操作,详细介绍了如何在Java环境中使用Person实体类进行数据库操作。文章首先阐述了SQLite数据库的基本概念及其在移动应用开发中的重要性,然后通过具体的代码示例,逐步展示了如何实现对Person实体类的增删改查功能。此外,还讨论了常见错误及其解决方法,为开发者提供了实用的参考和指导。 ... [详细]
  • 机器学习中的标准化缩放、最小-最大缩放及鲁棒缩放技术解析 ... [详细]
  • 在 Angular Google Maps 中实现图片嵌入信息窗口的功能,可以通过使用 `@agm/core` 库来实现。该库提供了丰富的 API 和组件,使得开发者可以轻松地在地图上的信息窗口中嵌入图片。本文将详细介绍如何配置和使用这些组件,以实现动态加载和显示图片的功能。此外,还将探讨一些常见的问题和解决方案,帮助开发者更好地集成这一功能。 ... [详细]
  • MySQL索引详解及其优化策略
    本文详细解析了MySQL索引的概念、数据结构及管理方法,并探讨了如何正确使用索引以提升查询性能。文章还深入讲解了联合索引与覆盖索引的应用场景,以及它们在优化数据库性能中的重要作用。此外,通过实例分析,进一步阐述了索引在高读写比系统中的必要性和优势。 ... [详细]
  • CentOS 7环境下Jenkins的安装与前后端应用部署详解
    CentOS 7环境下Jenkins的安装与前后端应用部署详解 ... [详细]
  • 在《Python编程基础》课程中,我们将深入探讨Python中的循环结构。通过详细解析for循环和while循环的语法与应用场景,帮助初学者掌握循环控制语句的核心概念和实际应用技巧。此外,还将介绍如何利用循环结构解决复杂问题,提高编程效率和代码可读性。 ... [详细]
  • 在使用Keil C51创建51单片机项目时,启动代码中包含多个关键元素,这些元素确保了系统的正确初始化和运行。主要包括复位向量、中断向量表、系统时钟配置、寄存器初始化以及主函数入口等。这些组件共同协作,为后续的应用程序执行提供稳定的基础。 ... [详细]
  • 本文探讨了基于点集估算图像区域的Alpha形状算法在Python中的应用。通过改进传统的Delaunay三角剖分方法,该算法能够生成更加灵活和精确的形状轮廓,避免了单纯使用Delaunay三角剖分时可能出现的过大三角形问题。这种“模糊Delaunay三角剖分”技术不仅提高了形状的准确性,还增强了对复杂图像区域的适应能力。 ... [详细]
  • 技术日志:Ansible的安装及模块管理详解 ... [详细]
  • Java中处理NullPointerException:getStackTrace()方法详解与实例代码 ... [详细]
  • 在CentOS 6.5环境中,本文详细介绍了如何配置SSH无密钥登录,并成功执行PSSH命令。首先,确保系统已安装PSSH工具,可使用 `yum install pssh` 进行安装。若未配置免密钥登录,PSSH命令将无法正常执行,例如尝试运行 `pssh -H root@192.168.245.129 -i uptime` 时会失败。通过生成并分发SSH公钥,可以实现无密码登录,从而顺利执行PSSH命令。此外,本文还提供了详细的步骤和常见问题的解决方案,帮助用户顺利完成配置。 ... [详细]
  • 本次发布的Qt音乐播放器2.0版本在用户界面方面进行了细致优化,提升了整体的视觉效果和用户体验。尽管核心功能与1.0版本保持一致,但界面的改进使得操作更加直观便捷,为用户带来了更为流畅的使用体验。此外,我们还对部分细节进行了微调,以确保软件的稳定性和性能得到进一步提升。 ... [详细]
author-avatar
高度的寂寞
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有