VBA在专利数据加工中的应用
2015-11-02宋寿贵邹中华
宋寿贵 邹中华
VBA在专利数据加工中的应用
宋寿贵 邹中华
结合Excel 2007电子表格软件,举例说明了VBA语言在专利数据加工中的应用,通过循环和枚举代码,实现了子母公司名称的合并和对各类公司的快速标引,显著提高了专利数据处理的效率。
专利数据加工是专利统计分析工作的重要环节。由于需要加工的专利经常在数万条到几十万条,人工处理需要花费大量的时间,工作繁琐、重复性强、容易出错。为了提高专利数据加工的效率和准确性,本文通过几个例子,阐述如何将Visual Basic for Application(简称VBA)应用在专利数据的加工流程中,以提高工作效率。
VBA 介绍
VBA是微软Office 系列软件内嵌的编程语言,可以和Office系列软件进行良好的交互。将其应用在Excel软件中,可以使工作自动化,如自动数据匹配、数据检索、自动创建图表等。在Excel中按Alt+F11组合键,即可打开VBA代码编辑器。VBA语言采用了类似传统Basic语言的语法,易学易用。如本文用到的循环语句的语法是:
For i = 开始值 to 结束值
循环体
Next i
当循环变量i的值介于开始值和结束值之间时,循环体中的代码会被执行。
子母公司名称的合并
实际工作中,根据专利统计分析的需要,往往会把公司A的所有全资子公司的专利当成A的专利来进行统计。为了后续处理的方便,需要针对每一个有全资子公司的公司,将其所有全资子公司的名称替换为该公司的名称。当涉及到的公司成千上万时,用Excel的查找替换操作效率很低且容易出错。下面介绍一下如何用VBA语言进行自动处理。
首先,在Excel中新建一张表单,名字叫做sheetParent,在此表单中列出子母公司名称映射表,结构如表1所示。
表1 子母公司名称映射表
其次,找到要进行子母公司合并的Excel表单sheetDst,记下公司的名称所在的列,如D列(列的数字序号为4),如表2所示。
表2 待进行子母公司合并的表
在VBA代码编辑器中输入如下代码:
Sub 合并子母公司名称()
‘子母公司名称映射表的行数
parentEnd = sheetParent.UsedRange.Rows. Count
‘待进行子母公司合并的表的行数
dstEnd = sheetDst.UsedRange.Rows.Count
‘二重循环逐条比较
For m = 1 To dstEnd
For n = 1 To parentEnd
If sheetDst.Cells(m, 4) = sheetParent.Cells(n,2) Then
‘找到一个存在母公司的子公司,将其名称换位母公司名称
sheetDst.Cells(m, 4) = sheetParent.Cells(n,1)
Exit For
End If
Next n
Next m
End Sub
按F5键执行代码,以采用酷睿i5为CPU、内存4GB的台式机为例,采用上述方法处理15万条左右的专利数据,将其中所有可能的子母公司名称进行合并,只要不到一分钟即可完成,不仅大大提高了效率,而且也保证了准确性,减少了人工处理的误操作。
对各类特色公司的标引
专利统计中,有时候需要对安徽省的高新技术公司、优秀民营公司、优势产业公司的专利情况进行跟踪分析。而原始专利数据中并没有将这些公司明确标引出来。采用VBA可以很方便的完成这项标引工作,下面以标引高新技术公司为例进行说明。
首先,在Excel中新建一张表单,名字叫做sheetHiTech,在此表单中列出安徽省高新技术公司的名单,结构如表3所示。
表3 高新技术公司名单表
其次,找到要进行标引的Excel表单sheetDst,如表4。记下公司的名称所在的列,如D列(列的数字序号为4),并将Z列(列的数字序号为26)设定为标引列,如果某公司是高新技术公司,则该列标记为“高新”,否则标记为空。
表4 待进行标引的表
在VBA编辑器中输入如下代码:
Sub 标引高新技术公司()
‘高新技术公司列表的行数
srcEnd = sheetHiTech.UsedRange.Rows.Count‘待标引的表的行数
dstEnd = sheetDst.UsedRange.Rows.Count
'二重循环比较
For m = 1 To dstEnd
For n = 1 To hiTechEnd
If sheetDst.Cells(m, 4) = sheetHiTech.Cells(n,1) Then
‘找到一个高新技术公司,将其标引为“高新”
sheetDst.Cells(m, 26) = "高新"
Exit For
End If
Next n
Next m
End Sub
最后,对VBA处理后的数据排序,就可以把所有高新技术公司筛选出来,进行进一步统计和分析。排序的代码为:
Me.range(“A1”, “Z86546").Sort key1:="标引列”, order1:=xlDescending, Header:=xlYes
其中,A1和Z86546以对角线的形式指定了待进行标引的表中所有数据的范围,xlDescending表示将数据降序排列。
结语
针对专利数据的子母公司合并以及各类特色公司标引问题,利用VBA代码能够方便快捷地实现,避免了手工操作效率低下、易出错的问题,同时节省了使用专业数据库软件进行处理的高昂费用成本。实践表明,采用VBA处理30万条以下的中小量专利数据时,非常方便实用。
10.3969/j.issn.1001-8972.2015.10.019