在拆分的时候如何保持单元格的格式不变呢?我能想到的办法就是复制和移动工作表,然后再把不符合条件的行删除。

窗体代码

Private Sub btnSplit_Click()Dim StartRow As Long, KeyCol As StringStartRow = CLng(Trim(Me.cbStart.Text))KeyCol = Trim(Me.cbKey.Text)DelCol = Trim(Me.cbDel.Text)indexCol = Trim(Me.cbIndex.Text)If DelCol <> "" Thendel = Range(DelCol & "1").ColumnElsedel = 0End Ifmethod = Me.cbMethod.TextSelect Case methodCase "单簿多表" , "多簿单表"Splitsheet ActiveSheet, StartRow, Range(KeyCol & "1").Column, 1, del, indexColCase ElseMsgBox "拆分方式错误!"End Select
End Sub
Private Sub UserForm_Initialize()With Me.cbMethod.Clear.AddItem "单簿多表".AddItem "多簿单表".Text = "单簿多表"End WithWith Me.cbKey.ClearFor I = 1 To 26.AddItem Split(ActiveSheet.Cells(1, I).Address(1, 0), "$")(0)Next I.Text = "A"End WithWith Me.cbDel.ClearFor I = 1 To 26.AddItem Split(ActiveSheet.Cells(1, I).Address(1, 0), "$")(0)Next IEnd WithWith Me.cbIndex.ClearFor I = 1 To 26.AddItem Split(ActiveSheet.Cells(1, I).Address(1, 0), "$")(0)Next IEnd WithWith Me.cbStart.ClearFor I = 1 To 10.AddItem INext I.Text = "2"End With
End Sub

 

模块代码

Public Sub showfrm()UserForm1.Show
End SubSub Splitsheet(ByVal sht As Worksheet, ByVal StartRow As Long, ByVal KeyColumn As Long, ByVal method As Long, ByVal DelCol As Long, ByVal indexCol As String)Application.ScreenUpdating = FalseApplication.DisplayAlerts = FalseSet wb = Application.ThisWorkbookFolderPath = wb.Path & "\"Set dic = CreateObject("Scripting.Dictionary")With shtEndRow = .Cells(.Cells.Rows.Count, KeyColumn).End(xlUp).RowFor I = StartRow To EndRowKey = .Cells(I, KeyColumn).ValueIf Key <> "" Then dic(Key) = ""Next IEnd WithIf method = 1 ThenFor Each onekey In dic.keysSet desSheet = wb.Worksheets(wb.Worksheets.Count)CopySheetAndRetainRows sht, desSheet, StartRow, KeyColumn, onekey, DelCol, indexColNext onekeyElseFor Each onekey In dic.keysFilename = onekey & ".xlsx"FilePath = FolderPath & FilenameOn Error Resume NextKill FilePathOn Error GoTo 0Set newwb = Application.Workbooks.Addnewwb.SaveAs FilePathSet desSheet = newwb.Worksheets(1)CopySheetAndRetainRows sht, desSheet, StartRow, KeyColumn, onekey, DelCol, indexColNext onekeyEnd IfApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueMsgBox "拆分结束"Unload UserForm1
End SubSub CopySheetAndRetainRows(ByVal scrSheet As Worksheet, ByVal desSheet As Worksheet, ByVal StartRow As Long, ByVal KeyColumn As Long, ByVal Retain As String, ByVal DelCol As Long, ByVal indexCol As String)Application.ScreenUpdating = FalseApplication.DisplayAlerts = FalseDim wb As WorkbookDim newSheet As Worksheet, Rng As RangeDim RetainStart, RetainEndscrSheet.Copy after:=desSheetSet wb = desSheet.ParentFor Each onesht In wb.WorksheetsIf onesht.Name = Retain Then onesht.DeleteNext oneshtSet newSheet = wb.Worksheets(wb.Worksheets.Count)newSheet.Name = RetainWith newSheetEndRow = .Cells(.Cells.Rows.Count, KeyColumn).End(xlUp).RowFor I = StartRow To EndRowIf .Cells(I, KeyColumn).Value = Retain ThenIf RetainStart = 0 Then RetainStart = IRetainEnd = IEnd IfNext IIf RetainEnd < EndRow ThenSet Rng = .Rows(RetainEnd + 1 & ":" & EndRow)Rng.Delete Shift:=xlUpEnd IfSet Rng = NothingIf RetainStart > StartRow ThenSet Rng = .Rows(StartRow & ":" & RetainStart - 1)Rng.Delete Shift:=xlUpEnd IfSet Rng = NothingIf indexCol <> "" ThenX = 1For I = StartRow To StartRow + RetainEnd - RetainStart + 1.Cells(I, indexCol).Value = XX = X + 1Next IEnd IfIf DelCol <> 0 Then .Columns(DelCol).DeleteEnd WithIf ThisWorkbook.Name <> wb.Name Thenwb.Worksheets(1).Deletewb.Close TrueEnd IfApplication.ScreenUpdating = TrueApplication.DisplayAlerts = TrueEnd Sub

  

 

转载于:https://www.cnblogs.com/nextseven/p/10777162.html

如何保持格式拆分工作表?相关推荐

  1. 个人永久性免费-Excel催化剂功能第23波-非同一般地批量拆分工作表

    工作薄的合并,许多Excel插件已有提供,Excel催化剂也提供了最佳的解决方案,另外还有工作薄的拆分和工作表的拆分,同样也是各大插件必备功能. 至于工作薄拆分,那是伪需求,Excel催化剂永远只会带 ...

  2. Excel·VBA按行拆分工作表

    对应之前文章<Excel·VBA按列拆分工作表>,对Excel表格数据按照固定行数,将工作表拆分 工作表按行拆分为工作表 Sub 工作表按行拆分为工作表()'当前工作表(worksheet ...

  3. 利用慧办公拆分工作表教程

    有时我们想根根据某一列拆分工作表,利用软件可以进行批量操作,提高效率. 首先需要安装慧办公.安装成功之后打开excel会显示在菜单栏中如下图 下面利用慧办公拆分表被拆分后的表如下显示,多个工作表就是被 ...

  4. excel快速拆分工作表

    今天跟大家分享一下excel快速拆分工作表 1.打开演示文件,要求将表格拆分开. 2.点击下图选项 3.点击[汇总拆分]-[拆分工作表] 4.将[表头行数]设置为4 5.最后点击[确定]即可完成 6. ...

  5. ①隔若干行插入分页符②排签排版③按条件分页④按行拆分工作表

    ​​​​​​关于打印与分页的4个高级技巧 ①隔若干行插入分页符,相当于按规律手动分页 ②排签排版,相当于分栏打印 ③按条件分页,使一页中只支持一个类别的数据 ④按行数拆分工作表,从而使用每页都能打印顶 ...

  6. Excel自动化拆分工作表

    Sub 拆分工作表()Dim str As String Dim dic Dim rng, cell As RangeSet dic = CreateObject("Scripting.Di ...

  7. python按某列拆分excel表格_python带格式拆分excel表单,copy库完美搞定

    python拆分excel表单,生成单独的excel文件,网上这方面的文章很多.但大多只讲主功能如何实现,让拆分后的表保持和原表单一致的格式,则鲜有人讲.本文通过调用copy库,完美实现带格式拆分表单 ...

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

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

  9. python拆分excel 样式不变_python带格式拆分excel表单,copy库完美搞定

    python拆分excel表单,生成单独的excel文件,网上这方面的文章很多.但大多只讲主功能如何实现,让拆分后的表保持和原表单一致的格式,则鲜有人讲.本文通过调用copy库,完美实现带格式拆分表单 ...

  10. 学习笔记(1):EXCEL VBA编程进阶-2.6 工作表与工作簿结合应用(拆分工作表到工作簿)...

    立即学习:https://edu.csdn.net/course/play/2005/31134?utm_source=blogtoedu ws.add.saveas thisworkbook.pat ...

最新文章

  1. webSocket详解
  2. 科研超级神器,摘要页一键链接关联论文
  3. 进制转换(sdut1252)_JAVA
  4. signature=806a32b3c900efe2c25fc19c92754ca3,Signature de câble électronique
  5. 5分钟在超能云(SuperVessel)上免费创建属于自己的大数据环境
  6. 分布式应用框架Akka快速入门
  7. PCL:PCL可视化显示点云
  8. java setrequestheader_Java SampleResult.setRequestHeaders方法代码示例
  9. 句句真研—每日长难句打卡Day2
  10. spring处理循环依赖时序图_spring--解决循环依赖
  11. idea断点调试继续执行快捷键(keymap设置了eclipse)
  12. 【持续更新】微电子专业术语常用缩写英汉对照
  13. ideaIU-2018.2.2 版本常用设置
  14. 开启nexus出现If you insist running as root, then set the environment variable RUN_AS_USER=root
  15. windows mingw 64,SDL ,devil,glfw,opengl,qt环境搭建
  16. C++Qt入门(1)---Qt简介,第一个Qt程序,Qt按钮
  17. velodyne VLP-16线三维雷达在ros使用
  18. 云计算的认识和看法_个人对云计算的看法 我对云计算的认识
  19. 转发--2022新型冠状病毒肺炎诊疗方案(试行第九版)-中医治疗部分
  20. 如何从入门到专业的程序员

热门文章

  1. Arduino手自两用蓝牙避障小车
  2. MathType安装教程,手把手教您
  3. 一些关于H.264的术语
  4. 携号转网实时手机号归属地查询接口API
  5. eviews时间序列分析课堂笔记
  6. matlab进行mppt控制仿真,光伏发电系统MPPT控制仿真模型
  7. 【信息系统项目管理师】第十五六章 配置管理和标准化
  8. c语言三角波的mif文件,EDA课程设计报告-正弦波信号发生器的设计.doc
  9. 【优化算法】模拟退火算法简介
  10. R-CNN 原理详解