标签:VBA dict1 distinct arr dict sql Test 字典
VBA 的SQL是无法区分大小写的,比如distinct和两个表连接用ON的时候,这个时候也是不区分大小的
模拟Sheet,Shee名字为Test
---------Test--------------
A
1 Name
2 Joker
3 joker
4 jokeR
------------------------------
strsql = " SELECT DISTINCT NAME FROM [Test$] "
运行后的结果
---------Test--------------
A
1 Name
2 Joker
------------------------------
这个结果不是我想要的结果,所以要用VBA代码来解决这个问题
第一个想到的就是 字典,因为字典的Key不能重复,而且VBA中的字典可以获得所有Key值,直接转换为数组比较方便
下面是VBA代码
---------Test--------------
A
1 Name
2 Joker
3 joker
4 jokeR
------------------------------
Dim dict ' 不重复的的数据存在的字典 Dim dict1 '重复数据存在的字典 Dim arr1() '用来储存sheet里的数据 Dim arr2() '用来获取字典(dict)的Key值 Set dict = CreateObject("Scripting.Dictionary") Set dict1 = CreateObject("Scripting.Dictionary")
i = Worksheets("Test").[A1048576].End(xlUp).Row
arr = Worksheets("Test").Range("A1:A" & i).Value '获取sheet指定单元格的数据,VBA会自动转换为二级数组 For k = 1 To i Step 1 '从第一行循环到最后一行 If dict1.exists(arr(k - 1, 1)) = False Then 'dict1 先判断数据是否重复
If dict.exists(arr(k - 1, 1)) = False Then dict.Add arr(k - 1, 1), 1 Else Debug.Print 1 dict.Remove (arr(k - 1, 1)) dict1.Add arr(k - 1, 1), 1 End If End If Next k arr2 = dict.keys Worksheets("Test").Range("A2:A" & i).Clear For k = 2 To UBound(arr2) + 2 Step 1 Worksheets("Test").Range("A" & k) = arr2(k - 2)
Next k
' 不重复的的数据存在的字典
标签:VBA,dict1,distinct,arr,dict,sql,Test,字典 来源: https://www.cnblogs.com/wjl-de-java/p/16293940.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。