原创作者: 卢子 转自:Excel不加班
那时的现金日记账汇总表,是用VBA+公式完成 , 分成了两步 。现在卢子看了,有点多此一举,直接VBA一步到位,这样堪称完美 。
每一家银行日记账格式都一样,余额都放在E列 , 现在要实现将银行还有对应的最后余额提取到汇总表 。
先来看最终效果,点下汇总按钮,1秒钟就搞定,还给你一个提示对话框"报告卢子 , 提取完毕" 。
今天就不录制宏了,教你如何在原来的基础上面改代码 。
前面一直有提到目录的代码 。
Sub 目录()
【银行日记账excel表格 银行日记账excel表格带公式】Dim i As Integer
For i = 2 To 6
Range("a" & i) = Sheets(i).Name
Next
End Sub
这个代码其实是不智能的 , 需要每次都数一下有多少工作表,将6改成Sheets.Count,让代码帮你数工作表 。这样就可以智能的 , 不管多少工作表都可以 。
更完美的目录提取代码就出来了 。
Sub 目录()
Dim i As Integer
For i = 2 To Sheets.Count
Range("a" & i) = Sheets(i).Name
Next
End Sub
接下来,怎么提取每个银行的E列最后一个有金额的值 。
先不看VBA,用技巧实现 。随便点E列下方空白单元格,按一下Ctrl+↑,就回到E列最后一个有金额的值了 。
在最后余额的下方,选一个没有内容的空单元格 。比如E3000,E5000都行,因为余额在哪个单元格不确定,为了确保在这个单元格的下方,直接写一个非常大的单元格,比如E60000,也就是Range("E60000") 。
方向有下左右上,xlup就是上,也就是Range("E60000").End (xlUp) 。
向上以后,是要提取这个单元格的值Value,也就是Range("E60000").End(xlUp).Value 。
到此,需要的都有了 。
Sub 汇总()
Dim i As Integer
For i = 2 To Sheets.Count
Range("a" & i) = Sheets(i).Name
Range("b" & i) = Sheets(i).Range("E60000").End(xlUp).Value
Next
End Sub
如果要发给其他人使用 , 经常会加个提示对话框MsgBox "报告卢子,提取完毕" , 不加也行,没啥影响 。
最终代码 。
Sub 汇总()
Dim i As Integer
For i = 2 To Sheets.Count
Range("a" & i) = Sheets(i).Name
Range("b" & i) = Sheets(i).Range("E60000").End(xlUp).Value
Next
MsgBox "报告卢子,提取完毕"
End Sub
将原来的内容清除掉,运行代码,验证效果 。
会点技巧、公式,借鉴思路 , 从而实现写各种VBA代码 。
推荐阅读
- 鼻涕虫有毒吗 鼻涕虫有毒吗,可以吃吗
- 共建“一带一路”·民心相通 开展医疗服务 推动卫生合作
- 送女朋友什么生日礼物 送女朋友什么生日礼物比较有意义
- 真正全面屏!新一代旗舰机官宣:11月23日,正式发布
- 交通银行信用卡账单日是哪天
- 魅族新机官宣:11月30日,正式发布
- 饮桂花酒是什么节日的 饮桂花酒是什么节日的风俗
- 日本弓背蚁吃什么昆虫 日本弓背蚁吃什么
- 肇庆市高要区活道镇4月9日-4月10日暂停新冠疫苗接种
- 日本航空123号班机空难 日本航空123号班机空难事件