ExcelTip.Net留存知识帖 ---【注:附件之前被网盘供应商清空后,现已修复-现已修复-现已修复为本地下载!】
现在位置:首页 > 我的酷贴 > Excel VBA > VBA中三字典与数组结合提取不重复姓名

VBA中三字典与数组结合提取不重复姓名

作者:绿色风 分类: 时间:2022-08-18 浏览:143
楼主
wise
VBA中三字典与数组结合提取不重复姓名,看看三字典与数组结合方面的入门使用

未命名.jpg  
三字典与数组的应用.rar
2楼
ljx63426
GOOD
3楼
LOGO
  1. Sub DISTINCT()
  2.     Dim data As Range, rng As Range, i As Integer, n As Range
  3.     Dim d1 As Object, d2 As Object, d3 As Object
  4.     Set d1 = CreateObject("scripting.dictionary")
  5.     Set d2 = CreateObject("scripting.dictionary")
  6.     Set d3 = CreateObject("scripting.dictionary")
  7.     Set data = Intersect([a1].CurrentRegion.Offset(1, 0), [a1].CurrentRegion)
  8.     Set rng = Intersect([c:k], data)
  9.     For i = 1 To rng.Cells.Count
  10.     Set n = rng.Cells(i)
  11.         If n <> "" Then
  12.         Select Case Cells(n.Row, 1)
  13.         Case "粤东"
  14.              d1(n.Value) = ""
  15.         Case "粤北"
  16.              d2(n.Value) = ""
  17.         Case Else
  18.              d3(n.Value) = ""
  19.         End Select
  20.         End If
  21.             Next
  22.     Cells(1, [a1].CurrentRegion.Columns.Count + 2).Resize(1, 3) = Array("粤东", "粤北", "粤西")
  23.     Cells(2, [a1].CurrentRegion.Columns.Count + 2).Resize(d1.Count) = Application.Transpose(d1.keys)
  24.     Cells(2, [a1].CurrentRegion.Columns.Count + 3).Resize(d2.Count) = Application.Transpose(d2.keys)
  25.     Cells(2, [a1].CurrentRegion.Columns.Count + 4).Resize(d3.Count) = Application.Transpose(d3.keys)
  26.     Set d1 = Nothing
  27.     Set d2 = Nothing
  28.     Set d3 = Nothing
  29. End Sub
4楼
LOGO
2个字典其实也是可以的,而且更灵活。
  1. Sub 选取单元格区域()
  2.     Dim data As Range, rng As Range, i As Integer, n As Range, m As Range, key
  3.     Dim d1 As Object, d2 As Object, d3 As Object
  4.     Set d1 = CreateObject("scripting.dictionary")
  5.     Set d2 = CreateObject("scripting.dictionary")
  6.     Set data = Intersect([a1].CurrentRegion.Offset(1, 0), [a1].CurrentRegion)
  7.     Set rng = Intersect([c:k], data)
  8.     For Each m In data.Columns(1).Cells
  9.         d1(m.Value) = ""
  10.             Next
  11.     For Each key In d1.keys
  12.         For i = 1 To rng.Cells.Count
  13.         Set n = rng.Cells(i)
  14.         If n <> "" Then
  15.         If Cells(n.Row, 1) = key Then d2(n.Value) = ""
  16.         End If
  17.             Next
  18.                 With Cells(1, Columns.Count).End(1).Offset(0, 1)
  19.                     .Value = key
  20.                     .Offset(1, 0).Resize(d2.Count) = Application.Transpose(d2.keys)
  21.                 End With
  22.                     d2.RemoveAll
  23.                 Next
  24.     End Sub
5楼
芐雨
6楼
335081548
感谢分享
7楼
hustclm
都是很好的应用

免责声明

有感于原ExcelTip.Net留存知识的价值及部分知识具有的时间限定性因素, 经与ExcelTip.Net站长Apolloh商议并征得其同意, 现将原属ExcelTip.Net的知识帖采集资料于本站点进行展示, 供有需要的人士查询使用,也慰缅曾经的论坛时代。 所示各个帖子的原作者如对版权有异议, 可与本人沟通提出,或于本站点留言,我们会尽快处理。 在此,感谢ExcelTip.Net站长Apolloh的支持,感谢本站点所有人**绿色风(QQ:79664738)**的支持与奉献,特此鸣谢!
------本人网名**KevinChengCW(QQ:1210618015)**原ExcelTip.Net总版主之一

评论列表
sitemap