ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 Excel Home精品图文教程库
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
300集Office 2010微视频教程 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 3915|回复: 27

[求助] vba求指定条件不重复值次数

[复制链接]

TA的精华主题

TA的得分主题

发表于 2021-2-28 22:10 来自手机 | 显示全部楼层 |阅读模式
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
各位大神:
如图,根据D列指定的条件,查找A列符合条件的数据在B列出现不重复值的次数,由于数据量比较大,需要VBA执行,请高手指点!感谢!
2.png

TA的精华主题

TA的得分主题

发表于 2021-2-28 23:03 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
供参考

Sub ttt()

Set ds = CreateObject("Scripting.Dictionary")
arr = Sheet1.Range("D1").CurrentRegion
For i = 2 To UBound(arr)
    If arr(i, 1) <> "" Then Set ds(arr(i, 1)) = CreateObject("Scripting.Dictionary")
Next

brr = Sheet1.Range("A1").CurrentRegion
For i = 1 To UBound(brr)
    If brr(i, 1) <> "" Then
        If ds.exists(brr(i, 1)) Then ds(brr(i, 1))(brr(i, 2)) = ""
    End If
Next

For i = 2 To UBound(arr)
    If arr(i, 1) <> "" Then arr(i, 2) = ds(arr(i, 1)).Count
Next

Sheet1.Range("D1").Resize(UBound(arr), 2) = arr

End Sub

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-1 21:18 来自手机 | 显示全部楼层
zjzyj 发表于 2021-2-28 23:03
供参考

Sub ttt()

高手!拜谢!
再麻烦一下老师,帮我实际应用一下,我参照着改动了2个小时都没改好。

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-1 21:21 | 显示全部楼层
麻烦老师!

数据统计表.rar

1.58 MB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2021-3-1 21:29 | 显示全部楼层
没看懂需求。
何为“查找A列符合条件的数据在B列出现不重复值的次数”

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-1 21:34 来自手机 | 显示全部楼层
lmgz007 发表于 2021-3-1 21:29
没看懂需求。
何为“查找A列符合条件的数据在B列出现不重复值的次数”

老师,可以看一下我发的图片,例:以指定1为条件,去查找A列,求A列中值1相对应的B列出现了几次不重复值

TA的精华主题

TA的得分主题

发表于 2021-3-1 21:36 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
考虑PQ解法吗?
  1. let
  2.     源 = Excel.CurrentWorkbook(){[Name="表1"]}[Content],
  3.     重排序的列 = Table.ReorderColumns(源,{"机号", "批号", "落号"}),
  4.     合并的列 = Table.CombineColumns(重排序的列,{"机号", "批号"},Combiner.CombineTextByDelimiter("", QuoteStyle.None),"机号+批号"),
  5.     分组的行 = Table.Group(合并的列, {"机号+批号"}, {{"计数", each Table.RowCount(Table.Distinct(_)), type number}})
  6. in
  7.     分组的行
复制代码

TA的精华主题

TA的得分主题

发表于 2021-3-1 21:37 | 显示全部楼层
zwf211314 发表于 2021-3-1 21:34
老师,可以看一下我发的图片,例:以指定1为条件,去查找A列,求A列中值1相对应的B列出现了几次不重复值

就是没看懂呀,为什么1的不重复次数为2,而2的确是1?

TA的精华主题

TA的得分主题

发表于 2021-3-1 21:38 | 显示全部楼层
本帖最后由 消灭零公里 于 2021-3-1 21:41 编辑

单纯看图片的话,数据透视表最省事(加载到数据模型,汇总选“不重复计数”)。
论坛的审核机制是什么?这几天好几次都需要审核。其实用PQ解决也不错,鼠标点击几下就行

TA的精华主题

TA的得分主题

 楼主| 发表于 2021-3-1 21:42 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lmgz007 发表于 2021-3-1 21:37
就是没看懂呀,为什么1的不重复次数为2,而2的确是1?

那个图片黄底色的值不对,1和2都应该是1次,误导了,嘿嘿
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

关闭

最新热点上一条 /1 下一条

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-4-24 05:13 , Processed in 0.044502 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表