网站首页 > 精选教程 正文
大家好,今日我们继续讲解VBA数组与字典解决方案,今日讲解第62讲内容:利用字典和数组函数,同样实现提取只出现一次数据.
在VBA解决方案中,字典和数组利用非常广泛,利用方法也非常之多,多看看可以打开自己的思路,从中寻找适合于自己的方案,根据自己的爱好可以多加利用,每一种方法,只用切实的利用了,弄透了才能变成自己的知识结构。
今日内容同样是讲解提取只出现一次的数据,目的和上一讲一样,但我们的方法会有所区别。数据如下截图,我们要从A列给出的数据中提取只出现一次的数据。
思路分析和过程建立:今日我将利用字典和数组函数的方法实现,将数据装入数组,先将数据装入字典,同时区分一下哪个是只出现一次的数据,利用数组函数FLITER把有标识的数据区分出来,这种方法不用破坏字典数据的完整性,在后续还需要字典数据的情况下完全可以利用。下面看我给出的代码:
Sub mynzsz_62() '第62讲 利用字典和数组函数,同样实现提取只出现一次数据
Sheets("62").Select
'将数据放到数组中
myarr = Range("a1", Range("a65536").End(xlUp))
'创建字典对象
Set mydic = CreateObject("Scripting.Dictionary")
'将字典赋值,同时区分是否重复
For i = 1 To UBound(myarr)
If mydic.exists(myarr(i, 1)) Then
mydic(myarr(i, 1)) = "@"
Else
mydic.Add myarr(i, 1), myarr(i, 1)
End If
Next
'清空待回填区域
[e:e].Clear
[E1] = "不重复数据"
'取得回填数据,并回填
mys = Application.Transpose(Filter(mydic.items, "@", False))
Range("e2").Resize(UBound(mys), 1) = mys
Set mydic = Nothing
End Sub
代码截图:
代码解析:
1 上述过程实现了从A列数据中提取出只出现一次的数据。将数据装入数组myarr,将数组数据装入字典mydic,同时为了区分哪个是只出现一次的数据,用了"@"作为重复数据的标识,在从字典中提出数据时,利用数组函数FILTER把没有标识的数据提取出来放在MYS中,最后回填数据。
2 '将字典赋值,同时区分是否重复
For i = 1 To UBound(myarr)
If mydic.exists(myarr(i, 1)) Then
mydic(myarr(i, 1)) = "@"
Else
mydic.Add myarr(i, 1), myarr(i, 1)
End If
Next
上述预计中实现了字典数据的建立,当不是重复数据时字典的键值是键,当是多次出现的数据时字典的键值是"@".
3 '取得回填数据,并回填
mys = Application.Transpose(Filter(mydic.items, "@", False))
Range("e2").Resize(UBound(mys), 1) = mys
上述语句中实现了从字典的键值中提取不含有"@"的数据,放到数组MYS中,最后回填数据。
4 Set mydic = Nothing
上述预计中实现了字典的内存清空处理。以免占用过多的内存。
下面看数据的运行:
今日内容回向:
1 本讲的思路和上一讲有什么不同?
2 如何提取只出现2次的数据呢?
猜你喜欢
- 2024-11-12 Java 中为什么 的char 数组比不可变的String更适合存储密码?
- 2024-11-12 啃碎JDK源码(三):ArrayList jdk中的哪些源码是必看的
- 2024-11-12 几行 Java 代码搞定图片提取文字功能
- 2024-11-12 excel函数技巧:choose+filter提取自定义数组
- 2024-11-12 vlookup的高阶用法——数据提取,不是很简单,但是很实用
- 2024-11-12 Java截取新闻标题 java截取string
- 2024-11-12 常用数组方法;看过的有福了 数组常用方法汇总
- 2024-11-12 新函数TAKE来了,自动提取前几名的数据,太好用了
- 2024-11-12 Office新函数Take,提取前后名次名单像喝水一样简单,记得收藏
- 2024-11-12 C语言用结构体向字符数组提取数据
你 发表评论:
欢迎- 最近发表
- 标签列表
-
- nginx反向代理 (57)
- nginx日志 (56)
- nginx限制ip访问 (62)
- mac安装nginx (55)
- java和mysql (59)
- java中final (62)
- win10安装java (72)
- java启动参数 (64)
- java链表反转 (64)
- 字符串反转java (72)
- java逻辑运算符 (59)
- java 请求url (65)
- java信号量 (57)
- java定义枚举 (59)
- java字符串压缩 (56)
- java中的反射 (59)
- java 三维数组 (55)
- java插入排序 (68)
- java线程的状态 (62)
- java异步调用 (55)
- java中的异常处理 (62)
- java锁机制 (54)
- java静态内部类 (55)
- java怎么添加图片 (60)
- java 权限框架 (55)
本文暂时没有评论,来添加一个吧(●'◡'●)