999精品在线视频,手机成人午夜在线视频,久久不卡国产精品无码,中日无码在线观看,成人av手机在线观看,日韩精品亚洲一区中文字幕,亚洲av无码人妻,四虎国产在线观看 ?

使用 VBA實現Excel表單數據的自動抽取與匯總

2011-12-31 00:00:00劉悅
中國管理信息化 2011年14期

[摘要] 本文介紹如何使用VBA開發通用型Excel數據抽取和匯總工具,從格式相同內容不同的多份Excel表單中抽取部分或者全部數據并自動匯總到Excel文件中,以方便后續統計分析工作。

[關鍵詞] Excel; VBA; 表單; 數據抽取; 匯總

doi : 10 . 3969 / j . issn . 1673 - 0194 . 2011 . 14. 046

[中圖分類號]TP317.1 [文獻標識碼]A [文章編號]1673 - 0194(2011)14- 0078- 03

1背景介紹

在日常工作中,經常會遇到從多份格式相同但內容不同的Excel表單中抽取部分或者全部數據到一個Excel文件中,以便進行統計分析工作,如調查表匯總統計、實驗報告匯總統計和監測數據匯總統計等。如果表單份數和內容較少、格式簡單、時間富裕、準確率要求不高,可以采用人工抽取數據并匯總的方式完成工作。但如果表單份數和內容非常多、格式復雜、時間緊迫、準確率要求高,采用人工抽取數據并匯總的方式將無法在短時間內準確完成工作。因此,如何準確、快速地從Excel表單中抽取數據并匯總是數據處理工作中的一個難題。

VBA(Visual Basic For Application)是Office內嵌的應用開發工具,基于VBA開發的應用程序可以實現一些有規律的、重復性的工作,以替代手工工作方式,提高工作效率和準確率。本文將介紹如何使用VBA開發數據抽取與匯總工具,實現從格式相同、內容不同的多份Excel表單中自動抽取部分或全部數據并匯總到一個Excel文件中。

2設計思想

使用VBA開發的Excel數據抽取與匯總工具的目標是將多份格式相同、內容不同的Excel表單中的部分或者全部數據自動抽取并匯總到一個Excel文件中,以方便后續的統計分析工作。該工具具有通用性和靈活性兩個主要特點。通用性:該工具適用于所有格式相同內容不同的Excel表單,使用者通過前端展示頁面配置數據匯總模板中的參數,使該工具適應新的數據抽取和匯總要求,而不需要改動程序。靈活性:該工具可以讓使用者根據工作需要自由抽取表單中的數據項,可以部分抽取也可以全部抽取,靈活自由。為此,程序需要解決以下3方面問題:① 判斷需要抽取數據的Excel目標文件。② 判斷從每個Excel文件的Sheet表單中需要抽取哪些數據。③ 設置怎樣的循環才能將目標文件所有Sheet表單中的數據抽取并匯總到一個Excel文件中。

為了解決上述問題,該工具使用Excel作為前端展示頁面,通過可配置的程序參數,實現操作簡便、自由靈活、可重復使用的數據抽取與匯總功能。其中,程序參數包括:

(1) 目標文件的存儲路徑:程序根據該參數查找目標文件,并將目標文件列表保存在前端展示頁面的指定位置。

(2) 待抽取數據的存儲位置:程序根據該參數在目標文件中定位,并從中抽取數據。

(3) 結果文件的保存路徑和名稱:程序根據該參數將結果文件存儲在指定路徑下,并以約定的方式為其命名。

3功能實現

基于VBA的Excel 數據抽取與匯總工具主要由3個功能模塊組成,即目標文件列表讀取功能模塊、數據抽取與匯總功能模塊和生成結果文件功能模塊。

3.1目標文件列表讀取功能模塊

目標文件列表讀取功能是根據設定的路徑將所有Excel目標文件讀取出來,并將文件名顯示在前端展示頁面的指定位置,形成目標文件列表,以方便使用者檢查核對。該功能模塊的關鍵是設置正確的循環關系,以便將路徑參數下所有目錄中的Excel目標文件讀取出來。該功能的核心代碼如下:

Private Sub ReadFileList_Click()

Dim mFilePath As String

mFilePath = Range("用于存儲路徑位置").Value

ChDir (mFilePath)

ChDrive Left(mFilePath, 1)

If Right(mFilePath, 1) <> "\" Then

mFilePath = mFilePath & "\*.xls"

Else

mFilePath = mFilePath & "*.xls"

End If

Dim mNextRow As Integer

mNextRow = 目標文件列表所在的行數

Dim mFileName As String

mFileName = Dir(mFilePath, vbNormal)

Do While mFileName <> ""

Range("目標文件列表所在列" & mNextRow).Value = mFileName

mFileName = Dir

mNextRow = mNextRow + 1

Loop

End Sub

3.2數據抽取與匯總功能模塊

數據抽取功能模塊是根據配置參數在Excel目標文件的指定位置抽取數據,并以行記錄的形式將數據保存到結果文件中。該功能的關鍵有兩個部分:① 首先建立兩個數組,分別用于存儲數據匯總模板中的數據項目名稱和數據存儲位置,然后通過循環將配置參數依次讀取到數組中,并將數據項目名稱保存到結果文件對應Sheet表單中的第一行。② 設計3層嵌套循環,將所有Excel目標文件的所有Sheet表單中的待抽取數據項依次抽取并匯總出來。第1層是目標文件列表循環,逐項打開目標文件列表中的文件;第2層是文件內的Sheet表單循環,逐項打開目標文件中的每個Sheet表單;第3層是待抽取的數據循環,根據配置參數逐項讀取目標數據,并將其保存到結果文件對應的Sheet表單中。該功能的核心代碼如下:

(1) 建立兩個數組,保存數據匯總模板中的數據項目名稱和數據存儲位置。

Do While mTempcolumnNumber <= (mColumnNumber - 2)

mInfo(mTempcolumnNumber - 1) = Cells(RowIndex:=mRowNumber, columnindex:=mTempcolumnNumber + 2).Value

mSourceInfo(mTempcolumnNumber - 1) = Cells(RowIndex:=mRowNumber + 1, columnindex:=mTempcolumnNumber + 2).Value

Workbooks(mSaveFileName).Worksheets(mTime). Cells(RowIndex:=1, columnindex:=mTempcolumnNumber) = mInfo(mTempcolumnNumber - 1)

mTempcolumnNumber = mTempcolumnNumber + 1

Loop

(2) 建立3層嵌套循環,抽取目標數據并保存。

Do While mSourceFileName1 <> ""

Workbooks.Open FileName:=mSourceFileName1

mSheetNumber = Workbooks(mSourceFileName1).Worksheets.Count

Do While mSheetTempNumber <= mSheetNumber

mInfoNumber = 0

Do While mInfoNumber < mColumnNumber - 2

mInfo(mInfoNumber) = Workbooks(mSourceFileName1).Worksheets(mSheetTempNumber). Range(mSourceInfo(mInfoNumber))

Workbooks(mSaveFileName).Worksheets(mTime).Cells(RowIndex:=mSaveRowNumber, columnindex:=mInfoNumber + 1) = mInfo(mInfoNumber)

mInfoNumber = mInfoNumber + 1

Loop

mInfo(mTempcolumnNumber) = Workbooks(mSourceFileName1).Worksheets(mSheetTempNumber).Name

mInfo(mTempcolumnNumber - 1) = Workbooks(mSourceFileName1).Name

mSaveRowNumber = mSaveRowNumber + 1

mSheetTempNumber = mSheetTempNumber + 1

Loop

Workbooks(mSourceFileName1).Close

mRowNumber = mRowNumber + 1

mSheetTempNumber = 1

mSourceFileName1 = Workbooks(mMainFileName).Worksheets(mMainSheetName).Cells(RowIndex:=mRowNumber, columnindex:=mSourceLinkColumnNumber).Value

Loop

3.3生成結果文件功能模塊

生成結果文件功能模塊在指定的路徑下生成保存數據抽取與匯總結果的Excel文件或Sheet表單,并按照約定的方式為其命名。該功能的關鍵是判斷指定路徑下是否存在以當前日期命名的Excel文件,如果不存在,則新建一個Excel文件;如果存在則打開該文件,同時增加一個Sheet表單存儲結果。為了在不修改程序的情況下可以同時存儲多次抽取數據的文件而不相互干擾,程序規定以當前日期(yy-mm-dd)作為Excel文件的名稱,以程序運行的時間(hh-mm-ss)作為存儲結果的Sheet表單名稱。該功能的核心代碼如下:

If Dir(mFilePath & mSaveFileName) <> "" Then

Workbooks.Open FileName:=mSaveFileName

Workbooks(mSaveFileName).Worksheets.Add

Workbooks(mSaveFileName).Worksheets(1).Name = mTime

Else

mTemp = Workbooks.Count

Workbooks.Add

Workbooks(mTemp + 1).SaveAs FileName:=mSaveFileName, ConflictResolution:=xlLocalSessionChanges

Workbooks(mSaveFileName).Worksheets(1).Name = mTime

Workbooks(mSaveFileName).Worksheets(2).Delete

Workbooks(mSaveFileName).Worksheets(3).Delete

End If

4運行效果

下面以工作中的應用案例闡述使用數據抽取與匯總工具的主要步驟(見圖1)和運行效果(見圖2)。

(1) 配置數據匯總模板:使用者根據Excel表單內容,自由配置需要抽取的數據項名稱和數據存儲位置。其中數據項名稱用于顯示匯總表的表頭信息,數據存儲位置為表單中數據項的實際存儲位置。

(2) 配置目標文件存儲路徑:正確填寫Excel目標文件的存儲路徑。

(3) 讀取目標文件列表:該工具根據目標文件存儲路徑,將該路徑下的所有Excel文件讀取出來,并以列表的形式展示在頁面上。

(4) 數據抽取與匯總:上述步驟完成后,該工具根據參數將目標文件中的數據抽取出來并保存在結果文件中。

5結束語

在實際應用中,1 166個Excel文件,2 332個表單,102 608個數據項,使用該工具在內存為2.0GHz,硬盤轉速為5 400轉/秒的計算機上運行3分30秒左右,結果準確無誤。

使用VBA開發的Excel數據抽取與匯總工具不僅具有投入成本低、簡單易用、小巧靈活、可移植性好等特點,更重要的是通用性強。通過配置數據匯總模板,可適用于所有格式相同、內容不同的多份Excel表單的數據抽取與匯總工作,提高了工作效率和準確率。

主要參考文獻

[1] Excel Home. Excel應用大全[M]. 北京:人民郵電出版社,2008.

[2] Excel Home. EXCEL數據處理與分析實戰技巧精粹[M]. 北京:人民郵電出版社,2008.

[3] 黃海. Excel VBA語法與應用詞典[M]. 北京:中國青年出版社,中國青年電子出版社,2009.

[4] 姚文濤. Excel VBA應用開發經典案例[M]. 北京:清華大學出版社, 2009.

注:本文中所涉及到的圖表、注解、公式等內容請以PDF格式閱讀原文

主站蜘蛛池模板: 欧美亚洲网| 久久精品无码国产一区二区三区| 五月天综合婷婷| 国产在线精品香蕉麻豆| 极品私人尤物在线精品首页| 自慰高潮喷白浆在线观看| 久久99蜜桃精品久久久久小说| 在线日本国产成人免费的| 欧美成人午夜影院| 日本AⅤ精品一区二区三区日| 中文字幕久久波多野结衣| 亚洲六月丁香六月婷婷蜜芽| 亚洲国产一成久久精品国产成人综合| 波多野结衣一级毛片| 毛片国产精品完整版| 亚洲人成电影在线播放| 国产内射一区亚洲| 欧类av怡春院| 久久黄色视频影| 55夜色66夜色国产精品视频| 亚洲福利视频网址| 亚洲乱码在线播放| 2019年国产精品自拍不卡| 精品综合久久久久久97| 69av在线| 色成人综合| 欧洲日本亚洲中文字幕| 思思热精品在线8| 免费日韩在线视频| 国产美女无遮挡免费视频网站 | 在线免费观看a视频| 亚洲一区免费看| 99一级毛片| 亚洲国产成熟视频在线多多 | 国产无人区一区二区三区| 日本黄色a视频| 新SSS无码手机在线观看| 91精品国产麻豆国产自产在线| 欧美午夜视频在线| 九月婷婷亚洲综合在线| 激情爆乳一区二区| 午夜精品一区二区蜜桃| 国产超薄肉色丝袜网站| 九九视频在线免费观看| 国产成人亚洲无码淙合青草| 美女裸体18禁网站| 九九九久久国产精品| 亚洲欧美日韩中文字幕在线| 国产制服丝袜91在线| 亚洲午夜福利在线| 国产精选自拍| 久久青草免费91观看| 国产精品妖精视频| 国产午夜一级毛片| 青青草原偷拍视频| 色婷婷视频在线| 亚洲另类国产欧美一区二区| 国内精品小视频福利网址| 亚洲人成成无码网WWW| 91在线高清视频| 91福利在线观看视频| 99re经典视频在线| 精品久久久无码专区中文字幕| 久久黄色毛片| 色综合天天综合中文网| 国产成人无码综合亚洲日韩不卡| 日本一区二区三区精品视频| 强奷白丝美女在线观看| 免费国产好深啊好涨好硬视频| 亚洲国产日韩视频观看| 毛片在线区| 欧美精品亚洲日韩a| 精品福利网| 国产aⅴ无码专区亚洲av综合网| 国产第一页第二页| 蜜臀AVWWW国产天堂| 亚洲黄网在线| 麻豆精品在线视频| 毛片a级毛片免费观看免下载| 欧美日韩综合网| 国产白浆一区二区三区视频在线| 国产成人无码AV在线播放动漫|