摘 要:利用VBA可以快速地實現(xiàn)將多個工作簿內(nèi)容匯總,EXCEL教學(xué)中經(jīng)常需要對學(xué)生信息進(jìn)行匯總,利用這個功能可以避免重復(fù)的復(fù)制和粘貼操作,大大節(jié)省了操作的時間,提高了課堂效率。本文利用VBA對學(xué)生信息進(jìn)行初步匯總,并提出身份證號匯總出錯的解決方法。
關(guān)鍵詞:VBA;合并工作簿;EXCEL教學(xué);課堂效率
在EXCEL教學(xué)中,第一次上課教師一般會收集學(xué)生的信息作為今后教學(xué)的素材,這樣做的好處是學(xué)生對自己的信息比較感興趣,課堂效果較好。假設(shè)我要收集學(xué)生下列信息,我讓每個學(xué)生新建了一個工作簿,每個學(xué)生都在sheet1表中完成如下表格,文件名命名為學(xué)生的名字,最后提交作業(yè)后所有學(xué)生作業(yè)都在一個公共文件夾下,現(xiàn)在要對這些文件進(jìn)行匯總,把不同學(xué)生的信息匯總到一個工作簿里,以前我們大多是用復(fù)制粘貼的方式完成,但是班級人數(shù)較多,利用這種方式需要不斷打開和關(guān)閉工作簿,非常麻煩,而且有可能重復(fù)操作。利用VBA可以輕松地解決這個問題。
一、利用VBA實現(xiàn)信息匯總
新建一個“匯總”工作簿,類型為“啟用宏的工作簿(*.xlsm)”,打開EXCEL,調(diào)出開發(fā)工具,點擊VB按鈕,插入兩個模塊分別為“模塊1”和“模塊2”,在“模塊1”中輸入如下代碼,并運行。
Sub合并多工作簿及多工作表()
Dim MyPath As String,MyFile As String,i As Integer
Dim Wb As Workbook,arr
Application.ScreenUpdating=False
MyPath=ThisWorkbook.Path
MyFile=Dir(MyPath &”\*.xlsx”)
Do Until MyFile=””
If MyFile<>ThisWorkbook.Name Then
Set Wb=Workbooks.Open(MyPath &”\”& MyFile)
‘For i=1 To Wb.Worksheets.Count
arr=Sheets(1).UsedRange
ThisWorkbook.Sheets(1).Range(“A”& Rows.Count).End(xlUp).Offset(1).Resize(UBound(arr),UBound(arr,2))=arr
‘Next
Wb.Close
End If
MyFile=Dir
Loop
Application.ScreenUpdating=True
End Sub
該模塊的主要作用是將同一個文件夾下的若干工作簿匯總到一個工作簿里,運行后得到匯總后效果如圖:
刪除第一行空行后,從第三行開始,奇數(shù)行都是重復(fù)標(biāo)題行,所以,在“模塊2”中輸入如下代碼,并運行。
Public Sub隔行刪除()
m=Application.CountA([a:a])
For r=3 To m/2+2
Rows(r).Delete
Next r
End Sub
運行后得到匯總后的效果:
這樣就快速地匯總好了數(shù)據(jù),將匯總后的數(shù)據(jù)進(jìn)行保存,并進(jìn)行后續(xù)的處理。
二、使用VBA進(jìn)行信息匯總需要注意的幾個問題
(1)要匯總的工作簿需在一個文件夾內(nèi),凡是與“匯總”工作簿不同名的工作簿都能被匯總。
(2)每個學(xué)生的sheet1表中的數(shù)據(jù)必須從A1單元格開始輸入,B1單元格必須有對應(yīng)的數(shù)據(jù),否則匯總不到。中間不要有空行,數(shù)據(jù)的列順序盡量保證相同。
(3)在匯總身份證號的時候,如果身份證號是純數(shù)字的,即不帶X字樣的,雖然在匯總前已經(jīng)將數(shù)據(jù)類型設(shè)為文本型了,但是匯總后還是會出現(xiàn)數(shù)據(jù)變化的情況,最后3位會變成0。解決的辦法是匯總前每個同學(xué)在身份證號后統(tǒng)一加上一個字母如Y,匯總后再用函數(shù)進(jìn)行提取?;蛘呷绫纠荆谏矸葑C號前6位,中間8位后面分別加上點號,匯總后再分別用left,mid和right函數(shù)處理也比較方便。
(4)匯總后的文本型數(shù)據(jù)如學(xué)號,電話,QQ等,會丟失文本屬性,需要用分列的功能將其重新設(shè)置為文本類型。
參考文獻(xiàn):
[1]http://www.51zxw.net/.
作者簡介:
吳秀英(1983—),女,漢族,江西撫州人,本科,研究方向:計算機應(yīng)用。