作者:绿色风
分类:
时间:2022-08-18
浏览:208
楼主 海洋之星 |
Q:如何筛选出两列相同的数据?效果如下图:
A:解决思路:将两列字段合成一个字段,最终将两个条件变成一个条件,方法有三种: (1)技巧方法: 在F2单元格中输入公式:- =SUMPRODUCT(($A$2:$A$14&$B$2:$B$14=A2&B2)*1)>1
,再按照动画进行筛选:
(2)SQL方法: (一)有辅助列,在F1中输入公式:- =A1&B1
- select 日期,姓名,备注1,备注2,备注3 from [sheet1$] where 日期姓名 in (select 日期姓名 from [sheet1$] group by 日期姓名 having count(日期姓名)>=2) order by 日期姓名
|
2楼 海洋之星 |
如果不想使用辅助,可以使用下面SQL语句:- select 日期,姓名,备注1,备注2,备注3 from [sheet1$] where 日期&姓名 in (select 日期&姓名 from [sheet1$] group by 日期&姓名 having count(日期&姓名)>=2) order by 日期&姓名
(3)VBA方法:- Option Explicit
- Sub test()
- Dim d, arr, i&, t, x As Range, j&, c As Long, brr, nm
- Application.ScreenUpdating = False
- [g1].CurrentRegion.Offset(1).Clear
- Set d = CreateObject("scripting.dictionary")
- arr = [a1].CurrentRegion.Value
- For i = 2 To UBound(arr)
- d(arr(i, 1) & "|" & arr(i, 2)) = ""
- Next
- t = d.keys
- For i = 0 To UBound(t)
- [a1].CurrentRegion.AutoFilter
- nm = [g65536].End(3).Row + 1
- [a1].CurrentRegion.AutoFilter Field:=1, Criteria1:=Split(t(i), "|")(0)
- [a1].CurrentRegion.AutoFilter Field:=2, Criteria1:=Split(t(i), "|")(1)
- Set x = ActiveSheet.AutoFilter.Range.SpecialCells(xlCellTypeVisible)
- For j = 1 To x.Areas.Count
- c = c + x.Areas(j).Rows.Count
- Next
- If c > 2 Then: [a1].CurrentRegion.Copy Cells(nm, 7): [a1].CurrentRegion.AutoFilter: Range(Cells(nm, 7), Cells(nm, 11)).Delete Shift:=xlUp
- c = 0
- [a1].CurrentRegion.AutoFilter
- Next
- Application.ScreenUpdating = True
- End Sub
|
3楼 lily123456 |
看不懂VBA |
免责声明
有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素,
经与ExcelTip.Net站长Apolloh商议并征得其同意,
现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示,
供有需要的人士查询使用,也慰缅曾经的论坛时代。
所示各个帖子的原作者如对版权有异议,
可与本人沟通提出,或于本站点留言,我们会尽快处理。
在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一