瀏覽量:63次
利用VBA將數(shù)據(jù)區(qū)域不定的多個(gè)工作表數(shù)據(jù)快速合并到一個(gè)工作表。 分別有工作表1、2、3數(shù)據(jù)區(qū)域,如下圖所示:
02按ALT+F11打開VBE編輯器,在工程窗口下的Microsoft Excel對(duì)象右鍵-插入-模塊,新建一個(gè)模塊1。
03輸入如下代碼: OptionExplicit Subhbgzb() DimshAsWorksheet,flagAsBoolean,iAsInteger,hrowAsInteger,hrowcAsInteger flag=False Fori= IfSheets(i).Name="合并數(shù)據(jù)"Thenflag=True Next Ifflag=FalseThen Setsh= ="合并數(shù)據(jù)" Sheets("合并數(shù)據(jù)").Moveafter:=Sheets() EndIf Fori= IfSheets(i).Name<>"合并數(shù)據(jù)"Then hrow=Sheets("合并數(shù)據(jù)"). hrowc=Sheets("合并數(shù)據(jù)"). If hrowc = 1 Then Sheets(i).("合并數(shù)據(jù)").Cells(hrow,1).End(xlUp) Else Sheets(i).("合并數(shù)據(jù)").Cells(hrow+hrowc-1,1).Offset(1,0) EndIf EndIf Nexti EndSub
04按ALT+F8打開宏對(duì)話框窗口,鼠標(biāo)單擊執(zhí)行hbgzb宏。
05實(shí)現(xiàn)如圖所示效果:
06說明:本段VBA代碼由于將編輯過的區(qū)域作為源數(shù)據(jù)區(qū)域,顧無論該數(shù)據(jù)源有無數(shù)據(jù),只要曾經(jīng)編輯過皆做為源數(shù)據(jù)源,做拷貝處理。
方法二 01適用于工作表數(shù)量不多,數(shù)據(jù)量不大的情況。 如下圖所示,我們可以發(fā)現(xiàn),各個(gè)地區(qū)的工作表模板都是一致的。
02可以通過在匯總表中使用【=工作表!單元格】獲取數(shù)據(jù),并通過向右、向下填充數(shù)據(jù)行。
03當(dāng)一個(gè)工作表數(shù)據(jù)填充完成后,往下的數(shù)據(jù)行值為0,此時(shí),切換第二個(gè)工作表繼續(xù)進(jìn)行填充,直至填充完畢。
04結(jié)果如下圖所示:
方法三 01適用于工作表數(shù)量多,數(shù)據(jù)量大的情況。 新建名稱DQ,引用位置輸入公式【=RIGHT((1),LEN((1))-FIND("]",(1)))】,用于提取多個(gè)工作表名稱。
02在匯總表中增加輔助列,輸入公式【=INDEX(DQ,INT((ROW(A2)-1)/10)+1)】,往下填充,每個(gè)工作表名稱被引用10行。 注意:被引用行按需調(diào)整,如每個(gè)工作表名稱需生成50行,調(diào)整公式中的10,改為50即可。
03填充第一行數(shù)據(jù),輸入公式【=INDIRECT($A2&"!"&ADDRESS(COUNTIF($A$2:$A2,$A2)+1,COLUMN(A2)))】往右填充,完成第一行的填充。 說明:通過ADDRESS函數(shù),定位到第二行第一列,即A2單元格;整個(gè)公式的意思是引用工作表【廣州】中的A2單元格,值為“廣州”。
04往下填充,當(dāng)一個(gè)工作表數(shù)據(jù)填充完成后,往下的數(shù)據(jù)行值為0,批量刪除值為0的行即可。
[聲明]本網(wǎng)轉(zhuǎn)載網(wǎng)絡(luò)媒體稿件是為了傳播更多的信息,此類稿件不代表本網(wǎng)觀點(diǎn),本網(wǎng)不承擔(dān)此類稿件侵權(quán)行為的連帶責(zé)任。故此,如果您發(fā)現(xiàn)本網(wǎng)站的內(nèi)容侵犯了您的版權(quán),請(qǐng)您的相關(guān)內(nèi)容發(fā)至此郵箱【779898168@qq.com】,我們?cè)诖_認(rèn)后,會(huì)立即刪除,保證您的版權(quán)。
官網(wǎng)優(yōu)化
整站優(yōu)化
渠道代理
400-655-5776