原创作者: 卢子 转自:Excel不加班
早期卢子写过一篇文章,是用公式做的,现在学VBA了,就得尝试用VBA来解决函数的问题 。
多表查找公司的地址、纳税人识别号和开户行及账号
明细表,格式一模一样,现在要将每个明细表的地址、纳税人识别号和开户行及账号提取到汇总表 。
文章插图
汇总表,根据公司名称查找到相关的信息 。
文章插图
说到查找,很多人的第一反应就是VLOOKUP函数,其实查找家族人才济济 。在汇总表的B2输入公式,下拉和右拉 。
=INDIRECT($A2&&34;!&34;&ADDRESS(COLUMN(B1),4,4))
上面是公式的解决方法,来看VBA怎么解决的?
思路:
将金石这个表的D2:D4,选择性粘贴,转置到汇总的B2 。同理,金土、金沙也是这样处理 。
相当于录制一个转置的宏,加一个循环语句就搞定 。分表的内容有合并单元格,录制出来会有问题,这里直接用汇总表这个没合并单元格的录制宏 。
Step 01 录制一个选择性粘贴,转置的宏 。
文章插图
Step 02 查看刚刚录制的宏代码 。
文章插图
PasteSpecial就是选择性粘贴的意思 。
Transpose:=True就是转置的意思 。
中间那些可以暂时不用管,删除掉,这样代码看起来就整洁很多 。
文章插图
Range(&34;D2:D4&34;).Select
Selection.Copy
这2句的意思就是先选择单元格D2:D4,然后对选择的区域进行复制,可以简化成Range(&34;D2:D4&34;).Copy 。
同理,对下面那2句也进行简化Range(&34;B7&34;).PasteSpecial Transpose:=True 。
最后,嵌套循环语句,还有添加工作表名称,代码就完成了 。
Sub 汇总()
Dim i As Integer
For i = 2 To Sheets.Count
Sheets(i).Range(&34;D2:D4&34;).Copy
Sheets(1).Range(&34;B&34; & i).PasteSpecial Transpose:=True
Next
End Sub
运行代码确认效果 。
文章插图
VBA学起来并没有想象中那么难,只要你跟对人 。
就像这个读者所说的,跟错人,一开始学习那些乱七八糟的概念,不要说是你,即便是我看着都想睡觉 。学VBA要从工作上经常接触到的表格学起,想着如何将表格变得更智能,更容易操作,要从这个观点出发才能学好 。
文章插图
【纳税人识别号查询不到是什么原因 纳税人识别号查询 纳税人识别编号怎么查询】
- 梦见认识的人死了又复活了预兆 梦见认识的人死了是什么意思
- 五年级下数学6的倍数特征 有倍数方面的相关知识吗
- adb不能识别 电脑无法打开adb
- 似曾相识的意思解释 似曾相识的意思 佛说似曾相识的人
- 凤凰木适合在哪里种植 凤凰木的相关知识
- 农商银行和农村信用社是一样的吗龙腾财经知识 农商银行和农村信用社一样吗
- 啥是无意识差错 无意识差错的解释
- 等闲识得东风面啥意思 等闲识得东风面意思简述
- 在线识别图片来源 图片素材 在线识别图片来源 搜图识图
- vanow怎么用 vanow底部为什么没有标识