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