1、以excel2010版本为例,如图A列里的名字有相同的,先把A列的名字全部复制到D列;
2、然后在页面上方找到“数据”选项,点击;
3、在数据下面的菜单栏里,找到“删除重复项”,点击;
4、就会弹出删除重复项的设置框,选择全选后,点击下面的确定;
5、就会发现D列相同的名字删掉了,只剩下一个,这时的弹出框点击确定则可。
用VBA编个程序代码吧。
首先,你的Office得是支持VBA的版本,貌似WPS个人免费版是不支持VBA的。
然后,打开你的工作簿---另存为---.xlsm启用宏的工作簿。
打开你的工作簿,按ALT+F11打开VBA编辑器。
在编辑器的左侧栏中,双击你要添加代码的工作表名。
在编辑器的右侧编辑区,粘贴代码。
按照图片上的绿色注释文字,给变量指定列号和行号,即可,
其他代码看不懂没关系。
做好以后,关闭VBA编辑器,保存一下工作簿。就完成了。
效果就是每当你在原始数据区写入数据时,并且姓名.性别.数量三个单元格均不为空时,就会自动把数据汇总到汇总区域中。
Private Sub Worksheet_Change(ByVal Target As Range)
Dim ia1%, ia2%, ia3%, ib1%, ib2%, ib3%, iar&, ibr&
'***********************************************
ia1 = Columns("A").Column '姓名是哪一列(字母)
ia2 = Columns("B").Column '性别是哪一列(字母)
ia3 = Columns("C").Column '数量是哪一列(字母)
iar = 8 '原始数据从哪一行开始(标题行不算)
'***********************************************
ib1 = Columns("F").Column '姓名写到哪一列(字母)
ib2 = Columns("G").Column '性别写到哪一列(字母)
ib3 = Columns("H").Column '数量写到哪一列(字母)
ibr = 2 '去重合计从哪一行开始(标题行不算)
'***********************************************
'下面进行数据处理
Dim rg As Range, irow&, ir&, ic%
ir = Target.Row
ic = Target.Column
If ir >= iar Then
If ic = ia1 Or ic = ia2 Or ic = ia3 Then
If Cells(ir, ia1) <> "" And Cells(ir, ia2) <> "" And Cells(ir, ia3) <> "" Then
Set rg = Cells(ibr - 1, ib1).Resize(Rows.Count - ibr + 2).Find(Cells(ir, ia1), lookat:=xlWhole, MatchCase:=False)
If Not rg Is Nothing Then
irow = rg.Row '如果汇总区已经存在该姓名,则获取该姓名的行号
Else
irow = Cells(Rows.Count, ib1).End(3).Row + 1 '如果汇总区不经存在该姓名,则获取尾部空行的行号
If irow < ibr Then irow = ibr '如果该行号小于ibr,则重新赋值为ibr
End If
Cells(irow, ib1) = Cells(ir, ia1) '输出姓名到汇总区
Cells(irow, ib2) = Cells(ir, ia2) '输出性别到汇总区
Cells(irow, ib3) = Application.SumIf(Cells(iar, ia1).Resize(Rows.Count - iar + 1, 1), _
Cells(ir, ia1), Cells(iar, ia3).Resize(Rows.Count - iar + 1, 1)) '输出合计数量到汇总区
End If
End If
End If
End Sub
如果每次打开工作簿时,都提示你启用宏,可以按上图设置一下。
点左上角的:文件--选项--信任中心--信任中心设置--宏设置--启用所有宏--确定。
我这个想做到自动化,就是我在AB列填写数据以后能把数据汇总到DF列,但是不要重复项出现,只保留一个,但是又不能把AB列数据删掉了。
追答自动的也可以,有三种方案可选
一种是数组公式,公式比较繁琐,数据量比较大的时候会卡。我曾经发过一个视频:
《用EXCEL函数做一个高效的自动去重加合计画框线的动态汇总表》
应该可以找到。也可以直接跟我要。
另一种是用VBA代码写一个宏事件,让代码去实时监测你的单元格是否有改动,有改动就核对重新统计。 当然,代码要根据具体的表去写。
还有一种就是用数据透视表。数据更新后,数据透视表需要手动刷新。
当然,其他一些工具也可以实现, 比如用SQL、power query等。那些工具用起来更麻烦一些。所以就不说了。