宋壽貴 鄒中華
VBA在專(zhuān)利數(shù)據(jù)加工中的應(yīng)用
宋壽貴 鄒中華
結(jié)合Excel 2007電子表格軟件,舉例說(shuō)明了VBA語(yǔ)言在專(zhuān)利數(shù)據(jù)加工中的應(yīng)用,通過(guò)循環(huán)和枚舉代碼,實(shí)現(xiàn)了子母公司名稱的合并和對(duì)各類(lèi)公司的快速標(biāo)引,顯著提高了專(zhuān)利數(shù)據(jù)處理的效率。
專(zhuān)利數(shù)據(jù)加工是專(zhuān)利統(tǒng)計(jì)分析工作的重要環(huán)節(jié)。由于需要加工的專(zhuān)利經(jīng)常在數(shù)萬(wàn)條到幾十萬(wàn)條,人工處理需要花費(fèi)大量的時(shí)間,工作繁瑣、重復(fù)性強(qiáng)、容易出錯(cuò)。為了提高專(zhuān)利數(shù)據(jù)加工的效率和準(zhǔn)確性,本文通過(guò)幾個(gè)例子,闡述如何將Visual Basic for Application(簡(jiǎn)稱VBA)應(yīng)用在專(zhuān)利數(shù)據(jù)的加工流程中,以提高工作效率。
VBA是微軟Office 系列軟件內(nèi)嵌的編程語(yǔ)言,可以和Office系列軟件進(jìn)行良好的交互。將其應(yīng)用在Excel軟件中,可以使工作自動(dòng)化,如自動(dòng)數(shù)據(jù)匹配、數(shù)據(jù)檢索、自動(dòng)創(chuàng)建圖表等。在Excel中按Alt+F11組合鍵,即可打開(kāi)VBA代碼編輯器。VBA語(yǔ)言采用了類(lèi)似傳統(tǒng)Basic語(yǔ)言的語(yǔ)法,易學(xué)易用。如本文用到的循環(huán)語(yǔ)句的語(yǔ)法是:
For i = 開(kāi)始值 to 結(jié)束值
循環(huán)體
Next i
當(dāng)循環(huán)變量i的值介于開(kāi)始值和結(jié)束值之間時(shí),循環(huán)體中的代碼會(huì)被執(zhí)行。
實(shí)際工作中,根據(jù)專(zhuān)利統(tǒng)計(jì)分析的需要,往往會(huì)把公司A的所有全資子公司的專(zhuān)利當(dāng)成A的專(zhuān)利來(lái)進(jìn)行統(tǒng)計(jì)。為了后續(xù)處理的方便,需要針對(duì)每一個(gè)有全資子公司的公司,將其所有全資子公司的名稱替換為該公司的名稱。當(dāng)涉及到的公司成千上萬(wàn)時(shí),用Excel的查找替換操作效率很低且容易出錯(cuò)。下面介紹一下如何用VBA語(yǔ)言進(jìn)行自動(dòng)處理。
首先,在Excel中新建一張表單,名字叫做sheetParent,在此表單中列出子母公司名稱映射表,結(jié)構(gòu)如表1所示。
表1 子母公司名稱映射表
其次,找到要進(jìn)行子母公司合并的Excel表單sheetDst,記下公司的名稱所在的列,如D列(列的數(shù)字序號(hào)為4),如表2所示。
表2 待進(jìn)行子母公司合并的表
在VBA代碼編輯器中輸入如下代碼:
Sub 合并子母公司名稱()
‘子母公司名稱映射表的行數(shù)
parentEnd = sheetParent.UsedRange.Rows. Count
‘待進(jìn)行子母公司合并的表的行數(shù)
dstEnd = sheetDst.UsedRange.Rows.Count
‘二重循環(huán)逐條比較
For m = 1 To dstEnd
For n = 1 To parentEnd
If sheetDst.Cells(m, 4) = sheetParent.Cells(n,2) Then
‘找到一個(gè)存在母公司的子公司,將其名稱換位母公司名稱
sheetDst.Cells(m, 4) = sheetParent.Cells(n,1)
Exit For
End If
Next n
Next m
End Sub
按F5鍵執(zhí)行代碼,以采用酷睿i5為CPU、內(nèi)存4GB的臺(tái)式機(jī)為例,采用上述方法處理15萬(wàn)條左右的專(zhuān)利數(shù)據(jù),將其中所有可能的子母公司名稱進(jìn)行合并,只要不到一分鐘即可完成,不僅大大提高了效率,而且也保證了準(zhǔn)確性,減少了人工處理的誤操作。
專(zhuān)利統(tǒng)計(jì)中,有時(shí)候需要對(duì)安徽省的高新技術(shù)公司、優(yōu)秀民營(yíng)公司、優(yōu)勢(shì)產(chǎn)業(yè)公司的專(zhuān)利情況進(jìn)行跟蹤分析。而原始專(zhuān)利數(shù)據(jù)中并沒(méi)有將這些公司明確標(biāo)引出來(lái)。采用VBA可以很方便的完成這項(xiàng)標(biāo)引工作,下面以標(biāo)引高新技術(shù)公司為例進(jìn)行說(shuō)明。
首先,在Excel中新建一張表單,名字叫做sheetHiTech,在此表單中列出安徽省高新技術(shù)公司的名單,結(jié)構(gòu)如表3所示。
表3 高新技術(shù)公司名單表
其次,找到要進(jìn)行標(biāo)引的Excel表單sheetDst,如表4。記下公司的名稱所在的列,如D列(列的數(shù)字序號(hào)為4),并將Z列(列的數(shù)字序號(hào)為26)設(shè)定為標(biāo)引列,如果某公司是高新技術(shù)公司,則該列標(biāo)記為“高新”,否則標(biāo)記為空。
表4 待進(jìn)行標(biāo)引的表
在VBA編輯器中輸入如下代碼:
Sub 標(biāo)引高新技術(shù)公司()
‘高新技術(shù)公司列表的行數(shù)
srcEnd = sheetHiTech.UsedRange.Rows.Count‘待標(biāo)引的表的行數(shù)
dstEnd = sheetDst.UsedRange.Rows.Count
'二重循環(huán)比較
For m = 1 To dstEnd
For n = 1 To hiTechEnd
If sheetDst.Cells(m, 4) = sheetHiTech.Cells(n,1) Then
‘找到一個(gè)高新技術(shù)公司,將其標(biāo)引為“高新”
sheetDst.Cells(m, 26) = "高新"
Exit For
End If
Next n
Next m
End Sub
最后,對(duì)VBA處理后的數(shù)據(jù)排序,就可以把所有高新技術(shù)公司篩選出來(lái),進(jìn)行進(jìn)一步統(tǒng)計(jì)和分析。排序的代碼為:
Me.range(“A1”, “Z86546").Sort key1:="標(biāo)引列”, order1:=xlDescending, Header:=xlYes
其中,A1和Z86546以對(duì)角線的形式指定了待進(jìn)行標(biāo)引的表中所有數(shù)據(jù)的范圍,xlDescending表示將數(shù)據(jù)降序排列。
針對(duì)專(zhuān)利數(shù)據(jù)的子母公司合并以及各類(lèi)特色公司標(biāo)引問(wèn)題,利用VBA代碼能夠方便快捷地實(shí)現(xiàn),避免了手工操作效率低下、易出錯(cuò)的問(wèn)題,同時(shí)節(jié)省了使用專(zhuān)業(yè)數(shù)據(jù)庫(kù)軟件進(jìn)行處理的高昂費(fèi)用成本。實(shí)踐表明,采用VBA處理30萬(wàn)條以下的中小量專(zhuān)利數(shù)據(jù)時(shí),非常方便實(shí)用。
10.3969/j.issn.1001-8972.2015.10.019