今天我們帶大家一起來(lái)實(shí)現(xiàn)一下VBA多表匯總,逐句講解+分析思路,如果你是0基礎(chǔ),聽(tīng)完起碼知道如何修改代碼,也就非常奈斯了! 我們說(shuō)的是多表指的是多工作表(WorkSheet或者Sheet) 需求:匯總1-3月數(shù)據(jù)到匯總表 需求分析: 我們程序做的其實(shí)就是模仿人工做的,把人工處理的邏輯轉(zhuǎn)成程序可以認(rèn)識(shí)的語(yǔ)句,所以我們首先要分析一下人工是如何處理的! 人工處理非常簡(jiǎn)單,分兩步: 步驟01 :復(fù)制數(shù)據(jù) 復(fù)制數(shù)據(jù),我們?nèi)斯?fù)制非常簡(jiǎn)單,因?yàn)槟阒朗裁吹胤绞怯行?shù)據(jù)區(qū)域,開(kāi)始和結(jié)束位置,你是怎么判斷的呢?你說(shuō)有內(nèi)容的最后一行就是結(jié)束位置呀,那么這個(gè)就要轉(zhuǎn)成Excel能認(rèn)識(shí)的VBA語(yǔ)句! 步驟02 :粘貼數(shù)據(jù) 粘貼數(shù)據(jù),我們?nèi)斯ふ迟N也是無(wú)感的,反正就是貼,但是你貼的時(shí)候也不是隨意貼的,你接著上次粘貼內(nèi)容的最后一行空白行粘貼的,這個(gè)最后一行有內(nèi)容的行號(hào)的下一個(gè)空白,我們要轉(zhuǎn)成語(yǔ)句,問(wèn)題也就解決了! 本文由“壹伴編輯器”提供技術(shù)支持 根據(jù)我們分析人工操作下來(lái),我們核心就是要知道如何表示數(shù)據(jù)的最后一行! 這個(gè)VBA有自己的規(guī)則: Cells(Rows.Count,1).End(xlup).Row 以上表示,從A列(其他列把1修改成對(duì)應(yīng)的列即可)的最后一個(gè)單元格往上找,找到首個(gè)有內(nèi)容的單元格,并獲取行號(hào)(ROW),這個(gè)跟我們自己手動(dòng)啊 知識(shí)點(diǎn): Cells(行,列) - 單元格的一種表示方法,列可以使用字母表示 Cells(1,2) 和 Cells(1,"B") 都表示第一行第二列交叉的單元格-B1 雖然這些都有了,但是我一個(gè)小白,還是不知道怎么做呀? 這個(gè)是否,就要說(shuō)Excel做的好的地方了,錄制宏!
如果沒(méi)有看到開(kāi)發(fā)工具,按下面步驟操作一下即可。 【文件】 - 【選項(xiàng)】- 【自定義功能區(qū)】 - 【開(kāi)發(fā)工具】 勾上 確定即可! 動(dòng)畫(huà)演示:查看錄制的宏 查看宏的方式有很多,除了上面的點(diǎn)擊【Visual Basic】 還可以 右擊任意工作表名稱(chēng),選擇 【查看代碼】 或者按下 ALT+F11 查看! 我們來(lái)看一下錄制宏的代碼: Sub 多表匯總() 知識(shí)點(diǎn): 單元格表示:Range("單元格地址") 這個(gè)是單元格的一種表示方式,但是不是唯一的,以后大家會(huì)慢慢接觸到其他表示方式!Select 就是因?yàn)橐馑?,選擇!Copy就是復(fù)制,上面就是選擇了A1:G10,然后復(fù)制,最后粘貼到,粘貼我們要切換報(bào),這里就會(huì)涉及到VBA中如何表示工作表? 3、VBA中工作表的表示方式 這個(gè) Sheets("匯總表").Select 就表示選擇了名稱(chēng)為匯總表的工作表,那么你也應(yīng)該可以猜出表示方式了!
4、常用的幾個(gè)單詞
Sheets("1月").Range("A1:G"&Sheets("1月").Cells(Rows.count,1).End(xlup).row) MaxRow = Sheets("匯總表").Cells(Rows.Count, 1).End(xlUp).Row+1 干點(diǎn)啥 Next i = 2 To 4(修改為實(shí)際的表個(gè)數(shù)) 共有多少個(gè)工作表:Sheets.Count ' 多表匯總 宏 '從第2行表到第4張表(1月-3月) For i = 2 To Sheets.Count If i = 2 Then iStartRow = 1 '首次從A1復(fù)制 MaxRow = 1 '首次粘貼到匯總表A1 Else iStartRow = 2 '否則從跳過(guò)標(biāo)題,從第二行開(kāi)始 '匯總表中有數(shù)據(jù)的下一行 MaxRow = Sheets("匯總表").Cells(Rows.Count, 1).End(xlUp).Row + 1 End If '用IROW 代碼這一串內(nèi)容 iRow = Sheets(i).Cells(Rows.Count, 1).End(xlUp).Row Sheets(i).Range("A" & iStartRow & ":G" & iRow).Copy _ Sheets("匯總表").Range("A" & MaxRow) Next End Sub |
|
來(lái)自: Excel辦公實(shí)戰(zhàn) > 《待分類(lèi)》