精华内容
下载资源
问答
  • 字典多列分类汇总

    2019-03-20 14:26:10
    字典多列分类汇总,用VBA字典数组汇总多列,字典分组汇总的写法
  • VBA--实例1.3--数据分类汇总

    千次阅读 2019-07-09 13:35:44
    数据分类汇总 目标 以班级为筛选条件将数据条分类,并保存到新工作簿中 demo分解 创建目标sheet 根据筛选条件逐一汇总到目标sheet move sheet 到新的工作簿 ...

    实例

    数据分类汇总

    目标

     

    以班级为筛选条件将数据条分类,并保存到新工作簿中

     

    demo分解
    1. 创建目标sheet
    2. 根据筛选条件逐一汇总到目标sheet
    3. move sheet 到新的工作簿
    文件不知怎们上传demo文件知道的留言一下
    技术思辨
    1. 数据copy时候因为目标变化较多,range()的activeSheet或是目标Sheet不要省略
    2. 在选择首个非空单元格时候,建议使用range("a655536").end(xlUp),不要使用range("a1").end(xldown)。排除数据本身是从rows(1)或rows(2)开始的
    3. for 循环下的Range(cells(1,i))不能使用
    4. for each sht in sheet 的时候 sht.move 后sht变量将不再是目标sht。故针对本实例,需要先保存filename。再sht.move。activeSheet.saveas()

    示例代码

    Option Explicit
    
    Sub add_sheet()  '利用字典去重的特性创建sheets
        Dim dic As Variant
        Dim r, c As Integer
        Set dic = CreateObject("scripting.dictionary")
        r = 2
        c = Sheet2.Range("a1").End(xlToRight).Column
        Debug.Print c
        Do While Cells(r, 3).Value <> ""
            dic(Cells(r, 3).Value) = Cells(r, 3).Value
            r = r + 1
        Loop
        
        Sheet2.Range("a1", Cells(1, c)).Copy '通过range的围成区间直接得到
        Sheet2.Range("a1").Resize(1, c).Copy '方法二通过间接resize得到
        Dim key As Variant
        For Each key In dic.keys
            Worksheets.Add after:=Sheet2
            ActiveSheet.Name = key
            Range("a1").PasteSpecial
        Next key
    End Sub
    
    Sub filter_date()
        Dim i, c As Integer
        c = Sheet2.Range("a1").End(xlToRight).Column
        i = 2
        Dim shtnm As String
        Do
            shtnm = Sheet2.Cells(i, 3).Value
            If shtnm = "" Then Exit Do
            Sheet2.Cells(i, 1).Resize(1, c).Copy
            Worksheets(shtnm).Range("a65536").End(xlUp).Offset(1, 0).PasteSpecial
            i = i + 1
        Loop
        
    End Sub
    Sub move_sheet()
        Dim sht As Worksheet
        Dim pth As String
        pth = ActiveWorkbook.Path & "\班级成绩"
        
        If Dir(pth, vbDirectory) <> "班级成绩" Then MkDir (pth) '创建目标路径
        For Each sht In Worksheets
            If sht.Name <> "成绩表" Then
                Dim flname As String
                flname = pth & "\" & sht.Name & ".xlsx"
                sht.Move
                ActiveWorkbook.SaveAs (flname)
                ActiveWorkbook.Close
            End If
        Next
    End Sub
    
    
    Sub routine()
        Call add_sheet
        Call filter_date
        Call move_sheet
    End Sub
    

     

    展开全文
  • vba实现分类汇总功能

    千次阅读 2018-09-28 15:51:45
    Option Explicit Sub test() Dim sht As Worksheet, rng As Range Set sht = ActiveSheet Dim i As Integer, index As Integer, subtotal As Double, dm As Variant Dim oldIndex As Integer, oldS...
    Option Explicit
    Sub test()
        Dim sht As Worksheet, rng As Range
        Set sht = ActiveSheet
        Dim i As Integer, index As Integer, subtotal As Double, dm As Variant
        Dim oldIndex As Integer, oldSubtotal As Double
        
        Dim startLine As Integer
        Dim lastLine As Integer
        
        startLine = 2
        lastLine = ActiveCell.CurrentRegion.Rows.Count
        
        dm = sht.Cells(lastLine, 2).Value
        subtotal = sht.Cells(lastLine, 3).Value
        index = lastLine
        For i = lastLine - 1 To startLine Step -1
            If dm <> sht.Cells(i, 2).Value Then
                dm = sht.Cells(i, 2).Value
    
                oldIndex = index
                oldSubtotal = subtotal
    
                index = i
                subtotal = sht.Cells(index, 3).Value
    
                sht.Cells(oldIndex + 1, 2).EntireRow.Insert
                sht.Cells(oldIndex + 1, 2).Value = "小计"
                sht.Cells(oldIndex + 1, 3).Value = oldSubtotal
            Else
                subtotal = subtotal + sht.Cells(i, 3).Value
            End If
            
            If i = startLine Then
                sht.Cells(index + 1, 2).EntireRow.Insert
                sht.Cells(index + 1, 2).Value = "小计"
                sht.Cells(index + 1, 3).Value = subtotal
           
            End If
            
        Next
        
    End Sub
    

     

    展开全文
  • Sub 如何使用VBA进行多表汇总() Dim AdoConn As New ADODB.Connection Dim AdoRst As ADODB.Recordset Dim strConn As String Dim strSQL As String Application.ScreenUpdating = False '设置连接字符串 ...
    Sub 如何使用VBA进行多表汇总()
        Dim AdoConn As New ADODB.Connection
        Dim AdoRst As ADODB.Recordset
        Dim strConn As String
        Dim strSQL As String
        Application.ScreenUpdating = False
        '设置连接字符串
        strConn = " Provider=Microsoft.ACE.OLEDB.12.0;" &  _
                "Data Source=" & ThisWorkbook.FullName &  _
                ";Extended Properties=""Excel 12.0;HDR=YES"";"
        '打开数据库链接
        AdoConn.Open strConn
        '获取数据库表格结构
        Set AdoRst = AdoConn.OpenSchema(adSchemaTables)
        '获取各表名称,编写SQL语句
        Do Until AdoRst.EOF
            
            If AdoRst! TABLE_TYPE = "TABLE" And AdoRst! TABLE_NAME <> "汇总表$" And AdoRst! TABLE_NAME Like "'*$'" Then
                strSQL = strSQL & "Union All Select * From [" & AdoRst! TABLE_NAME & "] "
            End If
            AdoRst.MoveNext
        Loop
        '关闭数据记录集
        AdoRst.Close
        '重新编辑SQL语句,去掉最开头的Union All,共10个字符
        strSQL = Right(strSQL, Len(strSQL) - 10)
        '编辑SQL语句,计算应发合计的总合
        strSQL = "Select 员工编号,姓名,Sum(应发合计) as 全年应发合计 From (" & strSQL & ") Group By 员工编号,姓名"
        '执行查询
        Set AdoRst = AdoConn.Execute(strSQL)
        '将结果写入汇总表
        With Sheet1
             .Cells.Clear
             .Range("A2").CopyFromRecordset AdoRst
            '填写标题
            For i = 1 To AdoRst.Fields.Count
                 .Cells(1, i) = AdoRst.Fields(i - 1).Name
            Next
            '自动调整列宽
             .UsedRange.Columns.AutoFit
            '设置边框颜色
             .UsedRange.Borders.Color = 0
            '设置标题行颜色
             .UsedRange.Rows(1).Style = "强调文字颜色 2"
        End With
        AdoRst.Close
        '关闭数据库连接
        AdoConn.Close
        Application.ScreenUpdating = True
    End Sub
    
    展开全文
  • 利用VBA开发数据汇总工具通常在日常工作中总会用到Excel并且经常会遇到Excel将多个表格进行汇总。经过工作中的实践,发现用VBA开发具有一定重复性的功能,能够极大提高工作效率。最近,将本人曾开发的的Excel数据...

    5c9853e1aefbf386ea86857181a3d087.png
    1. 利用VBA开发数据汇总工具

    通常在日常工作中总会用到Excel并且经常会遇到Excel将多个表格进行汇总。经过工作中的实践,发现用VBA开发具有一定重复性的功能,能够极大提高工作效率。最近,将本人曾开发的的Excel数据汇总工具,进行进一步代码和界面的优化。此文是为了广大工作在一线的表格小白做一个Excel开发的普及篇。重点介绍作为一个小白,如何开发出自己想得到的趁手工具。

    第一章 认识Excel与VBA

    Excel是什么?

    很多小白的日常工作中,经常接触操作Excel,重复性的工作,但是除了那几种固定的操作模式,就不涉及到其他了。所以,仍对Excel认知较少。那么Excel究竟能帮助我们完成哪些工作呢,其实很简单,日常表格数据量不是超大规模的,几乎可以应付日常一般情况下的应用场景。比如网上通常的例子就是批量生成并打印工资单等等。Excel就是一个工具,一个具有数据处理分析功能的强大工具。并且可以通过VBA编程来定制自己特殊数据处理的工具。

    VBA是什么?

    由于微软Office软件的普及,人们常见的办公软件Office软件中的Word、Excel、Access、Powerpoint都可以利用VBA使这些软件的应用更高效率,例如:通过一段VBA代码,可以实现画面的切换;可以实现复杂逻辑的统计(比如从多个表中,自动生成按合同号来跟踪生产量、入库量、销售量、库存量的统计清单)等。

    掌握了VBA,可以发挥以下作用:

    1.规范用户的操作,控制用户的操作行为;

    2.操作界面人性化,方便用户的操作;

    3.多个步骤的手工操作通过执行VBA代码可以迅速的实现;

    4.实现一些VB无法实现的功能。

    5.用VBA制做EXCEL登录系统。

    6.利用VBA可以Excel内轻松开发出功能强大的自动化程序。

    VBA是一种Visual Basic的宏语言,它应该是最早的Office提供定制化的一种解决方案,在1994年发行的Excel 5.0版本中,就具备了VBA的宏功能。从名字上似乎可以看出他是VB的一个子集,和Visual Basic不同,VBA是一种宿主型语言。由于那个时候Visual Basic非常火, VBA取得了很大的成功,无论是专业的开发人员,还是刚入门的非开发人员,都可以利用VBA完成简单或复杂的需求。现在在一些办公环境中,VBA用的非常多,比如国内比较著名的ExcelHome论坛,上面就有很多关于Excel VBA的讨论,而且VBA还能够调研Com组件里面的一些方法,在其他的Office开放方式中,如VSTO或者SharedAddin中, VBA有时候可以辅助完成某些功能,如RTD函数,UDF函数的调用,专用模板的开发,动画效果的演示等等。不光是Office,有很多其他的软件业比如比较有名的ArcGIS,CorelDraw等软件,都提供了VBA的定制化解决方案。

    除了技术上的其他支持,我们也要搭建好开发环境。这就非常简单了。但是搭建过程中,也可能会遇到非常棘手的问题,也都需要逐一克服。但是,如果没有什么高的要求,一般情况下,只要是Windows的操作系统,并且还安装了一个Excel就可以了。除非你就想学最新的,Windows要求是10版更新到1903的,MS Office要求是2019专业版的,那这要求可就需要你折腾一下你的电脑了。因为此时会产生2个大问题:

    如何安装并激活window10?

    如何安装并激活MS Office 2019?

    以上2个问题先请行百度一下。我会在后面的介绍中详细说明。言归正传:安装完系统,安装完Excel。我们几乎就可以马上开发了!等等,此时还有人会问,我不会英语,也不熟悉计算机,怎么办?可以肯定的说,既便于你会英语会计算机日常操作,也不一定会VBA开发。因为,这2个学科并不能从本质上影响你学习开发VBA。

    第二章 安装并激活win10

    第一节 制作U盘启动盘

    准备一只U盘,U盘容量8G以上,传输速率当然是越快越好。所以,最好是选3.0接口的,您要是有2.0接口的也可以。

    3.0和2.0的区别:直观上一看,接口处,2.0是白色或黑色的,3.0是蓝色的。

    然后我们先到老毛桃官网下载一个U盘启动盘制作工具:

    老毛桃winpe,老毛桃winpe u盘启动盘制作工具,老毛桃winpe下载​www.laomaotao.net

    如何制作:

    winpe教程

    前期准备

    1、准备一个4G以上的U盘

    2、备份U盘重要文件,制作过程中会格式化U盘。

    PS:本软件涉及对可移动磁盘的读写操作,部分杀毒软件和安全类软件会导致制作失败,运行程序前请关闭相关软件!

    1. 下载老毛桃U盘启动盘制作工具,下载完成后,如图是老毛桃的运行程序。
    2. 插入U盘后,双击打开老毛桃U盘制作工具,会出现如图所示U盘winpe系统制作界面。
    3. 选择普通模式选项卡,“请选择”中选择自身U盘设备名称(一般会自动识别)。模式选择USB—HDD,格式选择“NTFS”
    4. 点击“一键制作成USB启动盘”按钮,开始制作U盘winpe系统,过程中会格式化U盘上的数据,制作前请确认U盘是否已做好备份。
    5. 开始制作后软件下方会有进度条提醒,请耐心等待。
    6. 制作完成后,程序会提示您已制作成功,您可以选择模拟启动测试,若能够进入老毛桃winpe主菜单,即表示老毛桃U盘启动盘制作成功。

    好,至此,U盘启动盘已经制作完毕。

    第二节 装机win10

    重装win10教程

    前期准备

    1. 制作一个老毛桃U盘winpe启动
    2. 提前准备好win 10的镜像系统,如若没有可在网上自行下载,并将镜像复制到老毛桃U盘winpe启动盘的根目录或本机其他分区中(除C盘外)
    3. 查询自身机型的U盘启动快捷键

    步骤如下:

    1. 插入装有老毛桃winpe系统的U盘,开机或重启电脑,当开机画面一闪而过之际,眼疾手快地按下U盘启动快捷键进入优先启动项设置界面。 PS:需查询自身机型的U盘启动快捷键
    2. 选择U盘选项后回车进入下一步,注意:通常带有“USB”字样的选项即为U盘选项。
    3. 进入老毛桃winpe主菜单后,通过“↑↓”键选择“【1】启动Win10 X64PE(2G以上内存)”后回车进入。
    4. 打开老毛桃一键装机,在选择操作一栏点击“安装系统”,接着在“选择映像文件”一栏点击“打开”,找到下载好的win10镜像文件, 最后选择安装路径为C盘,点击“执行”。
    5. 在老毛桃一键还原窗口中,勾选复选框内后点击“是”(建议用户将“网卡驱动”和“USB驱动”这两个选项勾选,以免重启后无法使用网络和鼠标)。
    6. 程序写入待安装完毕后重启笔记本,同时要拔掉U盘,以免再次进入老毛桃winpe界面了。
    7. 重启后就电脑会进入重装系统的第二阶段,此时无需操作,静待安装完成即可,如果成功进入win 10操作系统的桌面,即表明成功重装了win 10系统。

    至此,安装完成了win10。

    第三节 激活win10

    首先第一步,点击左下角搜索栏,输入:运行。右键以管理员身份运行。输入:cmd 打开即可

    复制以下命令:slmgr.vbs /upk。直接鼠标右键就可以粘贴进去。然后点击“enter键”。窗口弹出:"已经成功卸载密钥".那么这一步就成功了,恭喜你!

    然后复制以下命令:slmgr /ipk W269N-WFGWX-YVC9B-4J6C9-T83GX 鼠标右键粘贴,enter,搞定,系统提示已经成功安装密钥!

    最重要的一步,也是激活的核心原理,仿照上面的方法,复制slmgr /skms zh.us.to 粘贴输入并且运行,系统提示:“密钥管理服务计算机名成功的设置为zh.us.to”。

    最后一步,最后一个命令:slmgr /ato。运行之后,系统提示成功激活,恭喜你,成功了!

    总的来说,确实有点繁琐,但是如果你使用之后,就会发现确实很简单,值得注意的就是:鼠标右键就是粘贴,enter就是运行,这也算是命令提示符的一个入门了吧。

    顺便提醒一句,系统激活只有180天的有效期,也就是说,180天后需要重新来一遍上面的步骤。

    第三章 安装并激活MS Office 2019

    第一节 安装MS Office 2019

    版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。

    本文链接:https://blog.csdn.net/hunzhangzui9837/article/details/83651268

    微软在2018年9月28日发布了 Microsoft Office 2019 正式版,不过仅支持Win10系统。目前微软镜像文件已经流出,可以通过离线镜像进行安装。如果想使用 Microsoft Office 2019 正式版,则需要先删除系统上已经安装的所有Microsoft Office系列软件。此次更新,是对过去三年在Office 365里所有功能进行整合,包括对Word、Excel、PowerPoint、Outlook、Project、Visio、Access和Publisher的更新。

    本次Microsoft Office 2019 正式版更新,不像之前一样通过推送更新来获取新的功能,Office 2019 是一次性发布的,不会再有后续的功能更新。此次更新主要想吸引之前未选择Microsoft Office 365的企业个人用户。Office 2019提供跨应用程序的功能,以帮助用户在更短的时间内创建令人惊叹的内容。在PowerPoint 2019中,允许用户创建带有Morph和Zoom等新功能的电影演示文稿。同时改进了Windows应用程序的输墨功能-比如漫游铅笔盒,压力敏感度,倾斜效果-允许用户自然地创建文档。Excel 2019增加了强大的新数据分析功能,包括新的公式和图表以及对PowerPivot的增强。

    Office2019还包括新的信息技术价值,以加强安保和精简行政管理。微软在Office 2013中引入了一种现代部署技术-Clickto-Run(C2R),现在它已被用于在全球数亿台设备上部署和更新Office。在Office 2019中,微软正在将Office的现场版本转移到C2R,以降低成本和提高安全性。C2R的优点包括每月可预测的安全更新、安装时的最新应用程序、通过Windows 10下载优化技术减少网络消耗,以及易于升级到ProPlus。

    下载地址:

    专业增强版(强烈推荐):

    http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/zh-cn/ProPlus2019Retail.img

    专业版:

    http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/zh-cn/Professional2019Retail.img

    家庭学生版:

    http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/zh-cn/HomeStudent2019Retail.img

    家庭企业版:

    http://officecdn.microsoft.com/pr/492350f6-3a01-4f97-b9c0-c7c6ddf67d60/media/zh-cn/HomeBusiness2019Retail.img

    第二节 激活MS Office 2019

    破解补丁:

    目前MicroKMS神龙版能激活win10、win8/8.1、win7以及server2008/2012/2016等系统版本,其中包括:专业工作站版、企业版、专业版、教育版、专业教育版、家庭版、核心版、中文版(OEM预装系统版本)、单语言版等,同时支持激活office 2010/2013/2016/2019 Proplus、Visio 2010/2013/2016/2019 Pro、Project 2010/2013/2016/2019 Pro。

    下载地址:

    百度网盘:https://pan.baidu.com/s/1VCI_V7xlVEx9FhbVSPqSxQ

    提取码:xil9

    【注】:如果下载出现浏览器崩溃,先保存到自己网盘再去下载。

    另外注意的是,激活需要联网。

    ————————————————

    版权声明:本文为CSDN博主「小白clever」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:https://blog.csdn.net/hunzhangzui9837/article/details/83651268

    第四章 如何获得技术支持

    工欲善其事必先利其器。学习VBA开发Excel也并不比完全系统学习。作为工作一族,我们已经不是学校的学生,所以可以手边常备一个Excel VBA开发的书籍。遇到问题就随手翻一翻。或者在处理表格数据时,按F1或者点击菜单上的“帮助”来获得技术支持。通常情况下,认真阅读,仔细思考,是能够看的懂帮助的内容的。读书百遍其意自现。第一遍有可能看不懂,多读几遍多思考几遍就会逐渐理解了。最好是加一些Excel开发的QQ群/微信群。或者是多上一些Excel VBA开发的论坛,比如Excel Home。还可以直接度娘,或者干脆上微软官网查找解决问题的方法。亦或者可以直接联系会这方面的好友,那样最好不过了,能有人手把手的教,这种待遇,真的是太奢侈了。

    推荐学习网址:我要自学网:https://www.51zxw.net/list.aspx?cid=539

    Excel Home论坛是Excel教程下载和软件下载中心,Microsoft技术社区联盟成员,全球极具影响力的Excel门户,Office技术培训社区:http://club.excelhome.net/forum-2-1.html

    推荐书籍:Excel VBA开发宝典《第三版》

    第五章 分析需求

    如前所述,要开发Excel应用程序,有很多方案可以选择。在作出选择之前,根据个人经验,有以下几方面需要考虑:

    1 应用程序的类型及功能

    根据Excel插件开发的功能需求,对于以些较简单的应用,比如一些Excel模板等,可以直接采用VBA宏进行定制,如果具有.NET 基础,可以采用VSTO Document-Level的方式来开发模板;对于一些较大型的或者比较复杂的一些应用,或者考虑到效率,编写VAB可能难以实现某些功能这时可以考虑采用SharedAddin或者VSTO Addin的方式来进行开发,他能够直接利用.NET平台上的各种语言及类库,并且可以使用Visual Studio这种强大的工具来开发和进行调试;如果对应用程序的跨平台,或者移动性要求较高,或者是需要在已有的Web应用程序上建立Office应用程序,则可以考虑使用Office App的方式来进行开发;如果应用程序对效率和要求较高,并且具有扎实的C或者C++基础,可以采取XLL的方式对Excel进行扩展;对于一些需要批量生产Excel文件的应用环境,比如在服务器上生产Excel文件,导出数据到Excel,对Excel文件进行合并分割等操作,采用OpenXML SDK、NOPI等第三方具有直接读写Excel文件的SDK来进行开发能够获取更高的效率,另外采用第三方SDK可以使得部署的目标机器不需要安装Office的可编程环境。

    2 程序兼容Office的版本问题

    第二个比较重要的考虑因素是应用程序的兼容版本问题。这个问题就像是开发BS应用程序需要考虑应用程序的类型比如是IE还是Chrome以及版本,比如需要处理IE6 下各种头疼的问题等等。开发Excel应用程序也需要注意这一点,虽然最新的Excel2013已经推出,但是仍有大部分的客户机器可能使用的是2003 的系统。这种情况下,如果使用VSTO Application Addin的方式可能不能兼容2003的系统,并且一些特殊的UI界面如Ribbon菜单,Customer Task Panel在03版本上不兼容。这种情况下,有时候可能需要采用一些比较通用的技术如VBA,XLL,SharedAddin技术来进行处理,另外对于一些07及以上版本中特有的UI界面和功能,使用SharedAddin开发,并且如果想利用这些功能,可能需要进行一些手动的编码和判断。另外,如果采用VSTO编程,还有一个重要的考虑因素是.NET的版本问题,Excel插件通常是和其他产品绑定在一起发布或者销售的,有时候可能限定平台在.NET 2.0 上,那么选择VSTO的版本,及开发工具的时候可能就需要注意了。如果确定目标用户使用的Office版本为比较新的版本,如2007或者以上,建议还是使用VSTO较高的版本进行开发,这样可以极大地简化开发的难度,提高应用程序的性能。如果客户使用的是最新版的Office,采用Office App的开发方式也是一种比较好的选择。

    3 日常重复性工作的归纳

    日常工作中,通常大致有2类汇总的情形。

    一种是复制粘贴式。也就是说,把来自多个表格的数据,通过复制粘贴的方式,汇总到同一张表格中。

    另一种是数据计算式。也就是说,把来自多个表格的数据的同种项目进行累加求和,形成一张表格。

    那么可以拆分成这么几个功能按钮:

    1是导入文件夹内所有工作簿中的所有工作表到同一个工作簿的不同工作表

    2是将导入的空工作表全部删除

    3是将同一个工作簿中的所有工作表通过复制粘贴式汇总到同一张表格

    4是将同一个工作簿中的所有工作表中的同一个项目进行累加求和,形成到一张表格中。

    5是重置工作表。将带程序的工作簿还原成初始状态。

    基于以上5个功能,可以开发5个命令按钮。这5个按钮要放到Excel的菜单上。大致就是这样吧。

    第六章 Excel菜单的开发

    我们先来直观感受一下Excel菜单。不严格的说,2010版本之后的2013/2016/2019版本管这个叫Ribbon。那么后面我们就叫Ribbon的开发。就是一条长带子的样子。

    我们现在要先在这个Ribbon上放置5个按钮。类似于“前端”的开发,不严格说,或者是界面的开发,总之随你怎么称呼。那么这个Ribbon的开发,可能有点超纲了,因为不得不学点XML语言。因为这玩意是用XML写的,你就的用XML语言去改。千万不要一看到这种带字母的语言就感到高大上和有距离感。你可以把它想象成学一门外语而已,并且这门外语不仅有26个字母,还有一堆符号,还有各种标记格式等等吧。那么如何学习XML呢?请到:

    XML 教程 | 菜鸟教程​www.baidu.com

    https://www.runoob.com/xml/xml-tutorial.html。

    这些知识看看也就够了。

    有2个途径可以编写Ribbon。

    1、借用OfficeCustomUIEditor 工具的

    参考:http://www.exceltip.net/thread-4190-1-1.html

    2、不借用任何工具,纯VBA环境下自定义EXCEL 菜单选项卡。

    参考:http://club.excelhome.net/forum.php?mod=viewthread&tid=729624&extra=page%3D1%26filter%3Ddigest%26digest%3D1%26digest%3D1

    这两篇文章都写的很好很详细。

    ————————————————

    版权声明:本文为CSDN博主「tianlangwangluo」的原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接及本声明。

    原文链接:

    https://blog.csdn.net/dutaibai/article/details/52115690​blog.csdn.net

    按照上文链接,我们先开发出如下的按钮:

    刚才,“前端“已经开发完了。那么重点来了,我们开始进行类似于“后端”的开发了。VBA开始写起了。

    第七章 初识VBE

    打开Excel,先另存为一个启用宏的工作簿。然后重新打开进行开发。按Alt+F11,打开开发界面,我们先了解以下开发界面:

    Excel宏编程基础:什么是VBA宏/在哪里编写宏/怎么运行宏?

    德宝老师 2014-1-30 9:46 分类:表格技巧

    一、什么是“宏”、“宏”有什么用

    关于“宏”的详细定义,可以参考百度百科的解释(点击查看)。我给它一个简单的或许不太严谨的定义:

    宏的通俗定义:宏是被某些软件所能识别、理解并执行的特定代码/脚本。

    宏的作用:因为宏能被软件执行、不需要人工来操作了,从而能实现“自动、批量”的业务处理,极大提高工作效率。

    二、“宏”不是Excel也不是Office专有

    要知道,宏不是Excel特有的,Office的其他组件如PPT、Word、Outlook等也都有宏。不光Office,不少软件也带有宏功能。例如印象中PS可以将一堆图片进行批量的裁剪或添加水印等处理,这可以视为一种宏。甚至连文本编辑器EditPlus都带有宏录制功能。还有些软件就专门实现宏功能的,类似“鼠标键盘录制回放器”那样将键盘操作记录下来再重新回放,比较知名的如:按键精灵、AutoHotkey等。

    三、“宏”长什么样

    如第2部分所述,很多软件都带有宏,不同软件的宏也不一样。下面这段是AutoHotkey的脚本:

    1. #z::Run http://www.autohotkey.com
    2. ::/note::
    3. IfWinExist 无标题 - 记事本
    4. WinActivate
    5. else
    6. Run Notepad
    7. return

    而Office里的宏称为VBA(Visual Basic for Application)。不同组件(Excel/PPT/Word等)中的VBA语法一样,但所支持的对象、方法会有所不同。具体代码见后文示例。

    四、VBA:Excel中的宏

    终于讲到Excel的宏了。VBA基本上就是VB(不知道VB是啥?点此)的简化版,如果有VB功底,学VBA就不费劲了。

    但毕竟VBA还是属于“开发”类工作,没有任何编程经验的人(码农)能不能学会VBA呢?答案是肯定的!只要有人带进门加以点拨,再肯下些功夫,一定可以写出一些提高工作效率的VBA工具。我在新浪工作期间,曾经有个实习生能修改我写的VBA工具,学中文的,女生。

    五、在哪里编写VBA:Excel VBE开发环境

    下面我们来制作一个带宏的Excel文档。详细步骤:

    1.新建一个工作薄,文件->另存为,“文件名”输入“宏测试”,在“文件类型”中选择“Excel 启用宏的工作薄(*.xlsm)”,点击保存。

    2.按Alt+F11组合键,调出VBE窗口。右键点击“VBAProject”->插入->模块。然后,在左边的窗口中出现“模块1”。

    3.双击“模块1”,在右侧的空白区录入以下代码(此代码用于在屏幕上显示一个文字提示框),完成VBA宏的编辑。见下图:

    Sub VBATest()

    MsgBox "这是我的第1个VBA程序。"

    End Sub

    注:为了使用更多关于宏的功能,最好将Excel中的“开发工具”选项卡调出来。Excel2007和2010显示“开发工具”选项卡的设置方法分别是:

    Excel2007:

    点击Excel左上角的Office按钮,点击弹出的菜单底部的“Excel选项”按钮,在“常用”项里勾上“在功能区显示开发工具选项卡”,确定即可。

    Excel2010:

    点文件->选项,在Excel选项对方框里找到“自定义功能区”,在右侧勾上“开发工具”,确定。

    经过以上设置后,就能在Excel主窗口上看到“开发工具”选项卡了,点开里面有诸多关于宏开发的功能。例如点击最左边的“Visual Basic”按钮也能进入VBE开发界面,跟按Alt+F11的效果一样。

    六、如何运行VBA宏

    至此,我们已经成功的编写了一个VBA宏,是不是很想看看这个宏执行的结果呀?接下来探讨如何运行宏、让宏正常工作了。通常有以下几个办法:

    1.从开发环境中直接运行。将光标置于Sub/End sub之间,按菜单上的绿三角按钮,或F5键。

    2.通过形状按钮调用。在工作表,点“插入”->形状,插入一下圆角矩形,输入“调用宏”并简单设置格式:

    右键点击“调用宏”这个形状,在弹出的菜单中选择“指定宏”,在“指定宏”对话框中选择刚才编写的宏(名称是VBATest),确定。

    在工作表任一单元格点击一下(好取消按钮的选中状态),这时鼠标移到按钮上就变成了小手的形状,点击后出现本宏运行的结果:

    3.快捷键调用。可以为宏设置一个快捷键,设置正确后直接按快捷键来运行宏。方法是:

    在“开发工具”选项卡,点“宏”按钮,选中“VBATest”,点击右侧的“选项”按钮,设置一个快捷键,确定。

    注意:此处设置的快捷键优先级高,如果跟软件原来的快捷键冲突,会覆盖原来的。

    七、为工程设置密码保护

    我们编写好的宏,为了防止被人任意修改,可以设置密码。通过后才可以进到代码编辑界面进行修改。具体操作方法:在左上角的列表树上右键点击“VBAProject...”,在弹击的菜单中选择“VBAProject属性”打开对话框,选择“保护”选项卡,勾选“查看时锁定工程”,并设置查看工程属性的密码,单击“确定”。如下图:

    展开全文
  • 数据情况 要求 分表汇总 代码 Public Sub fenlei() Dim i, a, b, c, d, e As Integer Dim arr a = 2 b = 2 c = 2 d = 2 e = 2 row_num = Cells(Rows.Count, 3).End(xlUp).Row arr = Range("b3:i3") Worksheets....
  • 多工作簿多工作表的数据汇总 目标 excel中多表单据中特定cell中的内容汇总数据条。 demo分解 在实例1.1的基础上需要对工作簿进行操作。 依次打开工作簿用到了Dir()函数 ...
  • 用各种工具对数据进行分类汇总

    千次阅读 2018-06-04 15:10:19
    数据分类汇总的方法有很多种,工具也有很多,这次为大家一一介绍,各种工具如何进行分类汇总,大家自行判断,觉得哪种最好用,就用哪种,毕竟工具不重要,高效出结果才最重要。为了方便举例,所用的数据集就是鸾尾花...
  • VBA 数据透视表的创建

    千次阅读 2021-01-21 15:21:37
    方法 读/写 值类别 默认值 说明 .ColumnGrand ...是否启用列汇总 ...是否启用行汇总 ...数据透视表在刷新或移动...如果数据透视表在有错误的单元格中显示用户自定义的错误字符串,则该值为 True。 .ErrorString 返回...
  • 如何使用VBA按商品名汇总销售数量和收入? 数据表 日期 商品代码 商品名 数量 收入 2011/8/17 01.0032 ASWDVBN 0.05 4273.5 2011/1/28 01.0003 ERTGH 1 3589.74 2011/1...
  • 现希望建立一个查询表,能够让用户选择某一个或者两个汇总字段,当用户单击“汇总”按钮后,则按照该一列或者两列进行数量和金额的汇总。该如何实现? 日期 销售经理 客户分类 区域 分配业务员 回款...
  • 如何对部门和每个区域进行数据统计,此公式可以一劳永逸。
  • ——庄子今天给大家分享个把汇总数据表拆分到各个不同的工作表中的操作方法。先看原始数据表:我们需要按每个【城市】新建一个工作表,并把该城市对应的数据内容,拆分到工作表中。怎么做呢?今天给大家分享的是使用...
  • 1 群里有人提问求助 1.1 原始问题和报错 ...Sub 多列汇总() Dim l(1 To 1000, 1 To 4) Dim arr, 行数 Dim x, k As Integer Dim d As New Dictionary arr = Range("q1:t" & Range("t65536").En...
  • 汇总数据的复制 分类汇总后,需要把分类汇总数据复制出来,但在复制粘贴后,明细数据也给复制出来了,怎么能只复制汇总数据呢? 1、点击左上角的数字“2”,隐藏明细数据,然后选择汇总数据范围,点击开始菜单中...
  • Public Sub SubtotalData() AppSettings 'On Error GoTo ErrHandler Dim StartTime, UsedTime As Variant StartTime = VBA.Timer 'Input code here Dim Wb As Workbook Dim ...
  • 按提示自动操作excel对excel或wps表格里的内容进行分类汇总。 与excel自带分类汇总的区别: ☆、可以按多列分类 2、按需要自动排序、自动分类生成汇总表格 3、简单明了 更新: 1.01 修正了非连续空行当成...
  • 三种方式实现数据分类汇总 数据分类汇总是常见的数据操作方式,类似于数据库或pandas中的使用group by 和聚合函数来统计数据。 第1,2种方法分别是使用python和VBA,请参见之前的博客:Python与VBA的比较 2-数据分类...
  • 我给公司客服编写的EXCEL VBA项目源代码(多表操作的包括外部导入txt文件,查询,分类汇总,写出)
  • Excel 批量快速合并相同的单元格   ...在制作Excel表格的时候,为了使得自己制作的报表更加简洁明了,方便...数据透视表实现的快速合并单元格   1 打开需要合并单元格的excel表格。(这里是以excel 2007版...
  • Function 透视(数据源 As Range, 首行为标题 As Boolean, 列标签所在列号 As Integer, 计数求和列所在列号 As Integer, 汇总方式, 总计方式, 结果起始单元格 As Range, ParamArray 行标签所列号()) As Boolean ...
  • 要使制作或设计的工作表更加具有可读和容易分析,可以通过一些常用的管理来实现,包括排序、分类汇总和筛选等。本课程将介绍相关的知识和技巧。
  • 同事经常遇到问题,这个按照部门进行分类,还要进行保存,好麻烦,每次手动都要半天,还可能出错。所以针对这个问题,用VBA写了个分列和保存的宏。 一、使用前说明: 1.要分列的表列中间不要出现空内容,比如要...
  • 目录 ...如何使用VBA按员工姓名汇总所有工作表的工资项目? 姓名 应发合计 基本工资 补贴 俞卫广 6700 6700 0 高波 6250 6200 50 曲波 3215 3215 0 周..
  • '将按照某列分类保存到各工作表中,前提新建以某列数据命名的工作表 '原理:源数据每一列进行归类 Dim i As Long, pq As String, rng As Range i = 2 pq = Worksheets("浙南战区").Cells(i, "a").Value 'pq...
  • 使用sql语句进行数据分类汇总

    千次阅读 2007-10-17 13:25:00
    多维数据集是事实数据的扩展,事实数据即记录个别事件的数据。扩展建立在用户打算分析的列上。这些列被称为维。多维数据集是一个结果集,其中包含了各维度的所有可能组合的交叉表格。    CUBE 运算符在  SELECT ...
  • 分类汇总VBA源代码,可手动设置分类项,并将结果按分类项(班级)新建表格。
  • 写一个判断语句遍历从上到下的数据,按照预警级别要求进行分类,并把 相应同学所在行用对应颜色注明 最后再把得到的数据数据透视表透视,可以清楚知道各个班所挂同学的人数,便于后续分析。 一些细节补充:从...
  • │ ├6-67 把空文件夹一扫而光的决胜法宝 │ ├6-68 来自学员的问题,如何快速提取轮岗信息 │ ├6-69 批量汇总工作簿数据,您的工作效率至少能提高10% │ ├6-70 再也不要为文件自动分类而发愁了 │ ├6-71 ...
  • 前面两篇博客,我们介绍了VBA和使用VBA获取当前工作表和另一个工作簿的工作表中的数据。这篇我们来说说如何使用VBA模糊查找当前工作表中有用的数据。我们有时会遇到这样的情况。我们手头有很多很多老的excel文件,...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 663
精华内容 265
关键字:

vba数据分类汇总