excel每张工作表中有b列,每行一个名字,怎么能汇总这些曾经出现的名字到一个sheet?
网友解答: 谢谢邀请。这个问题就是一个多表去重复的问题,处理方法是使用vba。这里额外说一下个人看法:这样的需求实际上可以算是伪需求。一般情况下,销售人员业绩表实际上没必要分成十几张表,
谢谢邀请。
这个问题就是一个多表去重复的问题,处理方法是使用vba。
这里额外说一下个人看法:这样的需求实际上可以算是伪需求。
一般情况下,销售人员业绩表实际上没必要分成十几张表,一张表就好了。
只要格式规范,标识明确,筛选一下什么数据都能出来。
这样的好处是:利于后期统计,不费力气,透视表基本就搞掂了。
而且还减少资源,使得EXCEL更快捷。
下面回到正题。
数据源是下面这个样子的:
除汇总表之外的几张工作表
各张工作表的姓名数据
思路:
1、遍历工作表,读取每个工作表的b列数据。
2、将每个工作表的b列数据都放进字典,去除重复。
3、遍历所有工作表后将字典的数据输出到“汇总”工作表。
4、代码如下:
Sub 多表提取不重复姓名()
'//定义变量
Dim i As Long
Dim arr
Dim LastRow As Long
Dim sht As Worksheet
Dim d As Object
Set d = CreateObject("scripting.dictionary") '创建字典
For Each sht In Sheets '遍历工作表
If sht.Name < "汇总" Then '如果工作表的名称不是汇总
With sht
LastRow = .Cells(Rows.Count, 2).End(xlUp).Row '读取每个工作表b列最后非空行行号
arr = .Range("b2:b" & LastRow).Value '将数据写进数组arr
End With
For i = 1 To UBound(arr) '遍历数组
d(arr(i, 1)) = "" '将数组数据放进字典的key中去除重复
Next
End If
Next
With Sheets("汇总") '//输出去重复后的姓名到汇总工作表
.Range("b2:b65535").ClearContents '清除旧数据,方便每次更新
.Range("b2").Resize(d.Count, 1) = Application.Transpose(d.keys) '输出最后的姓名数据
End With
End Sub
最后的结果如下图:
如果还需要金额汇总统计之类的,如下图:
代码如下:
Sub 多表提取不重复姓名并统计()
'//定义变量
Dim i As Long
Dim arr, brr(1 To 10000, 1 To 3)
Dim LastRow As Long
Dim sht As Worksheet
Dim d As Object
Set d = CreateObject("scripting.dictionary") '创建字典
For Each sht In Sheets '遍历工作表
If sht.Name < "汇总" Then '如果工作表的名称不是汇总
With sht
LastRow = .Cells(Rows.Count, 2).End(xlUp).Row '读取每个工作表b列最后非空行行号
arr = .Range("b2:c" & LastRow).Value '将数据写进数组arr
End With
For i = 1 To UBound(arr) '遍历数组
If Not d.exists(arr(i, 1)) Then '判断字典key是否存在,如果不存在
k = k + 1 '标记行号
d(arr(i, 1)) = k '字典记录姓名在数组brr中的行号
'//将第一条数据放进数组brr
brr(k, 1) = arr(i, 1) '姓名
brr(k, 2) = arr(i, 2) '金额
brr(k, 3) = 1 '次数
Else
r = d(arr(i, 1)) '读取姓名在数组brr中的行号
brr(r, 2) = brr(r, 2) + arr(i, 2) '金额累加
brr(r, 3) = brr(r, 3) + 1 '次数累加
End If
Next
End If
Next
With Sheets("汇总") '//输出去重复后的姓名到汇总工作表
.Range("b2:d65535").ClearContents '清除旧数据,方便每次更新
.Range("b2").Resize(k, 3) = brr '输出最后的数据
End With
End Sub
结果如下:
以上仅供参考。
在使用Excel的时候,正确的用法是简单问题简单处理,简单问题不弄成复杂问题。
网友解答:powerquery+数据透视表批量合并汇总多表放大招
①powerquery批量合并多表动画演示
②数据透视表汇总演示
具体做法如下:
1、点击数据——新建查询——从文件——从工作簿(即要汇总的表格)
2、获取工作簿位置导入表格
3、出现导航器,按住SHIFT选中所有表格确定
4、出现导航编辑器,预览导入的效果,删除多余的列
5、追加查询更多的表格,确定
6、确定后就直接导入表格中生成汇总表了
7、汇总在一起不代表求和,就只是将所有的内容合并在一个表格中,只要点击这个表格的任意一单元格就可以通过数据透视表汇总
a、将鼠标放在数据区域任意一单元格——点击设计——通过数据透视表汇总——选中汇总表放置的区域——确定
b、弹出数据透视表字段,将姓名放在行字段,业绩放在值字段就生成汇总表格了
更多小技巧欢迎留言关注我的酷米号:Excel办公小动画