Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 954|回复: 4

[已解决]关于VBA查询的问题

[复制链接]
发表于 2022-3-8 01:11 | 显示全部楼层 |阅读模式
各位老师好:
       下图为本人求助的查询问题。因为查询数据是分开的,请老师指点一下代码,谢谢!(数据简单做了模拟)
最佳答案
2022-3-8 14:43
数据查询.zip (18.27 KB, 下载次数: 22)
求助.png

数据查询.zip

7.55 KB, 下载次数: 9

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2022-3-8 01:16 | 显示全部楼层
如果是用字典做这道题,是需要声明两个字典么?即左边声明一个字典,查询后输出;右边三列要怎么声明字典?
回复

使用道具 举报

发表于 2022-3-8 02:53 | 显示全部楼层
这类有格式的最好当然是用sql语句来写,简单容易,也就是一行语句
  1. Sub marco()
  2. Dim a(1 To 4)
  3. Set dic = CreateObject("Scripting.Dictionary")
  4. For i = 2 To [n1].CurrentRegion.Rows.Count
  5. If Not dic.exists(Cells(i, "N").Text) Then
  6. a(1) = Cells(i, "O").Text
  7. a(2) = Cells(i, "P").Text
  8. a(3) = Cells(i, "Q").Text
  9. a(4) = Cells(i, "R").Text
  10. dic.Add Cells(i, "N").Text, a
  11. End If
  12. Next

  13. For i = 2 To [a1].CurrentRegion.Rows.Count
  14. If dic.exists(Cells(i, "a").Text) Then

  15. Cells(i, "B") = dic(Cells(i, "A").Text)(2)
  16. Cells(i, "d") = dic(Cells(i, "A").Text)(1)
  17. Cells(i, "e") = dic(Cells(i, "A").Text)(4)
  18. Cells(i, "f") = dic(Cells(i, "A").Text)(3)
  19. End If
  20. Next
  21. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2022-3-8 10:21 | 显示全部楼层
eennoo 发表于 2022-3-8 02:53
这类有格式的最好当然是用sql语句来写,简单容易,也就是一行语句

谢谢老师!只是有一个问题,就是执行出来的B列数据是数值,而数据源的类型是文本。用字典+sql就会出现这个问题,是吧?主要我sql不懂。麻烦老师再指点一下。或者说,只能先查询好,然后再重新写一段vba,将B列的数据变成数据源的样子
回复

使用道具 举报

发表于 2022-3-8 14:43 | 显示全部楼层    本楼为最佳答案   
数据查询.zip (18.27 KB, 下载次数: 22)
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-29 20:17 , Processed in 0.421838 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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