如何把多張工作表內(nèi)容快速復(fù)制到一張表_第1頁
如何把多張工作表內(nèi)容快速復(fù)制到一張表_第2頁
如何把多張工作表內(nèi)容快速復(fù)制到一張表_第3頁
如何把多張工作表內(nèi)容快速復(fù)制到一張表_第4頁
如何把多張工作表內(nèi)容快速復(fù)制到一張表_第5頁
已閱讀5頁,還剩18頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)

文檔簡介

1、如何把多張工作表內(nèi)容快速復(fù)制到一張表我有一份教師工資表,一個工作簿里有好多張工作表的,現(xiàn)在我想把各工作表里的內(nèi)容全部合到一張表中,除了用復(fù)制粘貼的方法外,請問還能有什么好的方法快速合到一起嗎?(首選)sub yy() 聲明過程名稱為“yy”。當(dāng)要聲明一個過程時,通常是以關(guān)鍵字“sub”開頭,并且以關(guān)鍵字“end”結(jié)束,在sub關(guān)鍵字之前是用來指定此過程的作用域,例如public,static, 或protected 等。在sub關(guān)鍵字之后為過程最重要的三大部分:過程名稱、參數(shù)以及在sub和end sub之間的主體程序代碼內(nèi)容。過程是可以執(zhí)行的語句序列單元,所有可執(zhí)行的代碼必須包含在某個過程中,

2、任何過程都不能嵌套在其它過程中,過程的名稱必須在模塊級別進(jìn)行定義。sheets.add after:=sheets(sheets.count)'新建一個工作表放在最后。參數(shù)值和參數(shù)名之間應(yīng)該使用“:=”符號,而不是等號。在代碼中,屬性和方法都是通過連接符“.”來和對象連接的。add是方法名,after是自變量,方法名與自變量之間用半角空格隔開。for i = 1 to sheets.count - 1'從第一個工作表到倒數(shù)第二個工作表with sheets(i)with語句可以在一個單一對象或一個用戶定義類型上執(zhí)行一系列的語句。使用with語句不僅可以簡化程序代碼,而且可以提高

3、代碼的運行效率。 with/end with語句結(jié)構(gòu)中以“.”開頭的語句相當(dāng)于引用了with語句中指定的對象。當(dāng)程序一旦進(jìn)入with/end with結(jié)構(gòu),with語句指定的對象就不能改變。因此不能用with語句來設(shè)置多個不同的對象。n = .c65536.end(xlup).row'求出c列最大行號。求出某列最大行號的目的是確定有數(shù)據(jù)區(qū)域的最下邊界,為此,選擇求最大行號列時,選擇的列數(shù)據(jù)最下邊界要最大限度包含所有的數(shù)據(jù)。end和row都是屬性,此語句取得屬性值后賦值給變量n。此程序事先沒有對變量進(jìn)行聲明。在程序中取得對象的屬性的代碼結(jié)構(gòu):變量=對象·屬性。.range(&q

4、uot;a2:v"&n).copy activesheet.c65536.end(xlup).offset(1, -2)'取a2開始到最后的數(shù)據(jù)copy到新表數(shù)據(jù)的下一行。n =.c65536.end(xlup) .row得到c列最后一個非空單元格所在的行號,“.offset(1, -2)”偏移“c65536.end(xlup)”得到單元格的位置開始復(fù)制后數(shù)據(jù)的粘貼位置。由c列移到a列。c65536.end(xlup):求出c列最下邊有數(shù)據(jù)的單元格,粘貼復(fù)制的數(shù)據(jù)時為了前面的數(shù)據(jù)不被后面粘貼上的數(shù)據(jù)覆蓋,開始粘貼數(shù)據(jù)的位置在最下邊有數(shù)據(jù)的單元格位置的基礎(chǔ)上要用offs

5、et偏移。end withnextend sub 注:在visual basic中要加入注釋,直接在注釋文字前加上符號即可,在符號之后的文字會被編譯器忽略,也可以使用rem來進(jìn)行注釋,但使用符號會更快捷一些,還可以節(jié)省內(nèi)存及加快編譯的效率。以上代碼粘貼位置、復(fù)制范圍可以根據(jù)實際需要可變。2010年5月用于林業(yè)旱災(zāi)調(diào)查一個工作簿上的所有工作表匯總 到一張工作表的代碼:sub yy() '聲明過程名稱為"yy"。當(dāng)要聲明一個過程時,通常是以關(guān)鍵字"sub"開頭,并且以關(guān)鍵字"end"結(jié)束,在sub關(guān)鍵字之前是用來指定此過程的作用域

6、,例如public,static, 或protected 等。在sub關(guān)鍵字之后為過程最重要的三大部分:過程名稱、參數(shù)以及在sub和end sub之間的主體程序代碼內(nèi)容。過程是可以執(zhí)行的語句序列單元,所有可執(zhí)行的代碼必須包含在某個過程中,任何過程都不能嵌套在其它過程中,過程的名稱必須在模塊級別進(jìn)行定義。sheets.add after:=sheets(sheets.count) '新建一個工作表放在最后。參數(shù)值和參數(shù)名之間應(yīng)該使用":="符號,而不是等號。在代碼中,屬性和方法都是通過連接符"."來和對象連接的。add是方法名,after是自變量,

7、方法名與自變量之間用半角空格隔開。for i = 1 to sheets.count - 1 '從第一個工作表到倒數(shù)第二個工作表with sheets(i) 'with語句可以在一個單一對象或一個用戶定義類型上執(zhí)行一系列的語句。使用with語句不僅可以簡化程序代碼,而且可以提高代碼的運行效率。 with/end with語句結(jié)構(gòu)中以"."開頭的語句相當(dāng)于引用了with語句中指定的對象。當(dāng)程序一旦進(jìn)入with/end with結(jié)構(gòu),with語句指定的對象就不能改變。因此不能用with語句來設(shè)置多個不同的對象。n = .a65536.end(xlup).row

8、'分別求出最大行號。 end和row都是屬性,此語句取得屬性值后賦值給變量n。此程序事先沒有對變量進(jìn)行聲明。在程序中取得對象的屬性的代碼結(jié)構(gòu):變量=對象·屬性。.range("a3:v" & n).copy activesheet.a65536.end(xlup).offset(1, 0) '取a2開始到最后的數(shù)據(jù)copy到新表數(shù)據(jù)的下一行。n =.c65536.end(xlup) .row得到c列最后一個非空單元格所在的行號,".offset(1, -2)"偏移"c65536.end(xlup)"得

9、到單元格的位置開始復(fù)制后數(shù)據(jù)的粘貼位置。由c列移到a列。end withnextend sub注:在visual basic中要加入注釋,直接在注釋文字前加上符號即可,在符號之后的文字會被編譯器忽略,也可以使用rem來進(jìn)行注釋,但使用符號會更快捷一些,還可以節(jié)省內(nèi)存及加快編譯的效率。如果當(dāng)前活動工作表的a列填寫的是學(xué)生的姓名,現(xiàn)在我們想在表中a列最后一個學(xué)生的后面增加一個叫“張青”的學(xué)生,則代碼為:代碼:activesheet.cells(a65536.end(xlup).row + 1, 1).value = "張青"“a65536.end(xlup).row”語句來返回

10、a列的最后一個非空單元格的行號sheet1.range("c1").end(xldown).row返回第一次遇到空單元格前的單元格的數(shù)量。(注:當(dāng)c列有空白單元格時用:myendrow=sheets("sheet1").range("c65536").end(xlup).row)a65536.end(xlup) 取得a列最后一個數(shù)據(jù)的位置本示例選定包含單元格 b4 的區(qū)域中 b 列頂端的單元格。range("b4").end(xlup).selectrange("b65536").end(xlu

11、p).row 問題高手賜教其含義與區(qū)別range("a65536").end(xlup).rowrange("b65536").end(xlup).rowrange("d65536").end(xlup).rowrange("k65536").end(xlup).row看一下vba中end的幫助就知道了。end 屬性參閱應(yīng)用于示例特性返回一個 range 對象,該對象代表包含源區(qū)域的區(qū)域尾端的單元格。等同于按鍵 end+ 向上鍵、end+ 向下鍵、end+ 向左鍵或 end+ 向右鍵。range 對象,只讀。exp

12、ression.end(direction)expression 必需。 該表達(dá)式返回“應(yīng)用于”列表中的對象之一。direction xldirection 類型,必需。所要移動的方向。xldirection 可為 xldirection 常量之一。 xldown xltoright xltoleft xlup 示例本示例選定包含單元格 b4 的區(qū)域中 b 列頂端的單元格。range("b4").end(xlup).select 本示例選定包含單元格 b4 的區(qū)域中第 4 行尾端的單元格。range("b4").end(xltoright).select

13、 本示例將選定區(qū)域從單元格 b4 延伸至第四行最后一個包含數(shù)據(jù)的單元格。worksheets("sheet1").activaterange("b4", range("b4").end(xltoright).selectrange("a65536").end(xlup).row a列數(shù)據(jù)區(qū)域最后一行的行號range("b65536").end(xlup).row b列數(shù)據(jù)區(qū)域最后一行的行號range("d65536").end(xlup).row d列數(shù)據(jù)區(qū)域最后一行的行號r

14、ange("k65536").end(xlup).row k列數(shù)據(jù)區(qū)域最后一行的行號range("a65536").end(xlup).rowa列第65536行之上的最后有數(shù)據(jù)的單元格所在行數(shù)回復(fù)range("b65536").end(xlup).row = b列最后一個非空單元格的行數(shù)range("a65536").end(xlup).row=a列最后一個非空單元格的行數(shù)range("b65536").end(xlup).row = b列最后一個非空單元格的行數(shù)range("d655

15、36").end(xlup).row = d列最后一個非空單元格的行數(shù)range("k65536").end(xlup).row= k列最后一個非空單元格的行數(shù)請教.end(xlup).row的含義?經(jīng)常在vba中常見如下代碼:dim rng as integerrng = sheets1.range代碼詳解定義rng作為一個整型變量'第二行的"sheets1"這種寫法是錯誤的.正確的表述方法應(yīng)為"sheet1"或"sheets(1)"sheet1,對工作表對象的稱呼;range("a6

16、5536")指一個range對象,具體指第一列最后一行;end,range對象的end屬性,也返回一個對象,我理解為基于上述對象的延伸至最后一個range對象.具體延伸的方向要看它給出的參數(shù).比如xltoleft、xltoright、xlup 或 xldown。row返回區(qū)域中第一塊的第一行的行號。long 類型,只讀多謝兩位高手指點,看完以后我是這樣理解的,不知對否?      range("a65536").end(xlup).row 是指第一列最后一個有數(shù)據(jù)單元格的行數(shù),它的下一行即加 1 就是3樓所說的要添加數(shù)據(jù)的空

17、白單元格匯總工作表數(shù)據(jù)2010-06-03 00:44方法一:sub getdata()dim erow as integer, c as variant, serow as integererow = sheets("total").a65536.end(xlup).row + 1if erow > 4 then sheets("total").rows("4:" & erow).clearcontentsfor each c in thisworkbook.sheets if c.name <> &quo

18、t;total" then serow = c.a65536.end(xlup).row erow = sheets("total").a65536.end(xlup).row + 1 c.range("a4:l" & serow).copy destination:=sheets("total").range("a" & erow) end ifnext cend sub方法二sub sqlconbime()range("a4:l65536").clearconten

19、tsdim irow as integer, sqltemp as string, sql as string set cnn = createobject("adodb.connection") cnn.open "provider=microsoft.jet.oledb.4.0;extended properties=excel 8.0;data source=" & thisworkbook.fullname for each sh in sheets if sh.name <> "理數(shù)" then irow

20、 = sh.range("a3").end(xldown).row sqltemp = "select * from " & sh.name & "$a3:l" & irow & " order by 班別,座號 " sql = sqltemp & "union " & sql end if next sql = left(sql, len(sql) - 6) sheets("理數(shù)").range("a4")

21、.copyfromrecordset cnn.execute(sql) cnn.close: set cnn = nothingend sub方法三sub conbimeall() dim yy as long yy = a65536.end(xlup).row + 1 range("a2:l" & yy).clearcontents set conn = createobject("adodb.connection") for i = 1 to 4 conn.open "provider=microsoft.jet.oledb.4.0

22、;extended properties=excel 8.0;data source=" & thisworkbook.fullname sq2 = "select * from " & range("p" & i) & "$a3:l1000 " a65536.end(xlup).offset(1, 0).copyfromrecordset conn.execute(sq2) conn.close next i set conn = nothingend sub把工作簿中的200多張表復(fù)制到一

23、張工作表里?(首選)我是做收款工作的,每天收款情況做一張表格,現(xiàn)在快一年了,今天老板突然要我把這9個月積累的每日數(shù)據(jù)全部反映到一張工作表上,其實點復(fù)制粘貼200多張表不是大問題,主要是怕中途看花了眼,漏了或者重復(fù)了就很麻煩,請教高手幫忙,用公式或者vba,小弟感激不盡。右鍵點擊新工作表標(biāo)簽,選擇“查看代碼”,將下面的代碼粘貼到打開的vbe窗口中:sub shcopy()dim nrow&, r1%, rs%, ls%&:長整數(shù)型;%:整數(shù)型。r1 = 2 '每頁從第2行開始復(fù)制(可修改)application.enableevents = false 如果對指定對象啟用

24、事件,則該值為 true。boolean 類型,可讀寫application.screenupdating = falsefor i = 2 to sheets.countsheets.count最后一張工作表。with sheets(i)rs = .usedrange.rows.count + 1 - r1 對于 worksheet 對象,rows 屬性返回代表指定工作表所有行的 range 對象。range 對象,只讀。工作表上已使用區(qū)域的行數(shù)。ls = .usedrange.columns.count count 屬性。描述:返回集合或 dictionary 對象中的條目數(shù)。只讀。語法:

25、object.count object 總是“應(yīng)用于”列表中某一項的名稱。工作表上已使用區(qū)域的列數(shù)。arr = .range("a" & r1).resize(rs, ls)arr為變量,在vba中,變量無需聲明就可以直接使用,此時該變量為變體變量。resize 屬性。在excel中,resize 屬性的功能為調(diào)整指定區(qū)域的大小。返回 range 對象,該對象代表調(diào)整后的區(qū)域。 expression.resize(rowsize, columnsize) expression 必需。該表達(dá)式返回要調(diào)整大小的 range 對象。 rowsize variant 類型,

26、可選。新區(qū)域中的行數(shù)。如果省略該參數(shù),則該區(qū)域中的行數(shù)保持不變。 columnsize variant類型,可選。新區(qū)域中的列數(shù)。如果省略該參數(shù)。則該區(qū)域中的列數(shù)保持不變。range("a65536").end(xlup).offset(1).resize(rs, ls) = arrend withnextapplication.enableevents = trueapplication.screenupdating = trueend sub修改“開始行號”。將光標(biāo)定位到代碼中間任意位置,按f5運行它。關(guān)閉vbe窗口。注意單詞之間要用空格隔開。excel多個工作簿中的工

27、作表合并到一個工作簿中 有時,需要將多個excel工作簿中的工作表合并到一個工作簿中。有多種合并工作簿的情形,下面先給出一種合并多個工作簿的vba范例,供參考。(此方法將一個工作簿中所有的工作表復(fù)制到一張工作表上)方法1sub combineworkbooks()dim wk as workbookdim sh as worksheetdim strfilename as stringdim strfiledir as stringdim nm as stringnm = thisworkbook.namestrfiledir = thisworkbook.path & "&

28、quot;application.screenupdating = falsestrfilename = dir(strfiledir & "*.xls")do while strfilename <> vbnullstringif strfilename <> nm thenmsgbox strfilenameset wk = workbooks.open(filename:=strfiledir & strfilename, readonly:=true)strfilename = left(left(strfilename, l

29、en(strfilename) - 4), 29) '取主文件名,除掉.xlsfor each sh in wk.sheetssh.copy after:=thisworkbook.sheets(thisworkbook.sheets.count)'工作表命名,以工作表所在文件名為類if wk.sheets.count > 1 thenthisworkbook.sheets(thisworkbook.sheets.count).name = strfilename & sh.nameelsethisworkbook.sheets(thisworkbook.shee

30、ts.count).name = strfilenameend ifnextwk.close savechanges:=falseend ifstrfilename = dirloopapplication.screenupdating = trueend sub方法2sub unworksheets()application.screenupdating = falsedim lj as stringdim dirname as stringdim nm as stringdim sname as stringdim i as integer, ii as integerlj = activ

31、eworkbook.pathnm = activeworkbook.namedirname = dir(lj & "*.xls") '查找文件do while dirname <> ""if dirname <> nm thenworkbooks.open filename:=lj & "" & dirname '打開文件ii = activeworkbook.sheets.count '統(tǒng)計工作表個數(shù)'復(fù)制新打開工作簿的每一個工作表到當(dāng)前工作表(afte

32、r:=thisworkbook.sheets(thisworkbook.sheets.count)最后一個后面for i = 1 to iiworkbooks(dirname).sheets(i).copy after:=thisworkbook.sheets(thisworkbook.sheets.count)nextworkbooks(dirname).close falseend ifdirname = dirloopend sub在同一文件夾下有多個工作簿,其中有一個用于匯總的工作簿,將除該匯總工作簿外的其它工作簿中的每一張工作表的數(shù)據(jù)匯總到該匯總工作簿的一張工作表中。好用!sub u

33、nionworksheets()application.screenupdating = false關(guān)閉屏幕更新dim lj as string dim dirname as stringdim nm as stringdim i as integer, ii as integerlj = activeworkbook.path path 屬性。返回指定文件、文件夾、或驅(qū)動器的路徑。nm = activeworkbook.name name屬性。指定一個控件或?qū)ο蟮拿Q或與 font 對象相關(guān)的字體的名稱。變量賦值使用=“等號”,“=”后的值可以是單純的數(shù)值、字符串或表達(dá)式。dirname =

34、 dir(lj & "*.xls") dir 函數(shù)。返回一個string,用以表示一個文件名、目錄名或文件夾名稱,它必須與指定的模式或文件屬性、或磁盤卷標(biāo)相匹配。cells.clear clear 方法。清除 err 對象的所有屬性設(shè)置。do while dirname <> ""前置式doloop循環(huán)。if dirname <> nm thenworkbooks.open filename:=lj & "" & dirname open 方法?!?lt;>”為比較運算符“不等于”

35、。ii = activeworkbook.sheets.count sheets 屬性workbooks(nm).activate activate方法。workbooks(nm)屬使用工作簿名稱引用workbook,語法格式為:workbook( 工作簿名稱)。'復(fù)制新打開工作簿的每一個工作表的已用區(qū)域到當(dāng)前工作表for i = 1 to iiworkbooks(dirname).sheets(i).usedrange.copy _range("a65536").end(xlup).offset(2, 0) usedrange 屬性。返回代表指定工作表上已使用區(qū)域

36、的 range 對象。只讀nextworkbooks(dirname).close false close 方法。關(guān)閉一個打開的 textstream 文件。語法:object.close object始終是一個 textstream 對象的名字end ifdirname = dirloopend sub如何利用vba將多工作表的數(shù)據(jù)匯總而不復(fù)制標(biāo)題?a:將sheet2工作表中待復(fù)制的數(shù)據(jù)定義為“表1”,將sheet3工作表中待復(fù)制的數(shù)據(jù)定義為“表2”alt+f11新建模塊,并輸入如下代碼 sub 利用表僅復(fù)制數(shù)據(jù)()dim sh as worksheet, ifor each sh in w

37、orksheetsif sh.name <> "sheet1" then i = i + 1 range("表" & i).copy sheets("sheet1").range("a65536").end(xlup).offset(1, 0)end ifnext shend sub如何將多個工作簿中的工作表一次性合s 問題:如何將多個工作簿中的工作表一次性合s答案: 關(guān)于如何將多個工作簿(xls文件)中的工作表(worksheet)復(fù)制到同一個工作簿中的解決。下面的代碼可以將某個磁盤目錄下的多

38、個xls文件的復(fù)制到含有這段代碼的xls文件中,而且xls文件可以根據(jù)處理worksheet的數(shù)量自動的增加xls文件中worksheet的數(shù)量。使用時將代碼復(fù)制到xls文件的宏內(nèi),然后運行宏main即可。代碼中運用了filesystemobject對象和excel的range對象的copy方法以及worksheet和workbook對象的add方法。這里就不在贅述,可以在excel vba的幫助中找到。sub mergesheet(byval spath as string)dim fs, fd, fl as objectdim xlbook as workbookdim xlsheet a

39、s worksheetdim i_cnt as integeri_cnt = 1set fs = createobject("scripting.filesystemobject") '建立filesystemobjectif not fs.folderexists(spath) thenmsgbox "目錄不存在!", vbcriticalexit subend ifset fd = fs.getfolder(spath) '或取文件夾for each fl in fd.files '依此處理文件夾中的文件if right(tr

40、im(fl.name), 3) = "xls" then '只處理xls文件set xlbook = application.workbooks.open(spath "" fl.name) '打開xls文件if i_cnt <> 3 then '默認(rèn)的worksheet數(shù)量是3,如果超過就自動的增加set xlsheet = application.workbooks(1).worksheets.addelseset xlsheet = application.workbooks(1).worksheets(i_cn

41、t)end ifxlbook.worksheets(1).rows.copy xlsheet.cells(1, 1) '復(fù)制worksheeti_cnt = i_cnt 1xlbook.close '關(guān)閉已經(jīng)打開的xls文件end ifnextset fl = nothing '關(guān)閉file,folder,filesystemobject對象set fd = nothingset fs = nothingend subsub main()dim spath as stringspath = inputbox("請輸入目錄!如c:", "合并

42、目錄下xls文件的sheet1") '顯示輸入框獲取磁盤目錄if spath = " " then exit submergesheet (spath)end sub 主題:求助多個工作簿中的工作表數(shù)據(jù)匯總到另一個工作簿中 回復(fù)subbb()workbooks.openfilename:="d:數(shù)據(jù)匯總"&sheets("目錄").range("e1")dimxshasworksheetdimiaslong,jaslongsheets("按鋼筋種類匯總").select

43、setxsh=sheets("按鋼筋種類匯總")j=worksheetfunction.match("d",xsh.range("d:d")xsh.range("a2:q"&j).copywindows("指定目錄下文件名.xls").activatesheets("匯總目錄").selectrange("a65536").end(xlup).offset(1,0).pastespecialpaste:=xlpastevaluesapplicati

44、on.cutcopymode=false b=sheets("目錄").range("e1").valuewindows(b).activateactivewindow.closeendsub如何將多張excel工作表批量復(fù)制到一個表中 一個表中有若干個sheet,表頭都是一樣的,我需要把這若干個sheet合并到一個sheet里面,單純的復(fù)制粘貼太麻煩了,表格太多。請問誰能告訴我個簡單的方法,最好能有個宏能處理,方便的話發(fā)個宏到我郵箱里面。比較簡單,我正好以前回答過。你參考一下。復(fù)制下面代碼到一個宏里運行就可以了。 可以根據(jù)注釋修改相應(yīng)數(shù)字 dim ro

45、windex as integer dim refcol as integer dim subrowindex as integer dim subcolindex as integer rowindex = 1 '主表從第二行開始 refcol = 1 '主表從第二列開始 for sheetindex = 1 to 100 '100個sheet 循環(huán) subrowindex = 1 do '假設(shè)匯總至"sheetmain" for subcolindex = 1 to 10 '子表從第一列開始,共10列 worksheets(&qu

46、ot;sheetmain").cells(rowindex, subcolindex + refcol) = worksheets("sheet" & sheetindex).cells(subrowindex, subcolindex).value '實際操作賦值語句 next subcolindex subrowindex = subrowindex + 1 rowindex = rowindex + 1 loop while worksheets("sheet" & sheetindex).cells(subrow

47、index, 1) <> "" '子表第一列為空時跳出 next sheetindex 一個工作薄中有70個工作表,且所有工作表是完全相同的,問題是如何把后面所有工作表中相同位置處的數(shù)字引用到表1中同一列中?即在表1一個單元格中出現(xiàn)這個數(shù)據(jù),然后下拉就能出現(xiàn)所有工作表中的那個特定數(shù)據(jù)? 問題補(bǔ)充:我的是工資表,因為好多東西比較復(fù)雜,所以每個人都單獨列了一個工作表,但格式都是一樣的,現(xiàn)在我想提取出每個工作表中相同單元格的數(shù)量,用公式只能提出一張表的數(shù)據(jù),下拉就會變,怎么辦?最佳答案假設(shè)你要引用的是另外70個不同表中d4這個單元格。1.新建表“匯總”,在第一

48、列a1輸入"工號"a2至a71錄入70個表的名字。2.第二列b2單元格輸入公式:“=indirect(concatenate(a2,"!d4")”,公式的意思是引用“匯總”表a2單元格相同的表中d4單元格的內(nèi)容。(假設(shè)a2=王小明,則引用表“王小明”里的d4單元格的值)3.拖拽b2的右下角自動生成一列對70個表對應(yīng)單元格格的引用了,其他的引申就自己開發(fā)了,公式可以結(jié)合其他運算的。以上方法我自己摸索出來的,不保證最高效,但還算好用。 excel sheet中數(shù)據(jù)的快速復(fù)制 '利用copymemory 復(fù)制數(shù)組,實現(xiàn)excel sheet中數(shù)據(jù)的任意

49、復(fù)制,粘貼區(qū)域小于復(fù)制區(qū)域,數(shù)據(jù)將被截取,否則將用空格填充private declare sub copymemory lib "kernel32" alias "rtlmovememory" (pdst as any, psrc as any, byval bytelen as long)sub copyrange(byval src as range, byval dest as range) ' copy all data from src to destdim arrsrc(), arrdest()arrsrc = srcarrdest

50、= destredim arrdest(1 to dest.rows.count, 1 to dest.columns.count)copymemory byval varptr(arrdest(1, 1), byval varptr(arrsrc(1, 1), 16 * src.rows.count * src.columns.countdest = arrdesterase arrsrcerase arrdestend subsub xxx() '將a1:c100 區(qū)域數(shù)據(jù)復(fù)制到d3:h40copyrange range("a1:c100"), range(&q

51、uot;d3:h40")end sub100多張工作表的有關(guān)內(nèi)容如何批量復(fù)制在一張表上sub tt()application.screenupdating = falsedim xrows("2:" & a65536.end(xlup).row + 1).clear for x = 1 to sheets.count with sheets("都要復(fù)制到這張表上") if sheets(x).name <> "都要復(fù)制到這張表上" then sheets(x).range("a8",

52、"h25").copy .range("a" & .a65536.end(xlup).row + 1) "都要復(fù)制到這張表上"是工作表名, "a8", "h25"是復(fù)制區(qū)域。 end with next xend sub如何利用vba將多工作表的數(shù)據(jù)匯總而不復(fù)制標(biāo)題?a:將sheet2工作表中待復(fù)制的數(shù)據(jù)定義為“表1”,將sheet3工作表中待復(fù)制的數(shù)據(jù)定義為“表2”alt+f11新建模塊,并輸入如下代碼sub 利用表僅復(fù)制數(shù)據(jù)()dim sh as worksheet, ifor ea

53、ch sh in worksheetsif sh.name <> "sheet1" theni = i + 1range("表" & i).copy sheets("sheet1").range("a65536").end(xlup).offset(1, 0)end ifnext shend sub快速移動、復(fù)制excel工作表技巧在excel 2000中,有時需要將一個或一組工作表從一個工作簿(源工作簿)中移動或者復(fù)制到另一個工作簿(目標(biāo)工作簿)中,這時我們可以采用如下的方法實現(xiàn)快速移動或者復(fù)制工作表的操作。一、快捷菜單法1.打開源工作簿(工作1.xls)和目標(biāo)工作簿(工作2.xls),在源工作簿中選定一個或一組工作表(單擊第一個工作表標(biāo)簽、按下shift鍵,然后單擊最后一個工作表標(biāo)簽,或在單擊不相鄰的工作表標(biāo)簽時按下ctrl鍵)。2.在源工作簿

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論