学员的案例:每个银行账户用一张表,然后将每个银行的余额自动引用到汇总表。
原来A列的工作表名称,学员自己写的不规范,什么格式都有。卢子用一段简单的代码将工作表名称获取过来,这样后期统计就更简单。
源代码:
Sub 提取工作表()
Dim i%
For i = 1 To Sheets.Count
k = k 1
Cells(k, 1) = Sheets(i).Name
Next
End Sub
如果不懂得使用代码,请点开这篇文章:一键生成目录(完善版)
每个账户的余额,都是在E列,现在要根据最后一个日期,查找最后一行的余额。
既然是现金日记账,记录的日期肯定是小于或者等于今天所在日期,也就是说可以用TODAY函数进行查找日期所对应的余额。
=LOOKUP(TODAY(),'建行(7777)'!A:E)
关于引用工作表名称,以前写过很多文章,这里就简单的说明一下。这里有一个关键点,因为含有特殊符号,需要加单引号。
=LOOKUP(TODAY(),INDIRECT("'"&A2&"'!A:E"))
如果不懂INDIRECT函数的用法,请参考文章:多表查找公司的地址、纳税人识别号和开户行及账号
当然,纯VBA一步到位也可以。
最终代码。
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
将原来的内容清除掉,运行代码,验证效果。
解决问题不止一个方法,选择适合自己的就好。