打开APP
userphoto
未登录

开通VIP,畅享免费电子书等14项超值服

开通VIP
超完美的现金日记账汇总表,你值得拥有!

曾经写过一篇文章:

接近完美的现金日记账汇总表,你值得拥有!

那时的现金日记账汇总表,是用VBA+公式完成,分成了两步。现在卢子看了,有点多此一举,直接VBA一步到位,这样堪称完美。

每一家银行日记账格式都一样,余额都放在E列,现在要实现将银行还有对应的最后余额提取到汇总表。

先来看最终效果,点下汇总按钮,1秒钟就搞定,还给你一个提示对话框"报告卢子,提取完毕"。

今天就不录制宏了,教你如何在原来的基础上面改代码。

前面一直有提到目录的代码。

Sub 目录()

    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代码。

推荐:一键搞定!根据总表生成多个分表,根据分表生成目录

上篇:日报、月报不发愁,再也不用一个个操作,一次全搞定

学了5天VBA,有没感觉到,其实VBA也不是很难,以前那些很难实现或者很繁琐的事儿交给VBA就对了,全自动生成。

作者:卢子,清华畅销书作者,《Excel效率手册 早做完,不加班》系列丛书创始人,个人公众号:Excel不加班(ID:Excelbujiaban)

本站仅提供存储服务,所有内容均由用户发布,如发现有害或侵权内容,请点击举报
打开APP,阅读全文并永久保存 查看更多类似文章
猜你喜欢
类似文章
【热】打开小程序,算一算2024你的财运
VBA基础入门(32)超越遍历的查找功能
EXCEL:一个工作薄中多个工作表合并代码
多工作表合并【Excel分享】
0基础学习写一个多表汇总宏模板!
vba实现excel二级联动多选功能
excel vba常见问题解答
更多类似文章 >>
生活服务
热点新闻
分享 收藏 导长图 关注 下载文章
绑定账号成功
后续可登录账号畅享VIP特权!
如果VIP功能使用有故障,
可点击这里联系客服!

联系客服