VBA的sql distinct无法区分大小写的另一种解决方法
2022/5/22 10:52:51
本文主要是介绍VBA的sql distinct无法区分大小写的另一种解决方法,对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!
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的sql distinct无法区分大小写的另一种解决方法的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!
- 2024-05-13PingCAP 戴涛:构建面向未来的金融核心系统
- 2024-05-09flutter3.x_macos桌面os实战
- 2024-05-09Rust中的并发性:Sync 和 Send Traits
- 2024-05-08使用Ollama和OpenWebUI在CPU上玩转Meta Llama3-8B
- 2024-05-08完工标准(DoD)与验收条件(AC)究竟有什么不同?
- 2024-05-084万 star 的 NocoDB 在 sealos 上一键起,轻松把数据库编程智能表格
- 2024-05-08Mac 版Stable Diffusion WebUI的安装
- 2024-05-08解锁CodeGeeX智能问答中3项独有的隐藏技能
- 2024-05-08RAG算法优化+新增代码仓库支持,CodeGeeX的@repo功能效果提升
- 2024-05-08代码报错不用愁,CodeGeeX一键完成代码修复、错误解释的功能上线了!