原創(chuàng)作者:盧子轉(zhuǎn)自:Excel不加班
那時(shí)的現(xiàn)金日記賬匯總表,是用VBA+公式完成,分成了兩步?,F(xiàn)在盧子看了,有點(diǎn)多此一舉,直接VBA一步到位,這樣堪稱完美。
每一家銀行日記賬格式都一樣,余額都放在E列,現(xiàn)在要實(shí)現(xiàn)將銀行還有對(duì)應(yīng)的最后余額提取到匯總表。
先來看最終效果,點(diǎn)下匯總按鈕,1秒鐘就搞定,還給你一個(gè)提示對(duì)話框"報(bào)告盧子,提取完畢"。
今天就不錄制宏了,教你如何在原來的基礎(chǔ)上面改代碼。
前面一直有提到目錄的代碼。
Sub目錄()
DimiAsInteger
Fori=2To6
Range("a"&i)=Sheets(i).Name
Next
EndSub
這個(gè)代碼其實(shí)是不智能的,需要每次都數(shù)一下有多少工作表,將6改成Sheets.Count,讓代碼幫你數(shù)工作表。這樣就可以智能的,不管多少工作表都可以。
更完美的目錄提取代碼就出來了。
Sub目錄()
DimiAsInteger
Fori=2ToSheets.Count
Range("a"&i)=Sheets(i).Name
Next
EndSub
接下來,怎么提取每個(gè)銀行的E列最后一個(gè)有金額的值。
先不看VBA,用技巧實(shí)現(xiàn)。隨便點(diǎn)E列下方空白單元格,按一下Ctrl+↑,就回到E列最后一個(gè)有金額的值了。
在最后余額的下方,選一個(gè)沒有內(nèi)容的空單元格。比如E3000,E5000都行,因?yàn)橛囝~在哪個(gè)單元格不確定,為了確保在這個(gè)單元格的下方,直接寫一個(gè)非常大的單元格,比如E60000,也就是Range("E60000")。
方向有下左右上,xlup就是上,也就是Range("E60000").End(xlUp)。
向上以后,是要提取這個(gè)單元格的值Value,也就是Range("E60000").End(xlUp).Value。
到此,需要的都有了。
Sub匯總()
DimiAsInteger
Fori=2ToSheets.Count
Range("a"&i)=Sheets(i).Name
Range("b"&i)=Sheets(i).Range("E60000").End(xlUp).Value
Next
EndSub
如果要發(fā)給其他人使用,經(jīng)常會(huì)加個(gè)提示對(duì)話框MsgBox"報(bào)告盧子,提取完畢",不加也行,沒啥影響。
最終代碼。
Sub匯總()
DimiAsInteger
Fori=2ToSheets.Count
Range("a"&i)=Sheets(i).Name
Range("b"&i)=Sheets(i).Range("E60000").End(xlUp).Value
Next
MsgBox"報(bào)告盧子,提取完畢"
EndSub
將原來的內(nèi)容清除掉,運(yùn)行代碼,驗(yàn)證效果。
會(huì)點(diǎn)技巧、公式,借鑒思路,從而實(shí)現(xiàn)寫各種VBA代碼。