本發(fā)明涉及Excel文件的數(shù)據(jù)自動(dòng)化處理方法及系統(tǒng)領(lǐng)域,特別是涉及一種不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法及系統(tǒng)。
背景技術(shù):
在Microsoft公司Office集成軟件包的Excel中,進(jìn)行人工數(shù)據(jù)處理。具體為通過(guò)手動(dòng)對(duì)數(shù)據(jù)文件(工作簿)中工作表內(nèi)數(shù)據(jù)進(jìn)行復(fù)制、剪切、粘貼,利用公式與函數(shù)進(jìn)行數(shù)據(jù)運(yùn)算,以及數(shù)據(jù)分析。但該技術(shù)方案的缺點(diǎn)在于數(shù)據(jù)處理時(shí)效率低,處理周期長(zhǎng),且由于人為因素的出錯(cuò)率較高。
在Excel中,基于宏錄制的數(shù)據(jù)自動(dòng)化處理。具體為基于宏錄制的數(shù)據(jù)文件打開(kāi),及文件數(shù)據(jù)復(fù)制、剪切、粘貼、運(yùn)算、分析的數(shù)據(jù)自動(dòng)化處理。但該技術(shù)方案的缺點(diǎn)在于:(1)宏執(zhí)行時(shí),當(dāng)待處理數(shù)據(jù)文件個(gè)數(shù)相異時(shí),需要重新錄制一遍宏;(2)由于錄制宏的過(guò)程中,只能對(duì)給定名稱(chēng)數(shù)據(jù)文件的打開(kāi)進(jìn)行錄制,故在宏執(zhí)行時(shí),無(wú)法打開(kāi)任意名稱(chēng)數(shù)據(jù)文件;(3)無(wú)法根據(jù)任意數(shù)據(jù)文件個(gè)數(shù),對(duì)不同數(shù)據(jù)文件中所選工作表的不同位置進(jìn)行“選中”操作;(4)無(wú)法根據(jù)單元格內(nèi)容不同而做不同運(yùn)算。這樣,基于宏錄制的數(shù)據(jù)自動(dòng)化處理方法:一方面,增加了工作量,降低了處理效率,另一方面,由于其局限性,又減小了適用面。
技術(shù)實(shí)現(xiàn)要素:
為克服上述技術(shù)中存在的缺點(diǎn),本發(fā)明提供了一種Excel中不采用宏錄制基于VBA(Visual Basic for application)模塊的數(shù)據(jù)處理方法及系統(tǒng),作為一種數(shù)據(jù)自動(dòng)化處理方法和系統(tǒng),能實(shí)現(xiàn)當(dāng)待處理數(shù)據(jù)文件個(gè)數(shù)任意時(shí),對(duì)多個(gè)任意名稱(chēng)數(shù)據(jù)文件的打開(kāi),并選中不同數(shù)據(jù)文件中所選工作表的不同位置,進(jìn)行數(shù)據(jù)操作。
為解決上述技術(shù)問(wèn)題,本發(fā)明采用的技術(shù)方案是:提供一種不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法及系統(tǒng)。該方法包括:
步驟一:賦值數(shù)據(jù)文件個(gè)數(shù)變量,賦循環(huán)變量初值為1;
步驟二:判斷循環(huán)變量值是否大于數(shù)據(jù)文件個(gè)數(shù)變量的值,如是,則結(jié)束處理,否則繼續(xù)步驟三;
步驟三:使用標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框打開(kāi)數(shù)據(jù)文件,包括:A)打開(kāi)標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框,選中所需處理的一個(gè)數(shù)據(jù)文件,具體為:使用Application對(duì)象的GetOpenFilename方法打開(kāi)一個(gè)標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框,并選中所需處理的一個(gè)數(shù)據(jù)文件;B)打開(kāi)所選擇的數(shù)據(jù)文件,具體為:使用Workbooks對(duì)象的Open方法打開(kāi)所選擇的數(shù)據(jù)文件;
步驟四:選中步驟三中所打開(kāi)的數(shù)據(jù)文件中所選工作表的相應(yīng)位置,包括:A)選擇打開(kāi)的數(shù)據(jù)文件中的一個(gè)工作表;B)對(duì)循環(huán)變量進(jìn)行運(yùn)算,獲得運(yùn)算結(jié)果,具體為:對(duì)循環(huán)變量進(jìn)行四則混合運(yùn)算,獲得運(yùn)算結(jié)果;C)依據(jù)運(yùn)算結(jié)果,選中該數(shù)據(jù)文件中所選工作表的相應(yīng)位置;
步驟五:數(shù)據(jù)操作,所述數(shù)據(jù)操作對(duì)步驟四中選中的數(shù)據(jù)文件中所選工作表的相應(yīng)位置的內(nèi)容進(jìn)行復(fù)制或剪切或粘貼或數(shù)據(jù)的分析或運(yùn)算操作;
步驟六:循環(huán)變量加1;
步驟七:重復(fù)步驟二。
優(yōu)選的,所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法,當(dāng)數(shù)據(jù)操作為運(yùn)算操作時(shí),依據(jù)單元格的內(nèi)容,而執(zhí)行相應(yīng)運(yùn)算的工作流程為:先判斷該單元格的值是否符合條件1,符合則進(jìn)行運(yùn)算1,否則判斷其值是否符合條件2,符合則進(jìn)行運(yùn)算2,否則判斷其值是否符合條件3,以此類(lèi)推,直至判斷某單元格的值是否符合條件N,符合則進(jìn)行運(yùn)算N,否則進(jìn)行運(yùn)算N+1。
優(yōu)選的,所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法,所述使用標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框打開(kāi)數(shù)據(jù)文件通過(guò):
Workbooks.Open Application.GetOpenFilename
或Workbooks.Open Filename:=Application.GetOpenFilename語(yǔ)句實(shí)現(xiàn)。
優(yōu)選的,所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法,所述選中數(shù)據(jù)文件中所選工作表的相應(yīng)位置通過(guò)以下語(yǔ)句實(shí)現(xiàn):
Sheets("XXX").Select,其表示選中數(shù)據(jù)文件中某一工作表,XXX指代任一工作表名;
Cells(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式1, 關(guān)于循環(huán)變量的運(yùn)算表達(dá)式2).Select,其表示選中數(shù)據(jù)文件的所選工作表中位于第“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式1”行,第“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式2”列的單元格;
或Sheets("XXX").Select,其表示選中數(shù)據(jù)文件中某一工作表,XXX指代任一工作表名;
Rows(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式3).Select,其表示選中數(shù)據(jù)文件的所選工作表中的第“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式3”行;
或Sheets("XXX").Select,其表示選中數(shù)據(jù)文件中某一工作表,XXX指代任一工作表名;
Columns(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式4).Select,其表示選中數(shù)據(jù)文件的所選工作表中的第“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式4”列;
或Sheets("XXX").Select,其表示選中數(shù)據(jù)文件中某一工作表,XXX指代任一工作表名;
Range("某單元格").Select
Selection.Offset(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式5, 關(guān)于循環(huán)變量的運(yùn)算表達(dá)式6).Select
Selection.Resize(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式7, 關(guān)于循環(huán)變量的運(yùn)算表達(dá)式8).Select,
其表示在數(shù)據(jù)文件的所選工作表中以相對(duì)于選定單元格縱向偏移“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式5”格,橫向偏移“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式6”格的單元格為基準(zhǔn),選中縱向長(zhǎng)度為“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式7”格,橫向長(zhǎng)度為“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式8”格的區(qū)域。
優(yōu)選的,所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法,當(dāng)所選擇的數(shù)據(jù)文件中所選工作表的相應(yīng)位置為單元格時(shí),依據(jù)該單元格的內(nèi)容,而執(zhí)行相應(yīng)運(yùn)算,其通過(guò)以下語(yǔ)句:
(1)條件語(yǔ)句:
If 〈條件表達(dá)式1〉 Then
〈語(yǔ)句序列1〉
ElseIf 〈條件表達(dá)式2〉 Then
〈語(yǔ)句序列2〉
ElseIf 〈條件表達(dá)式3〉 Then
〈語(yǔ)句序列3〉
……
〈語(yǔ)句序列n〉
End If
或(2)情況語(yǔ)句:
Select Case 〈變量或情況表達(dá)式〉
Case 〈情況表達(dá)式1〉
〈語(yǔ)句序列1〉
Case 〈情況表達(dá)式2〉
〈語(yǔ)句序列2〉
……
Case Else
Case 〈情況表達(dá)式n〉
〈語(yǔ)句序列n〉
End Select
實(shí)現(xiàn)。
優(yōu)選的,所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法的系統(tǒng),包括:循環(huán)模塊、數(shù)據(jù)文件打開(kāi)模塊、數(shù)據(jù)文件的相應(yīng)位置選中模塊和數(shù)據(jù)操作模塊;所述循環(huán)模塊賦值數(shù)據(jù)文件個(gè)數(shù)變量,賦循環(huán)變量初值為1,判斷循環(huán)變量值是否大于數(shù)據(jù)文件個(gè)數(shù)變量值,如是,則結(jié)束處理;否則,依次執(zhí)行數(shù)據(jù)文件打開(kāi)模塊、數(shù)據(jù)文件的相應(yīng)位置選中模塊和數(shù)據(jù)操作模塊的操作,然后循環(huán)變量自加1,再判斷循環(huán)變量值是否大于數(shù)據(jù)文件個(gè)數(shù)變量值,如是,則結(jié)束處理;否則,依次執(zhí)行數(shù)據(jù)文件打開(kāi)模塊、數(shù)據(jù)文件的相應(yīng)位置選中模塊和數(shù)據(jù)操作模塊的操作,然后循環(huán)變量自加1;如此反復(fù),直至循環(huán)變量值大于數(shù)據(jù)文件個(gè)數(shù)變量值后,結(jié)束處理;所述數(shù)據(jù)文件打開(kāi)模塊先通過(guò)打開(kāi)標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框,再選中所需處理的數(shù)據(jù)文件并打開(kāi);所述數(shù)據(jù)文件的相應(yīng)位置選中模塊選擇打開(kāi)的數(shù)據(jù)文件中的一個(gè)工作表后,每次對(duì)關(guān)于循環(huán)變量的運(yùn)算表達(dá)式進(jìn)行運(yùn)算,獲得運(yùn)算結(jié)果,依據(jù)運(yùn)算結(jié)果,選中該數(shù)據(jù)文件中所選工作表的相應(yīng)位置;所述數(shù)據(jù)操作模塊對(duì)所述數(shù)據(jù)文件的相應(yīng)位置選中模塊選擇的數(shù)據(jù)文件中所選工作表的相應(yīng)位置的內(nèi)容進(jìn)行復(fù)制或剪切或粘貼或數(shù)據(jù)的分析或運(yùn)算操作。
本發(fā)明的有益效果是:本發(fā)明可實(shí)現(xiàn)數(shù)據(jù)自動(dòng)化處理,有效地消除了人工數(shù)據(jù)處理中處理效率低,處理周期長(zhǎng),且出錯(cuò)率較高的問(wèn)題。該發(fā)明通過(guò)設(shè)置循環(huán)變量和引入循環(huán)結(jié)構(gòu),實(shí)現(xiàn)了對(duì)任意個(gè)數(shù)的數(shù)據(jù)文件的處理,克服了基于宏錄制的數(shù)據(jù)自動(dòng)化處理中,當(dāng)待處理數(shù)據(jù)文件個(gè)數(shù)相異時(shí),需要重新錄制一遍宏的缺陷;本發(fā)明通過(guò)使用Application對(duì)象的GetOpenFilename方法打開(kāi)一個(gè)標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框,并使用Workbooks對(duì)象的Open方法打開(kāi)所選數(shù)據(jù)文件,實(shí)現(xiàn)對(duì)任意名稱(chēng)數(shù)據(jù)文件的打開(kāi),克服了基于宏錄制的數(shù)據(jù)自動(dòng)化處理中,只能對(duì)給定名稱(chēng)數(shù)據(jù)文件的打開(kāi)進(jìn)行錄制,無(wú)法在其后的宏執(zhí)行時(shí),打開(kāi)任意名稱(chēng)數(shù)據(jù)文件的缺陷;通過(guò)對(duì)關(guān)于循環(huán)變量的運(yùn)算表達(dá)式進(jìn)行運(yùn)算,結(jié)合選擇語(yǔ)句,實(shí)現(xiàn)了在任意個(gè)數(shù)數(shù)據(jù)文件中,選中不同數(shù)據(jù)文件中所選工作表的不同位置,克服了基于宏錄制的數(shù)據(jù)自動(dòng)化處理中,無(wú)法根據(jù)相異數(shù)據(jù)文件個(gè)數(shù),在不同數(shù)據(jù)文件中所選工作表的不同位置進(jìn)行“選中”操作的缺陷;通過(guò)條件語(yǔ)句或情況語(yǔ)句實(shí)現(xiàn)依據(jù)數(shù)據(jù)文件中單元格的內(nèi)容不同,而執(zhí)行不同運(yùn)算,克服了基于宏錄制數(shù)據(jù)自動(dòng)化處理中無(wú)法根據(jù)數(shù)據(jù)文件中單元格的內(nèi)容不同而做不同運(yùn)算的缺陷。
附圖說(shuō)明
圖1是本發(fā)明所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法的流程圖;
圖2是本發(fā)明所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法中依據(jù)不同條件分類(lèi)運(yùn)算的流程圖;
圖3是本發(fā)明所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法的系統(tǒng)的結(jié)構(gòu)圖。
具體實(shí)施方式
下面結(jié)合附圖對(duì)本發(fā)明的較佳實(shí)施例進(jìn)行詳細(xì)闡述,以使本發(fā)明的優(yōu)點(diǎn)和特征能更易于被本領(lǐng)域技術(shù)人員理解,從而對(duì)本發(fā)明的保護(hù)范圍做出更為清楚明確的界定。
請(qǐng)參閱圖1至圖3,本發(fā)明實(shí)施例包括:
為克服現(xiàn)有技術(shù)中,人工數(shù)據(jù)處理方法中存在的處理效率低,處理周期長(zhǎng),且出錯(cuò)率較高的問(wèn)題;以及基于宏錄制的數(shù)據(jù)自動(dòng)化處理中的如下缺陷:(1)宏執(zhí)行時(shí),當(dāng)待處理數(shù)據(jù)文件個(gè)數(shù)相異時(shí),需要重新錄制一遍宏,(2)由于錄制宏的過(guò)程中,只能對(duì)給定名稱(chēng)數(shù)據(jù)文件的打開(kāi)進(jìn)行錄制,故在宏執(zhí)行時(shí),無(wú)法打開(kāi)任意名稱(chēng)數(shù)據(jù)文件,(3)無(wú)法根據(jù)任意數(shù)據(jù)文件個(gè)數(shù),對(duì)不同數(shù)據(jù)文件中所選工作表的不同位置進(jìn)行“選中”操作,(4)無(wú)法根據(jù)單元格內(nèi)容不同而做不同運(yùn)算。
本發(fā)明提出了一種Excel中不采用宏錄制基于VBA(Visual Basic for application)模塊的數(shù)據(jù)處理方法及系統(tǒng)。該發(fā)明是一種基于VBA模塊的數(shù)據(jù)文件自動(dòng)化處理,能實(shí)現(xiàn)當(dāng)待處理數(shù)據(jù)文件個(gè)數(shù)任意時(shí),對(duì)多個(gè)任意名稱(chēng)數(shù)據(jù)文件的打開(kāi),并選中不同數(shù)據(jù)文件中所選工作表的不同位置,進(jìn)行數(shù)據(jù)操作。
本發(fā)明所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法,如圖1示,包括:
步驟一:賦值數(shù)據(jù)文件個(gè)數(shù)變量,賦循環(huán)變量初值為1;
步驟二:判斷循環(huán)變量值是否大于數(shù)據(jù)文件個(gè)數(shù)變量的值,如是,則結(jié)束處理,否則繼續(xù)步驟三;
步驟三:使用標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框打開(kāi)數(shù)據(jù)文件,包括:A)打開(kāi)標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框,選中所需處理的一個(gè)數(shù)據(jù)文件,具體為:使用Application對(duì)象的GetOpenFilename方法打開(kāi)一個(gè)標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框,并選中所需處理的一個(gè)數(shù)據(jù)文件;B)打開(kāi)所選擇的數(shù)據(jù)文件,具體為:使用Workbooks對(duì)象的Open方法打開(kāi)所選擇的數(shù)據(jù)文件;所述使用標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框打開(kāi)數(shù)據(jù)文件通過(guò):
Workbooks.Open Application.GetOpenFilename
或Workbooks.Open Filename:=Application.GetOpenFilename語(yǔ)句實(shí)現(xiàn);
步驟四:選中步驟三中所打開(kāi)的數(shù)據(jù)文件中所選工作表的相應(yīng)位置,包括:A)選擇打開(kāi)的數(shù)據(jù)文件中的一個(gè)工作表;B)對(duì)循環(huán)變量進(jìn)行運(yùn)算,獲得運(yùn)算結(jié)果,具體為:對(duì)循環(huán)變量進(jìn)行四則混合運(yùn)算,獲得運(yùn)算結(jié)果;C)依據(jù)運(yùn)算結(jié)果,選中該數(shù)據(jù)文件中所選工作表的相應(yīng)位置;所述選中數(shù)據(jù)文件中所選工作表的相應(yīng)位置通過(guò)以下幾種方式實(shí)現(xiàn):
(1) Sheets("XXX").Select,其表示選中數(shù)據(jù)文件中某一工作表,XXX指代任一工作表名;
Cells(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式1, 關(guān)于循環(huán)變量的運(yùn)算表達(dá)式2).Select,表示選中數(shù)據(jù)文件的所選工作表中位于第“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式1”行,第“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式2”列的單元格;
當(dāng)循環(huán)變量為variety,關(guān)于循環(huán)變量的運(yùn)算表達(dá)式1為2,關(guān)于循環(huán)變量的運(yùn)算表達(dá)式2為(variety + 3)時(shí),也即語(yǔ)句形式為:
Cells(2, variety + 3).Select表示選中數(shù)據(jù)文件的所選工作表中位于第2行,第(variety + 3)列的單元格;
當(dāng)XXX為sheet2,variety取2時(shí),表示選中數(shù)據(jù)文件的sheet2工作表中第2行,第5列的單元格;
(2) Sheets("XXX").Select,其表示選中數(shù)據(jù)文件中某一工作表,XXX指代任一工作表名;
Rows(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式3).Select,表示選中數(shù)據(jù)文件的所選工作表中的第“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式3”行;
當(dāng)循環(huán)變量為variety,關(guān)于循環(huán)變量的運(yùn)算表達(dá)式3為(variety + 1)時(shí),也即語(yǔ)句形式為:
Rows(variety + 1).Select表示選中數(shù)據(jù)文件的所選工作表中的第(variety + 1)行;
當(dāng)XXX為sheet2,variety取2時(shí),表示選中數(shù)據(jù)文件的sheet2工作表中第3行;
(3) Sheets("XXX").Select,其表示選中數(shù)據(jù)文件中某一工作表,XXX指代任一工作表名;
Columns(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式4).Select,表示選中數(shù)據(jù)文件的所選工作表中的第“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式4”列;
當(dāng)循環(huán)變量為variety,關(guān)于循環(huán)變量的運(yùn)算表達(dá)式4為(variety + 2)時(shí),也即語(yǔ)句形式為:
Columns(variety + 2).Select表示選中數(shù)據(jù)文件的所選工作表中的第(variety + 2)列;
當(dāng)XXX為sheet2,variety取2時(shí),表示選中數(shù)據(jù)文件的sheet2工作表中第4列;
(4) Sheets("XXX").Select,其表示選中數(shù)據(jù)文件中某一工作表,XXX指代任一工作表名;
Range("單元格").Select
Selection.Offset(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式5, 關(guān)于循環(huán)變量的運(yùn)算表達(dá) 式6).Select
Selection.Resize(關(guān)于循環(huán)變量的運(yùn)算表達(dá)式7, 關(guān)于循環(huán)變量的運(yùn)算表達(dá)式8).Select
其表示在數(shù)據(jù)文件的所選工作表中以相對(duì)于選定單元格縱向偏移“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式5”格,橫向偏移“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式6”格的單元格為基準(zhǔn),選中縱向長(zhǎng)度為“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式7”格,橫向長(zhǎng)度為“關(guān)于循環(huán)變量的運(yùn)算表達(dá)式8”格的區(qū)域。
當(dāng)單元格為A3,循環(huán)變量為variety,關(guān)于循環(huán)變量的運(yùn)算表達(dá)式5為variety, 關(guān)于循環(huán)變量的運(yùn)算表達(dá)式6為5,關(guān)于循環(huán)變量的運(yùn)算表達(dá)式7為(variety×2),關(guān)于循環(huán)變量的運(yùn)算表達(dá)式8為10時(shí),也即語(yǔ)句形式為:
Range("A3").Select
Selection.Offset(variety, 5).Select
Selection.Resize(variety * 2, 10).Select
表示在數(shù)據(jù)文件的所選工作表中以相對(duì)于A3縱向偏移variety格,橫向偏移5格的單元格為基準(zhǔn),選中縱向長(zhǎng)度(variety×2)格,橫向長(zhǎng)度為10格的區(qū)域;
當(dāng)XXX為sheet2,variety取2時(shí),表示選中數(shù)據(jù)文件的sheet2工作表中F5:O8區(qū)域的單元格;
步驟五:數(shù)據(jù)操作,所述數(shù)據(jù)操作對(duì)步驟四中選中的數(shù)據(jù)文件中所選工作表的相應(yīng)位置的內(nèi)容進(jìn)行復(fù)制或剪切或粘貼或數(shù)據(jù)的分析或運(yùn)算操作;當(dāng)數(shù)據(jù)操作為運(yùn)算操作時(shí),依據(jù)單元格的內(nèi)容,而執(zhí)行相應(yīng)運(yùn)算的工作流程為:先判斷該單元格的值是否符合條件1,符合則進(jìn)行運(yùn)算1,否則判斷其值是否符合條件2,符合則進(jìn)行運(yùn)算2,否則判斷其值是否符合條件3,以此類(lèi)推,直至判斷某單元格的值是否符合條件N,符合則進(jìn)行運(yùn)算N,否則進(jìn)行運(yùn)算N+1,見(jiàn)附圖2;
其通過(guò)以下語(yǔ)句實(shí)現(xiàn):
(1)條件語(yǔ)句:
If 〈條件表達(dá)式1〉 Then
〈語(yǔ)句序列1〉
ElseIf 〈條件表達(dá)式2〉 Then
〈語(yǔ)句序列2〉
ElseIf 〈條件表達(dá)式3〉 Then
〈語(yǔ)句序列3〉
……
〈語(yǔ)句序列n〉
End If
或(2)情況語(yǔ)句:
Select Case 〈變量或情況表達(dá)式〉
Case 〈情況表達(dá)式1〉
〈語(yǔ)句序列1〉
Case 〈情況表達(dá)式2〉
〈語(yǔ)句序列2〉
……
Case Else
Case 〈情況表達(dá)式n〉
〈語(yǔ)句序列n〉
End Select
實(shí)現(xiàn);
更具體實(shí)例如下:
(1)用條件語(yǔ)句實(shí)現(xiàn)的例子:
If Selection >= 50 Then
Cells(5, 3) = "=a5*2"
ElseIf Selection >= 20 And Selection < 50 Then
Cells(5, 3) = "=a5+1"
ElseIf Selection < 20 Then
Cells(5, 3) = "=a5/2"
End If
實(shí)現(xiàn)了當(dāng)所選單元格內(nèi)的數(shù)據(jù)大于等于50時(shí),大于等于20且小于50時(shí),小于20時(shí)等三種條件下,C5單元格分別執(zhí)行A5乘以2,A5加1和A5除以2的運(yùn)算;
或(2)用情況語(yǔ)句實(shí)現(xiàn)的例子:
Select Case Selection
Case 5 To 10
Cells(2, 3) = "=a2*4"
Case 15
Cells(2, 3) = "=a2"
Case Else
Cells(2, 3) = "=a2-1"
End Select
實(shí)現(xiàn)了對(duì)所選單元格內(nèi)的數(shù)據(jù)分為大于等于5且小于等于10時(shí),為15時(shí),以及其余時(shí)等三種情況下,C2單元格分別執(zhí)行A2乘以4,賦值為A2,A2減1的運(yùn)算;
步驟六:循環(huán)變量加1;
步驟七:重復(fù)步驟二;
其中每個(gè)循環(huán)中選中數(shù)據(jù)文件中所選工作表的相應(yīng)位置不相同。
本發(fā)明所述的不采用宏錄制基于VBA模塊的數(shù)據(jù)處理方法的系統(tǒng),包括:循環(huán)模塊、數(shù)據(jù)文件打開(kāi)模塊、數(shù)據(jù)文件的相應(yīng)位置選中模塊和數(shù)據(jù)操作模塊;所述循環(huán)模塊賦值數(shù)據(jù)文件個(gè)數(shù)變量,賦循環(huán)變量初值為1,判斷循環(huán)變量值是否大于數(shù)據(jù)文件個(gè)數(shù)變量值,如是,則結(jié)束處理;否則,依次執(zhí)行數(shù)據(jù)文件打開(kāi)模塊、數(shù)據(jù)文件的相應(yīng)位置選中模塊和數(shù)據(jù)操作模塊的操作,然后循環(huán)變量自加1,再判斷循環(huán)變量值是否大于數(shù)據(jù)文件個(gè)數(shù)變量值,如是,則結(jié)束處理;否則,依次執(zhí)行數(shù)據(jù)文件打開(kāi)模塊、數(shù)據(jù)文件的相應(yīng)位置選中模塊和數(shù)據(jù)操作模塊的操作,然后循環(huán)變量自加1;如此反復(fù),直至循環(huán)變量值大于數(shù)據(jù)文件個(gè)數(shù)變量值后,結(jié)束處理;所述數(shù)據(jù)文件打開(kāi)模塊先通過(guò)打開(kāi)標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框,再選中所需處理的數(shù)據(jù)文件并打開(kāi);所述數(shù)據(jù)文件的相應(yīng)位置選中模塊選擇打開(kāi)的數(shù)據(jù)文件中的一個(gè)工作表后,每次對(duì)關(guān)于循環(huán)變量的運(yùn)算表達(dá)式進(jìn)行運(yùn)算,獲得運(yùn)算結(jié)果,依據(jù)運(yùn)算結(jié)果,選中該數(shù)據(jù)文件中所選工作表的相應(yīng)位置;所述數(shù)據(jù)操作模塊對(duì)所述數(shù)據(jù)文件的相應(yīng)位置選中模塊選擇的數(shù)據(jù)文件中所選工作表的相應(yīng)位置的內(nèi)容進(jìn)行復(fù)制或剪切或粘貼或數(shù)據(jù)的分析或運(yùn)算操作。
本發(fā)明的有益效果是:本發(fā)明可實(shí)現(xiàn)數(shù)據(jù)自動(dòng)化處理,有效地消除了人工數(shù)據(jù)處理中處理效率低,處理周期長(zhǎng),且出錯(cuò)率較高的問(wèn)題。該發(fā)明通過(guò)設(shè)置循環(huán)變量和引入循環(huán)結(jié)構(gòu),實(shí)現(xiàn)了對(duì)任意個(gè)數(shù)的數(shù)據(jù)文件的處理,克服了基于宏錄制的數(shù)據(jù)自動(dòng)化處理中,當(dāng)待處理數(shù)據(jù)文件個(gè)數(shù)相異時(shí),需要重新錄制一遍宏的缺陷;本發(fā)明通過(guò)使用Application對(duì)象的GetOpenFilename方法打開(kāi)一個(gè)標(biāo)準(zhǔn)“打開(kāi)文件”對(duì)話(huà)框,并使用Workbooks對(duì)象的Open方法打開(kāi)所選數(shù)據(jù)文件,實(shí)現(xiàn)對(duì)任意名稱(chēng)數(shù)據(jù)文件的打開(kāi),克服了基于宏錄制的數(shù)據(jù)自動(dòng)化處理中,只能對(duì)給定名稱(chēng)數(shù)據(jù)文件的打開(kāi)進(jìn)行錄制,無(wú)法在其后的宏執(zhí)行時(shí),打開(kāi)任意名稱(chēng)數(shù)據(jù)文件的缺陷;通過(guò)對(duì)關(guān)于循環(huán)變量的運(yùn)算表達(dá)式進(jìn)行運(yùn)算,結(jié)合選擇語(yǔ)句,實(shí)現(xiàn)了在任意個(gè)數(shù)數(shù)據(jù)文件中,選中不同數(shù)據(jù)文件中所選工作表的不同位置,克服了基于宏錄制的數(shù)據(jù)自動(dòng)化處理中,無(wú)法根據(jù)相異數(shù)據(jù)文件個(gè)數(shù),在不同數(shù)據(jù)文件中所選工作表的不同位置進(jìn)行“選中”操作的缺陷;通過(guò)條件語(yǔ)句或情況語(yǔ)句實(shí)現(xiàn)依據(jù)數(shù)據(jù)文件中單元格的內(nèi)容不同,而執(zhí)行不同運(yùn)算,克服了基于宏錄制數(shù)據(jù)自動(dòng)化處理中無(wú)法根據(jù)數(shù)據(jù)文件中單元格的內(nèi)容不同而做不同運(yùn)算的缺陷。
以上所述僅為本發(fā)明的實(shí)施例,并非因此限制本發(fā)明的專(zhuān)利范圍,凡是利用本發(fā)明說(shuō)明書(shū)及附圖內(nèi)容所作的等效結(jié)構(gòu)或等效流程變換,或直接或間接運(yùn)用在其他相關(guān)的技術(shù)領(lǐng)域,均同理包括在本發(fā)明的專(zhuān)利保護(hù)范圍內(nèi)。