宋壽貴 鄒中華
VBA在專利數據加工中的應用
宋壽貴 鄒中華
結合Excel 2007電子表格軟件,舉例說明了VBA語言在專利數據加工中的應用,通過循環和枚舉代碼,實現了子母公司名稱的合并和對各類公司的快速標引,顯著提高了專利數據處理的效率。
專利數據加工是專利統計分析工作的重要環節。由于需要加工的專利經常在數萬條到幾十萬條,人工處理需要花費大量的時間,工作繁瑣、重復性強、容易出錯。為了提高專利數據加工的效率和準確性,本文通過幾個例子,闡述如何將Visual Basic for Application(簡稱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