杨老师课堂之Excel VBA 程序开发第六讲根据部门列创建工作表

  课件下载 :           

方式1:本节课件下载地址:链接: https://pan.baidu.com/s/1rf5pRmZ95fjVbz70KYi6Aw 密码: q9yk

方式2:或点击此处下载

效果预览图:

示例代码:

Sub 根据部门创建表并且完成数据拆分最终版()


Dim sht As Worksheet '定义变量  sht作为一个工作表对象
Dim i, k, j As Integer '定义变量 i,k,j 作为一个整数类型对象
Dim m  As Integer '定义变量 m 作为一个整数类型对象  表示 客户端输入的拆分列数
Dim irow  As Integer '定义变量 irow 作为一个整数类型对象  代表的是有效数据的最后一行




irow = Sheet1.Range("a65536").End(xlUp).Row
'删除
    Application.DisplayAlerts = False '不显示删除警告框
    For Each sht In Sheets          '表对象  sht 在  表集合(sheets)中进行循环
    
        If sht.Name <> "数据" Then   '如果表的名字  不等于  数据   那么
        
            sht.Delete              ' 表执行删除操作
            
        End If                      '结束如果语句
        
    Next                            ' 结束循环语句
    
    m = InputBox("请输入你要按哪列进行拆分")  'input代表输入 , box为盒子;  inputbox 表示:输入框  m 代表接收 客户端输入的整数类型
    
    
'根据部门建表
For i = 2 To irow   ' i 代表整数  从2到有效数据的最后进行循环
    k = 0           ' k 代表一个标记   初始化时,就为0,该标记作为后面判断的条件
    For Each sht In Sheets '表对象  sht 在  表集合(sheets)中进行循环
    
        If sht.Name = Sheet1.Cells(i, m) Then '如果表的名字 等于 第一个表的单元格(行,列) 那么
            k = 1                       ' 将 标记变量  k  设置为一个数字  例如:1
        End If       '结束如果语句
    Next      ' 结束循环语句
    
    If k = 0 Then '如果标记的变量 k  = 0   那么  执行下列代表  但是如果不等于 则不执行
        Sheets.Add after:=Sheets(Sheets.Count)  '在最后一张表后执行添加表 操作
        Sheets(Sheets.Count).Name = Sheet1.Cells(i, m) ' 添加后的表的名字wie 第一个表的单元格(行,列)
    End If   '结束如果语句
Next        ' 结束循环语句

    '拷贝数据 :j 代表的是表的序号
    For j = 2 To Sheets.Count
    ' 第一个表的单元格区域为 a1 到 f 有效数据最后一行  执行筛选   筛选列为 输入的列m  条件是 表的名字(指定列名相同)
     Sheet1.Range("a1:f" & irow).AutoFilter Field:=m, Criteria1:=Sheets(j).Name
    ' 第一个表的单元格区域为 a1 到 f 有效数据最后一行执行拷贝  到  循环到的某张表的a1单元格
     Sheet1.Range("a1:f" & irow).Copy Sheets(j).Range("a1")
    ' 第一个表的单元格区域为 a1 到 f 有效数据最后一行 执行筛选(取消筛选操作)
     Sheet1.Range("a1:f" & irow).AutoFilter
    Next ' 结束循环语句
End Sub

本文参与腾讯云自媒体分享计划,欢迎正在阅读的你也加入,一起分享。

发表于

我来说两句

0 条评论
登录 后参与评论

相关文章

来自专栏小狼的世界

如何向回调函数中传入其他参数

最近写JS经常会因为向回调函数中传参而头疼,今天总结一下向回调函数中传参的方法,以后的应用中就不用在到处去找了。

7410
来自专栏小李刀刀的专栏

Unicode编解码函数

在用XMLHTTP进行远程数据传输的时候,如果涉及到不同编码,比如从oblog向我的博客发送一个trackback ping,数据中包含的中文字符就会出现乱码。...

37050
来自专栏大前端_Web

SASS相关

版权声明:本文为吴孔云博客原创文章,转载请注明出处并带上链接,谢谢。 https://blog.csdn.net/wkyseo/articl...

20810
来自专栏nimomeng的自我进阶

《Objective-C基础教程》笔记

1.xcode中,oc的.m文件代表message,指的是Objective-C的一个主要特性。 2.NS前缀的来历要追溯到次公局包还被成为NextStep,...

9520
来自专栏前端杂货铺

前端开发中的字符编码

前端开发过程中会接触各种各样的编码,比较常见的主要是UTF-8和HTML实体编码,但是web前端的世界却不止这两种编码,而且编码的选择也会造成一定的问题,如前后...

37580
来自专栏程序员的知识天地

良好的代码格式反映了程序员的编码能力,好的程序员应该这么编码

大括号的使用约定。如果是大括号内为空,则简洁地写成{}即可,不需要换行;如果 是非空代码块则:

17010
来自专栏LIN_ZONE

javascript基础重点

1.在javascript中使用 == 比较,会自动转换数据类型再比较,有时候会 得到非常诡异的结果;一般情况下使用 === 比较,它不会自动转换数据类型,如果...

10020
来自专栏阮一峰的网络日志

YAML 语言教程

编程免不了要写配置文件,怎么写配置也是一门学问。 YAML 是专门用来写配置文件的语言,非常简洁和强大,远比 JSON 格式方便。 本文介绍 YAML 的语法,...

39860
来自专栏Python爬虫与算法进阶

学点算法之栈的学习与应用

在学习栈前,脑海中对这个词只有一个印象:客栈 栈是什么 栈(有时称为“后进先出栈”)是一个项的有序集合,其中添加移除新项总发生在同一端。 这段话初学者是懵逼的...

33430
来自专栏决胜机器学习

PHP数据结构(三)——运用栈实现括号匹配

PHP数据结构(三)——运用栈实现括号匹配 (原创内容,转载请注明来源,谢谢) 栈在数据结构上是一种特殊的线性表,其限制是仅允许在表的一端进行插入和删除运算,...

45560

扫码关注云+社区

领取腾讯云代金券