vba怎么整理代码(6明细表简化及美化)
这篇文章不单单是讲解自动排序以及筛选功能,同样的,我们不用完全知道代码的用法,而实现我们想要的功能。
来源 :这篇文字来源于我每个月的N N预测,需要对比与上一版本的预测之间的变化,每次都要去看底稿,而且底稿非常负责,不熟悉表的找个信息非常麻烦,而且不利于汇报展示,所以做了这个自动的简表。适用于环比、同比等对比分析,也相当于是美化了一下表格,虽然还是很丑。。。
我们先来看一下效果
先看明细表如下:
明细表由7个费用科目(挑出部分,实际可能十几个甚至几十个)和21个项目组成。
再看一下简表
我们能够看到简表非常简单。在这个简表中,我们一共实现4个功能,1、下拉筛选科目;2筛选无变化的项目;3对变化值的大小进行排序;4、变化原因自动匹配。接下来我一步一步分解。
第一步:将表格变为超级表
此步骤是为了方便我们做筛选和写公式。在这步骤之前,需要将表格的公式设置好!公式我就不讲解了,网上太多了。
选中表格区域——按ctrl t——查看超级表表名
查看表名,记下来,第三步需要用
第二步:制作下拉窗口
将要下拉的元素制作一下下拉菜单,注意哈,项目和费用科目是可以调换位置的哈,就看你实际需要的是看项目的环比还是费用的环比。
此处下拉菜单后数据条没有变动,是因为我公式还没有设置好哈。
第三步:实现自动筛选
这步是用VBA代码实现的,代码如下:
Private Sub Worksheet_Change(ByVal Target As Range)
Excel.Application.ScreenUpdating = False
If Target.Address = "$B$3" Then '引号没填写下来筛选所在单元格,我的模板是在B3,可调整
'------------------------------------------------------------------------------
ActiveSheet.ListObjects("表5").Range.AutoFilter Field:=4 '修改表名为超级表名
ActiveSheet.ListObjects("表5").Range.AutoFilter Field:=4, Criteria1:=">0.5" _
, Operator:=xlOr, Criteria2:="<-0.5" '4为要做筛选的列在超级表的第几列,-0.5和0.5为筛选条件
'------------------------------------------------------------------------------筛选
End If
Excel.Application.ScreenUpdating = True
End Sub
这串代码我们要放到简表所在的表中,我的表叫做【简表-分部】,放到这里后,我们不做任何操作,关闭VBE代码编辑窗口即可。我们看看演示:
第四步:排序制作
排序的方法有很多,借此机会,给大家介绍通过录制宏的方式取得我们需要,但是又不会写的代码。录制宏的代码在我们正式写的时候,多是可以改改即可使用的,所以大家录制宏还是了解一下就行,非常简单,就是电脑自动记住我们操作的步骤,下次要用直接拿出来即可重复操作我们之前的操作。
演示:
排序代码我们摘出来看看
With ActiveWorkbook.Worksheets("简表-分部").ListObjects("表5").Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With
其实我们由此也看的只需要改一下表名即可!
至此,我们的自动筛选 自动排序功能做好的简表已经完成啦!
最后提一嘴也是很重要的!!!
保存的时候需要文件另存为启用宏的工作簿【.xlsm】的文件,不然VBA代码不能保存!
这个简表有点还是很明显的,再来看看效果吧,上边的截图时间太长了。
文章还不支持发文件,不然我可以上传个源文件。。。。哎
,免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com