首页 > Office专区 > Excel教程 >

Excel总表同列不 同数据批量 拆分到不同表

来源:互联网 2023-02-20 18:45:02 118

修法布施得聪明智慧,多分享让生活更美好。上回分享了《Excel总表按条件批量拆分多表(一表拆分多表)》,是同列数据类型间隔来分表。工作中遇到总表同列不同数据批量拆分到不同表,下面通过一实列分享处理过程,方便大家运用,并且通过这两个对比能达举一返三。Kym办公区 - 实用经验教程分享!

1Excel总表按条件批量拆分多表(一表拆分多表)Kym办公区 - 实用经验教程分享!

工具/原料

  • Microsoft Office Excel 2007
  • Excel VBA

实例问题

  • 1

    如下图:Excel同列不同数据拆分到不同sheet,注意里面有合并单元格。(百道知道问题)Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 1相关内容非法爬取自百度经验
  • 处理方法/步骤

  • 1

    首先打开上例文件,如下图。Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 2

    然后按下快捷键ALT F11打开VBA(宏)编辑界面,然后点菜单栏【插入】下拉中列表中点【模块(M)】如图。Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 3

    然后插入了一个模块1,在代码框中复制如下代码:Kym办公区 - 实用经验教程分享!

    Sub 总表拆分表()Kym办公区 - 实用经验教程分享!

    '2020-5-25 22:46:15Kym办公区 - 实用经验教程分享!

    Dim r As Long, i As Long, mb(), k As Long, m As StringKym办公区 - 实用经验教程分享!

    r = Range("a" & Rows.Count).End(xlUp).RowKym办公区 - 实用经验教程分享!

    ReDim mb(r - 1, 3)Kym办公区 - 实用经验教程分享!

    k = 0Kym办公区 - 实用经验教程分享!

    For i = 2 To rKym办公区 - 实用经验教程分享!

    If i = 2 ThenKym办公区 - 实用经验教程分享!

    k = k 1Kym办公区 - 实用经验教程分享!

    mb(k, 1) = Range("a" & i).ValueKym办公区 - 实用经验教程分享!

    mb(k, 2) = iKym办公区 - 实用经验教程分享!

    ElseKym办公区 - 实用经验教程分享!

    If mb(k, 1) > Range("a" & i).Value ThenKym办公区 - 实用经验教程分享!

    k = k 1Kym办公区 - 实用经验教程分享!

    mb(k, 1) = Range("a" & i).ValueKym办公区 - 实用经验教程分享!

    mb(k, 2) = iKym办公区 - 实用经验教程分享!

    mb(k - 1, 3) = i - 1Kym办公区 - 实用经验教程分享!

    End IfKym办公区 - 实用经验教程分享!

    End IfKym办公区 - 实用经验教程分享!

    Next iKym办公区 - 实用经验教程分享!

    mb(k, 3) = rKym办公区 - 实用经验教程分享!

    m = ActiveSheet.NameKym办公区 - 实用经验教程分享!

    ActiveSheet.Copy After:=ActiveSheetKym办公区 - 实用经验教程分享!

    m1 = ActiveSheet.NameKym办公区 - 实用经验教程分享!

    Rows("2:" & r).DeleteKym办公区 - 实用经验教程分享!

    For i = 1 To kKym办公区 - 实用经验教程分享!

    Sheets(m1).Copy After:=Sheets(Sheets.Count)Kym办公区 - 实用经验教程分享!

    ActiveSheet.Name = mb(i, 1)Kym办公区 - 实用经验教程分享!

    Sheets(m).Rows(mb(i, 2) & ":" & mb(i, 3)).CopyKym办公区 - 实用经验教程分享!

    Range("a2").Insert Shift:=xlDownKym办公区 - 实用经验教程分享!

    Range("a2").SelectKym办公区 - 实用经验教程分享!

    Next iKym办公区 - 实用经验教程分享!

    Application.DisplayAlerts = FalseKym办公区 - 实用经验教程分享!

    Sheets(m1).DeleteKym办公区 - 实用经验教程分享!

    End SubKym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 4

    以上操作动态过程如下:Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 5

    回到工作表窗口,然后运行【总表拆分表】宏(菜单栏中点【视图】中下列表中【宏】列表【查看宏(V)】打开宏对方框,选该宏名),生成各表,运行过程如下图。Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 间隔重复数据又怎样处理

  • 1

    以上是客户名顺序不重复,如果是间隔重复用上面宏运行将会出现错误,无法完成,如下图。Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 2

    将上面代码修改下,在上面模块1框复制如下代码:Kym办公区 - 实用经验教程分享!

    Sub 总表间隔重复拆分表()Kym办公区 - 实用经验教程分享!

    '2020-5-25 23:10:24Kym办公区 - 实用经验教程分享!

    Dim r As Long, i As Long, mb(), k As Long, m As String, sh As Worksheet, j As LongKym办公区 - 实用经验教程分享!

    r = Range("a" & Rows.Count).End(xlUp).RowKym办公区 - 实用经验教程分享!

    ReDim mb(r - 1, 3)Kym办公区 - 实用经验教程分享!

    k = 0Kym办公区 - 实用经验教程分享!

    For i = 2 To rKym办公区 - 实用经验教程分享!

    If i = 2 ThenKym办公区 - 实用经验教程分享!

    k = k 1Kym办公区 - 实用经验教程分享!

    mb(k, 1) = Range("a" & i).ValueKym办公区 - 实用经验教程分享!

    mb(k, 2) = iKym办公区 - 实用经验教程分享!

    ElseKym办公区 - 实用经验教程分享!

    If mb(k, 1) > Range("a" & i).Value ThenKym办公区 - 实用经验教程分享!

    k = k 1Kym办公区 - 实用经验教程分享!

    mb(k, 1) = Range("a" & i).ValueKym办公区 - 实用经验教程分享!

    mb(k, 2) = iKym办公区 - 实用经验教程分享!

    mb(k - 1, 3) = i - 1Kym办公区 - 实用经验教程分享!

    End IfKym办公区 - 实用经验教程分享!

    End IfKym办公区 - 实用经验教程分享!

    Next iKym办公区 - 实用经验教程分享!

    mb(k, 3) = rKym办公区 - 实用经验教程分享!

    m = ActiveSheet.NameKym办公区 - 实用经验教程分享!

    ActiveSheet.Copy After:=ActiveSheetKym办公区 - 实用经验教程分享!

    m1 = ActiveSheet.NameKym办公区 - 实用经验教程分享!

    Rows("2:" & r).DeleteKym办公区 - 实用经验教程分享!

    For i = 1 To kKym办公区 - 实用经验教程分享!

    j = 0Kym办公区 - 实用经验教程分享!

    For Each sh In ActiveWorkbook.SheetsKym办公区 - 实用经验教程分享!

    If sh.Name = mb(i, 1) ThenKym办公区 - 实用经验教程分享!

    j = 1Kym办公区 - 实用经验教程分享!

    Exit ForKym办公区 - 实用经验教程分享!

    End IfKym办公区 - 实用经验教程分享!

    Next shKym办公区 - 实用经验教程分享!

    If j = 0 ThenKym办公区 - 实用经验教程分享!

    Sheets(m1).Copy After:=Sheets(Sheets.Count)Kym办公区 - 实用经验教程分享!

    ActiveSheet.Name = mb(i, 1)Kym办公区 - 实用经验教程分享!

    Sheets(m).Rows(mb(i, 2) & ":" & mb(i, 3)).CopyKym办公区 - 实用经验教程分享!

    Range("a2").Insert Shift:=xlDownKym办公区 - 实用经验教程分享!

    Range("a2").SelectKym办公区 - 实用经验教程分享!

    ElseKym办公区 - 实用经验教程分享!

    Sheets(mb(i, 1)).SelectKym办公区 - 实用经验教程分享!

    Sheets(m).Rows(mb(i, 2) & ":" & mb(i, 3)).CopyKym办公区 - 实用经验教程分享!

    Range("a" & Rows.Count).End(xlUp).Offset(1, 0).Insert Shift:=xlDownKym办公区 - 实用经验教程分享!

    Range("a2").SelectKym办公区 - 实用经验教程分享!

    End IfKym办公区 - 实用经验教程分享!

    Next iKym办公区 - 实用经验教程分享!

    Application.DisplayAlerts = FalseKym办公区 - 实用经验教程分享!

    Sheets(m1).DeleteKym办公区 - 实用经验教程分享!

    End SubKym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 3

    回到工作表窗口,菜单栏中点【视图】中下列表中【宏】列表【查看宏(V)】打开宏对方框,选宏名“总表间隔重复拆分表”点【执行】,生成结果。Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

    Excel总表同列不 同数据批量 拆分到不同表Kym办公区 - 实用经验教程分享!

  • 4

    如果觉得这篇经验帮到了您,请点击下方的 “投票点赞" 或者“收藏”支持我!还有疑问的话可以点击下方的 “我有疑问”,谢谢啦!Kym办公区 - 实用经验教程分享!

  • 注意事项

    • 动态图片要双击成单独大图才能播放全过程。

    以上方法由办公区教程网编辑摘抄自百度经验可供大家参考!Kym办公区 - 实用经验教程分享!


    标签: excelVBA数据

    办公区 Copyright © 2016-2023 www.bgqu.net. Some Rights Reserved. 备案号:湘ICP备2020019561号统计代码