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办公小动画

标签: