用函数解决不了的问题我们用VBA宏来解决

2021-09-27 22:52:37
剩余内容,展开全文

用函数解决不了的问题我们用VBA宏来解决

一听宏,写代码可能不是你我任何一个没有从事过计算机编程的人所能完成的工作,但是我们可以保存固定的代码,等用到的时候直接复制粘贴进去,不就两全其美了吗!下面我说下具体案例。

image.png

给我出这么一个难题的确让我没想到,看到上图密密麻麻的单元格,光统计输入进去已经够繁琐了,还要将其分开填写。我原本想着把所有部门的数据全都放在一张表格里面,这样的话我们可以通过筛选功能实现各个部门的切换,但是部门人员就是和你想法不一样,他们想打开表格就可以直观的看到自己的订单情况,而我作为统计数据的人员,每次都要从全局出发进行填写,为了满足他们要求,我只能暂时将部门分开,每个部门一个表格。这时问题来了,领导说我们看这个表格有些费劲,能不能有个全的,我说实现不了,因为当时我只对vlookup函数比较熟悉,函数在解决Excel的问题时只能引入相同数据,但是数据的颜色格式都不能被复制过去,那我的工作量便会加大,使用复制粘贴的方法也是徒劳,遇到一个讲解Excel的老师教会了我用录制宏的方式,将所有表格合并在一起,快速高效,步骤如下:

1、 数据准备。在使用此方法合并单元格时,必须保证每个表格的格式完全一样,只是行数不同。

2、 复制代码。在汇总表的标签点“右键”,找到“查看代码”,然后看到宏计算界面。如图所示:

image.png

会看到输入代码的界面如下:

image.png

复制下面这段代码到空白区域:


Sub 新建汇总表()

Worksheets.Add Before:=Worksheets(1)

ActiveSheet.Name = "汇总表"

Application.ScreenUpdating = False

Worksheets("一部").Rows("1:1").Copy Rows("1:1")

For j = 1 To Sheets.Count

   If Sheets(j).Name <> ActiveSheet.Name Then

        Sheets(j).Cells.EntireColumn.Hidden = False

       x = Range("A65536").End(xlUp).Row + 1

       Sheets(j).Range("a2:bc" & Sheets(j).Range("a65536").End(xlUp).Row).Copy Cells(x, 1)

   End If

Next

Application.ScreenUpdating = True

Dim rowh As Byte

rowh = 25   

Selection.RowHeight = rowh

End Sub

image.png

3、 执行代码运行,如图所示:

image.png

点击确定,关闭代码窗口

其实以上代码是经过多次修改过的,可以保存留用,1、汇总前面工作表数据带多行标题。2、汇总后数据行高不一致。3、汇总数据后新建表格并命名汇总表。

    通过以上步骤的探索,优化后的效果:1、汇总后只保留一行标题,去除多余标题。2、汇总后行高可以固定一个行高。3、汇总后新建表格并命名为汇总表。

    注:以上代码在使用时,如果列有隐藏的需要都展示出来,行也是,如果想汇总出来的数据是全部的包含隐藏内容,可以将隐藏内容全部展示出来。

案例文件:

链接:https://pan.baidu.com/s/1r0jXNOC9KHvtNchuxaGUOw 

提取码:1234 

    作为对表格还不熟练的你可以不用学习VBA,因为VBA是一种编程语言,如果想学会需要经历一段时间,但是不阻挡你掌握工作中常用的代码,方便自己的工作,孰能生巧,任何事物的学习都需要一定时间,今天的分享文章就到这里,案例文件会在百度云链接,可以下载使用,喜欢学习表格的童鞋可以关注我的公众号如下图:

      image.png


  • 833 人看过