作者:绿色风
分类:
时间:2022-08-17
浏览:113
楼主 悟空师弟 |
Q:如何仅汇总两个表格重复出现的户名并分别读取两表中总计数量? 如下图:A列为两个表中有重复的客户名称,B列取09年合计,C列取10年合计,D列为C列/B列-1
A:附件: 如何仅汇总两个表格重复出现的户名并分别读取两表中总计数量?.rar
代码:
- Sub tt() '子程序 tt()
- Application.ScreenUpdating = False '关闭屏幕刷新(可以提高运行速度)
- Dim rg As Range '定义变量 rg 为 单元格区域
- Dim rng1 As Range '定义变量 rng1 为 单元格区域
- Dim rng2 As Range '定义变量 rng2 为 单元格区域
- Set rng1 = Sheet1.Range("A2:A" & Sheet1.Range("A65536").End(3).Row) '给rng1赋值 (一个区域,为工作表 Sheet1 的A2至A列最后一个非空单元格)
- Set rng2 = Sheet3.Range("A:A") '给rng1赋值 (一个区域,为工作表 Sheet1 的整个A列)
- Range("A2:D65536") = "" '将区域A2:D65536清空
- On Error Resume Next '当错误 转到 下一句代码继续运行,即忽略错误代码。
- For Each rg In rng1 '开始循环(rg 在 rng1 中循环)
- x = 0 '将x的值设为0(第一次循环后起作用)
- x = Len(rng2.Find(rg, , , LookAt:=xlWhole).Address) '将rng2中查找到rg数据时的数据的字符长度赋值给 x
- If x > 0 Then '如果 x>0 则执行下一句,否则回到for循环。
- rw = Range("A65536").End(3).Row + 1 '将A列最后一个非空单元格的下一个单元格行号赋值给rw
- Cells(rw, 1) = rg '将rg的值写到A列最后一个非空单元格的下一个单元格
- Cells(rw, 2) = rg.Offset(0, 1) '将rg右边单元格的值写到B列最后一个非空单元格的下一个单元格
- Cells(rw, 3) = rng2.Find(rg, , , LookAt:=xlWhole).Offset(0, 1) '将Sheet3中找到rg后的右边一个单元格内的值写到C列最后一个非空单元格的下一个单元格
- Cells(rw, 4) = Cells(rw, 3) / Cells(rw, 2) - 1 '将C列除以B列的值减去1后的值写到D列单元格
- End If 'If判断过程结束
- Next '回到for循环
- End Sub '子程序结束
效果:
|
2楼 yaoandxu2011 |
这个帖子可以回答昨天 LZY枝叶的提问 |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一