作者:绿色风
   分类:
   时间:2022-08-18
   浏览:302
      
  楼主 海洋之星 | 
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总版主之一