最近,有机会参与数据披露工作,在制作Excel报表工作过程中,出现数据差错是难免的,也认识到人工报表数据稽核是个艰巨,而且工作量超大的任务。
刚刚开始学习制作报表(有现成的模版),练习完成了5月份的月度统计报告,内含69张报表;以及5月份某部月报。
练习效果如何,需要与已经发布的统计报告稽核。如下所示“移动业务发展”统计表就是其中一个。
最初方法是打印出报表,与已经发布报告进行比对,核对方法如下:
首先比对全国的总数,然后比对分省数据,选出北京、山东、新疆等有代表性的省分,等等。
这样核对效率太低,效果也不好。为此,我思考采用Excel比对数据,设计方案如下:
我采用的方案是新建一个Excel统计报告,内含69张表,在每张表上比对我新做的表与已经发布的表。分两次使用VLOOKUP函数分别取数据源,并做差。如果数据为0,则表明我做的对。
=VLOOKUP($B5,'[2016年5月****月度统计报告(新).xls]1.5移动业务发展 '!$A$5:$H$39,3,FALSE) - VLOOKUP($B5,'[2016年5月****月度统计报告201606.xls]1.5移动业务发展 '!$A$5:$H$39,3,FALSE)
本月、上月、上年同期数据计算比对方案,是理想的月报表稽核方案,以6月份为例,计算关系如下:
(6月)本月累计 - (5月)本月累计 = (6月)本月完成 (6月)上月完成 = (5月)本月完成 (6月)上年同期 = (2015年5月)本月累计
月度统计报告稽核,实例如下:
(1)使用上个月统计报告中本年累计值、本月完成值
2016年5月.本年累计 - 2016年4月.本年累计 - 2016年5月.本月完成 = 0
=VLOOKUP($B6,'E:\大数据\[2016年5月**月度统计报告.xls]1.1各主体主要财务指标'!$A$6:$H$28,$D4,FALSE)- VLOOKUP($B6,'E:\大数据\[2016年4月**月度统计报告.xls]1.1各主体主要财务指标'!$A$6:$H$28,$D4,FALSE) - VLOOKUP($B6,'E:\大数据\[2016年5月**月度统计报告.xls]1.1各主体主要财务指标'!$A$6:$H$28,$D6,FALSE)
(2)使用去年同期统计报告中本年累计值
2016年5月.上年同期 - 2015年5月.本年累计 = 0
=VLOOKUP($B7,'E:\大数据\[2016年5月**月度统计报告.xls]1.1各主体主要财务指标'!$A$6:$H$28,E$4,FALSE)- VLOOKUP($B7,'E:\大数据\[2015年5月**月度统计报告.xls]1.1各主体主要财务指标'!$A$6:$H$28,D$4,FALSE)
例如××部月报稽核逆运算稽核过程如下:
(1)与系统下载报表做差
与系统下载报表做差,未人工修改过的数据将为0。
=HLOOKUP(E$2,'E:\大数据\[**部统计月报-201605.xls]**部统计月报'!$A$2:$AK$182,$AL4,FALSE) - HLOOKUP(E$2,'E:\大数据\[**部统计月报-201605 系统下载.xls]**部统计月报'!$A$2:$AL$182,$AL4,FALSE)
(2)本年经营业绩部分与统计处取数模版做差
本年经营业绩部分与统计处取数模版做差,人工修改过的本年经营业绩部分将为0。
=HLOOKUP(E$2,'E:\大数据\[**部统计月报-201605.xls]**部统计月报'!$A$2:$AK$182,$AL74,FALSE) - HLOOKUP(E$2,'E:\大数据\[2016年月报**统计处取数模板.xls]本年实际'!$C$2:$AI$118,3,FALSE)
(3)与**部投资分类数据(工程月报)做差
(4)……
VLOOKUP
在表格数组的首列查找指定的值,并由此返回表格数组当前行中其他列的值。
VLOOKUP 中的 V 参数表示垂直方向。当比较值位于需要查找的数据左边的一列时,可以使用 VLOOKUP 而不是 HLOOKUP。
语法
VLOOKUP(lookup_value,table_array,col_index_num,range_lookup)
Lookup_value 为需要在表格数组 (数组:用于建立可生成多个结果或可对在行和列中排列的一组参数进行运算的单个公式。数组区域共用一个公式;数组常量是用作参数的一组常量。)第一列中查找的数值。Lookup_value 可以为数值或引用。若 lookup_value 小于 table_array 第一列中的最小值,VLOOKUP 返回错误值 #N/A。
Table_array 为两列或多列数据。使用对区域或区域名称的引用。table_array 第一列中的值是由 lookup_value 搜索的值。这些值可以是文本、数字或逻辑值。文本不区分大小写。
Col_index_num 为 table_array 中待返回的匹配值的列序号。Col_index_num 为 1 时,返回 table_array 第一列中的数值;col_index_num 为 2,返回 table_array 第二列中的数值,以此类推。如果 col_index_num :
Range_lookup 为逻辑值,指定希望 VLOOKUP 查找精确的匹配值还是近似匹配值:
如果为 TRUE 或省略,则返回精确匹配值或近似匹配值。也就是说,如果找不到精确匹配值,则返回小于 lookup_value 的最大数值。
table_array 第一列中的值必须以升序排序;否则 VLOOKUP 可能无法返回正确的值。有关详细信息,请参阅排序数据。
如果为 FALSE,VLOOKUP 将只寻找精确匹配值。在此情况下,table_array 第一列的值不需要排序。如果 table_array 第一列中有两个或多个值与 lookup_value 匹配,则使用第一个找到的值。如果找不到精确匹配值,则返回错误值 #N/A。
如上图所示,从统计报告中取数据到M6单元格中,先在红箭头所指输入VLOOKUP函数,函数参数说明如下:
由于引用数据比较麻烦,在实际工作中又调整为先分别引入数据,在当前Sheet页再做计算比对,如下图所示:
在同一个sheet页中,分别引入:当月数据、上月数据、上年同期,再到比对数据表中进行计算比对。
参考:
《《大数据时代》读书笔记》 肖永威 2016.06