• 前言
  • step 1 进入excel vba编程界面
  • step 2 粘贴代码
  • step 3 运行代码
  • step 4 删除宏代码

前言

这两天接触到excel比较多,才发现使用excel不仅仅是简单的复制粘贴。
excel vb代码是非常强大,学会使用一些常用的功能,可以大大减少工作量。
废话不多少,来看
如下表格学生成绩表

如果我们要把这个表按照班级拆分为三个表,可能一般我们都是通过筛选后复制粘贴。但这是最土的办法,并且如果分类很多,数据量又大的话,非常浪费时间。
来看使用excel宏轻松搞定。excel宏代码如下:

Option Explicit
Option Base 1Sub 按指定列分组拆分数据()Application.ScreenUpdating = FalseApplication.DisplayAlerts = FalseDim self As WorksheetSet self = ActiveSheetDim nLastRowNum As LongDim nLastColumnNum As LongDim i As Long' 删除其他的sheetFor i = Sheets.Count To 1 Step -1If Sheets(i).Name <> self.Name ThenSheets(i).DeleteEnd IfNext i Application.DisplayAlerts = TrueApplication.ScreenUpdating = True   '获取全部数据范围nLastRowNum = Cells(Rows.Count, 1).End(xlUp).RownLastColumnNum = Cells(nLastRowNum, Columns.Count).End(xlToLeft).Column'获取标题Dim titleRange As RangeSet titleRange = Application.InputBox(prompt:="请选择标题区域:将要当做标题行的每一个单元格", Type:=8)' 有效数据开始行Dim nRowValidData As LongnRowValidData = titleRange.Row + titleRange.Rows.Count' 获取拆分列的信息,只需要列号Dim splitColumnRange As RangeSet splitColumnRange = Application.InputBox(prompt:="请选择拆分的列:选择任何一个该列的单元格即可", Type:=8)Dim columnNumToSplit As LongcolumnNumToSplit = splitColumnRange.Column' 需要拆分的值字典Dim splitValueDict As Object' 辅助字典用来保证顺序Dim splitValueDictReverse As ObjectDim indexArray() As LongSet splitValueDict = CreateObject("Scripting.Dictionary")Set splitValueDictReverse = CreateObject("Scripting.Dictionary")Dim cellValue As StringDim ws As WorksheetFor i = nRowValidData To nLastRowNum Step 1cellValue = Cells(i, columnNumToSplit).Text'1. 创建新的sheet;'2. 拷贝标题信息到新的sheetIf Not splitValueDict.Exists(cellValue) ThensplitValueDict(cellValue) = isplitValueDictReverse(i) = cellValueSet ws = Sheets.Add(After:=Worksheets(Worksheets.Count))ws.Name = cellValueself.ActivatetitleRange.Copy _ws.Range(ws.Cells(titleRange.Row, titleRange.Column), ws.Cells(nRowValidData - 1, titleRange.Column))End If' 拷贝其他内容Range(Cells(i, 1), Cells(i, nLastColumnNum)).Copy _GetLastPasteRangeBySheetName(cellValue, nLastColumnNum)Next iEnd SubPublic Function GetLastPasteRangeBySheetName(ByRef SheetName As String, columnNum As Long) As VariantDim wks As WorksheetDim nLastRowNum As LongSet wks = ActiveWorkbook.Worksheets(SheetName)nLastRowNum = wks.Cells(wks.Rows.Count, 1).End(xlUp).RowSet GetLastPasteRangeBySheetName = wks.Range(wks.Cells(nLastRowNum + 1, 1), wks.Cells(nLastRowNum + 1, columnNum))End Function

step 1 进入excel vba编程界面

在excel工作表中标签处右键查看代码

进入如下界面

step 2 粘贴代码

然后把代码粘贴窗口中如下图:

step 3 运行代码

点击下图中红框按钮

出现下面弹框

选择需要拆分标题区域。只需要用鼠标拖动选择区域即可

确定后再选择拆分的单元格,即按照班级拆分,选择班级

确定,结果如下

step 4 删除宏代码

如果为了保存方便,我们需要把宏代码删掉,不然保存需要保存为支持宏的格式。
运行成功后删除宏
找到工具 选择宏。

删除刚刚的宏即可,然后关闭代码,保存即可

excel 宏 把一个工作表按照某几个列拆分为多个工作表相关推荐

  1. Excel·VBA按列拆分工作表、工作簿

    改进<将excel按照某一列拆分成多个文件>,使代码更具通用性,可以实现将工作表拆分为工作表或工作簿 对Excel表格数据按照某列的值,将工作表拆分 目录 1,工作表按列拆分为工作表 2, ...

  2. Excel·VBA工作表整列拆分为工作簿

    不同于<Excel·VBA按列拆分工作表.工作簿>按某列的值对工作表拆分,仅按固定列数拆分工作表单独保存为工作簿,类似于<Excel·VBA按行拆分工作表> Sub 工作表整列 ...

  3. 利用python快速将一个工作表拆分成多个工作簿

    利用python提高工作效率的一个小技巧 很多人会在日常的工作中遇到这样的工作需求:需要将一个总表按"分公司/按月份"等拆分成多个工作簿,分发给对应的人员.一开始想到的方法是:第一 ...

  4. SQLite清空表并将自增列归零

    SQLite清空表并将自增列归零 一.SQLite清空表并将自增列归零 在SQLite中直接使用 DELETE FROM TableName 就可以了. 通常在清空表的时候,还需要把自增列归零. 在S ...

  5. MySQL数据库将表A里的一列数据插入表B中

    问题描述: 最近处理数据的时候需要将表a中的一列插入到b表中,记录一下. 有两张表 这两张表是我随便创建用来试验的. 其中我想让b表的高度这一列通过姓名添加到a表上. 1.增加一列 高度 alter ...

  6. 将excel中的一个工作表按照某列拆分成多个sheet工作表

    如何将excel中的一个工作表按照某列拆分成多个sheet工作表呢?接下来就利用VBA工具来解决这个问题. 拆分之前的工作表: 拆分之后的工作表: 操作步骤具体如下: 第一步:打开需要拆分的表格文件: ...

  7. python如何将多张excel表内数据求和_Excel批量操作,把你的工作效率提升10倍以上(1)...

    ​君子之交淡若水,小人之交甘若醴,君子淡以亲,小人甘以绝.--庄子 我们在日常工作中,遇到的最多的点,就是涉及到的内容很多,如果一个个的去查看,效率会非常慢,这时批量操作可以大大提升我们的工作效率,今 ...

  8. excel将一个工作表根据条件拆分成多个工作表图文教程

    本例介绍在excel中如何将一个工作表根据条件拆分成多个工作表. 注意:很多朋友反映sheets(i).delete这句代码出错,要注意下面第一个步骤,要拆分的数据工作表名称为"数据源&qu ...

  9. Excel—宏表函数

    首先有一个知识点,宏表函数是不能直接在单元格中写公式的,需要先定义一个名称("公式"选项卡--"定义名称"),然后在"定义名称"中的&quo ...

最新文章

  1. 云桌面可附加桌面文件的程序_给我几分钟,还你一个小清新的电脑桌面
  2. 导出勾选密码永不过期的AD账户信息
  3. python/pandas数据分析(十五)-聚合与分组运算实例
  4. 第一阶段个人总结03
  5. [ZOJ 4024] Peak
  6. android power 按键,Android Framework层Power键关机流程(一,Power长按键操作处理)
  7. JAVA进阶教学之(Object类中的hashCode方法)
  8. windows下载、安装运行redis
  9. 逻辑回归 数据_数据科学中的逻辑回归
  10. Tomcat version 6.0 only supports J2EE 1.2, 1.3, 1.4, and Java EE 5 Web modules
  11. 清华大学出版社-图书详情-《深度学习:语音识别技术实践》
  12. numpy 矩阵 秩_Python(NumPy):集合只能映射秩1数组
  13. 高新计算机考试培训 ppt,全国计算机高新技术考试.ppt
  14. Qt 小例子学习14 - 动态滚动QScrollArea
  15. 97年大学计算机考试是 级,1997年9月全国计算机等级考试一级笔试试卷 DOS
  16. win10命令提示符怎么打开_技巧,win10蓝屏SYSTEM_PTE_MISUSE怎么解决
  17. c语言中的结构体定义和常见用法
  18. 挑战程序设计竞赛(算法和数据结构)——14.1互质的集合(并查集)的JAVA实现
  19. VC遍历文件夹下所有文件和文件夹
  20. iOS使用libxlsxwriter导出excel文件

热门文章

  1. 你想要精细化美妆美颜这里都有-百度人脸识别
  2. BUUCTF msic 专题(115)[安洵杯 2019]easy misc
  3. BUUCTF msic 专题(125)[GUET-CTF2019]soul sipse
  4. 万用表怎么测电池内阻_请问我用万用表如何测量电池内阻?
  5. LightOJ 1319 - Monkey Tradition (中国剩余定理)
  6. 2005年10月21日  日本,东京  晴朗
  7. 微信公众平台开发教程(一)
  8. 无线控制模块c语言编程,51单片机对无线模块nRF24L01简单的控制收发程序
  9. AutoCAD线型文件定义含文字线型的格式说明
  10. 双11“静悄悄”,折腾14年终于卷不动了?