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