作者简介作者简介:杨健(1971-),男,博士,中国人民解放军海军大连舰艇学院基础部副教授,研究方向为软件工程。
0引言
商品房价格统计是房地产价格统计调查工作中的一个重要环节,是国民经济核算和国家实施房地产市场调控的基础。在商品房价格统计系统中,房产交易数据从数据库中提取出来汇总在一个excel表中,然后利用excel所提供的排序和函数功能进行整理,目前这些工作采用大量的手工操作,工作效率不高。
vba(visual basic for applications)是微软开发出来的在office办公软件中执行通用自动化的编程语言,用户可以根据需要自定义解决方案[1,2]。本文在商品房价格统计系统功能分析基础上,利用excel的可编程对象,进行基于vba的二次开发,对excel中的商品房价格数据进行快速处理,方法简单高效。
1vba对象模型及系统功能分析
1.1vba及excel对象模型
vba继承vb的开发机制,同时语言结构和集成开发环境也相似,提供了面向对象的程序设计方法。因此,在应用excel的vba进行软件开发过程中,充分利用excel的对象模型是提高研发效率的基础。在excel中,application、workbook、worksheet、range这4个类以及成员是excel对象的核心部分,通过它们可以对应用程序及工作簿、单元格等进行存取等操作[3,4]。在编程过程中,除了采用vb语言所提供的基本数据定义方式和集合等数据定义方式外,也可以采用其它的数据存储方式,如字典(dictionary)对象,这是一种重要的联合数组,利用这一对象可将计算的中间数据存储到内存中,从而提高运算效率。
1.2系统功能
统计部门对数据库中提取出的城市商品房价格数据进行统计分析时,主要包括查询、排序、筛选以及对比分析等操作。从目前的实际情况来看,数据库中价格数据转到excel软件后,主要利用excel自带的排序、筛选、函数等进行操作处理,手工操作较多,特别是进行筛选处理等任务时不能完全满足特定的需求,费时费力,这些任务需要进行适当的程序设计以满足要求,提高效率。
本系统的功能主要基于统计部门对城市商品房价格的统计工作,包括查询、排序、筛选、输出等4个功能模块,如图1所示。系统运行环境为:windows xp以上操作系统,安装微软的excel软件,利用excel中的vba技术对上述功能进行设计和编程。下面以核心的筛选模块为例,阐述其关键实现过程。
图1房价统计系统功能框架
2系统功能实现
2.1筛选模块流程
从系统功能角度来看,统计系统的4个模块中筛选模块是核心模块,对计算的效率要求较高,本文重点给出该模块的流程和实现。根据任务要求,该模块的功能主要是对市内各销售楼盘的价格求平均值,并按给定的阈值进行筛选,查找出区分阈值内外的价格数据,为进一步的分析提供条件。图2给出了该模块的流程,主要包括每个楼盘平均价格的计算和根据阈值进行筛选两部分。
图2筛选模块流程
2.2筛选模块实现代码
本模块首先计算每个楼盘销售的总数目,主要通过读取每个单元格中名称字段来确定,实现的重点在于使用了字典(dictionary)对象,其代码如下:
set dicbuild= createobject("scripting.dictionary")
for i = 1 to ubound(rng)
name = rng(i, 1)
if trim(name) <> "" then
if not dicbuild.exists(name) then
dicbuild.add name, 1
else
dicbuild (name) = dicbuild (name) + 1
end if
end if
next i
房屋均价计算方法比较多,本文仅采用求和平均的方法,实现该功能的代码如下:
keyname = dicbuild.keys
for i = 0 to dicbuild.count - 1
sum = 0
for j = 1 to ubound(rng)
if rng(j, 1) = keyname (i) then
sum = sum + rng(j, 2)
end if
next j
sum = sum / dicbuild (keyname (i))
dicbuild (keyname (i)) = sum
next i
实现超偏显示功能的代码如下:
for i = 1 to ubound(rng)
if rng(i, 2) > d(rng(i, 1)) * (1 + threshold) or rng(i, 2) < dicbuild (rng(i, 1)) * (1 - threshold) then
sheet1.range("a" &am
p; i + 1 & ":b" & i + 1).interior.colorindex = 3
end if
next i
2.3实例分析
本文以某城区一季度商品房销售数据为例,该季度共计有5个小区销售的3 317套住房。本文采用3种算法进行了筛选计算:①在模块中的3次循环中均采用读取单元格的方法;②先定义数组,然后将单元格中的数据读入数组中再进行处理;③采用文中给出的字典对象处理方法。通过对比分析,3种方法的耗时分别为3.984秒、0.852秒和0.411秒。结果表明,采用本文的数据处理算法在运算效率上相对较高,当数据量巨大时,这种优势尤为明显。
3结语
房价统计计算是城市房价分析调控的基础。本文应用excel vba,结合房价统计工作任务对房价统计系统进行了分析和设计,系统操作简单、运行速度快,有助于把统计人员从大量重复的工作中解放出来,减轻了统计人员的日常工作强度,提高了工作效率。同时,该方法也可推广应用于相关行业的数据统计工作中。
参考文献参考文献:
\[1\]张敏.基于excel+vba实现分类汇总的动态管理方法[j].信息系统工程,2010(9):4950.
[2]罗刚君.excel vba程序开发自学宝典[m].北京:电子工业出版社,2009.
[3]李政.vba应用基础与实例教程[m].北京:国防工业出版社,2005.
[4]丁士锋.excel vba标准教程[m].