ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 希望能用VBA高效实现两表合并

[复制链接]

TA的精华主题

TA的得分主题

发表于 2020-6-14 11:10 | 显示全部楼层 |阅读模式
本帖最后由 jshamj 于 2020-6-14 13:38 编辑

image.png

说明:

1       前两表关联字段唯一,但两表关键字段数据都不完全。

2       前两表数据都有200030列以上

要求:

1       将前两表合并成样表格式

2       如果单纯用循环、复制的方式效率太低。

3       希望能用VBA高效实现两表合并

4      最好能用数组或字典等方法实现

image.png

两表合并.rar

143.6 KB, 下载次数: 18

TA的精华主题

TA的得分主题

发表于 2020-6-14 12:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
1592108678(1).jpg
1592108723(1).jpg

评分

3

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-6-14 12:29 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
附上附件以供参考

两表合并(by.micro).rar

13.04 KB, 下载次数: 27

TA的精华主题

TA的得分主题

 楼主| 发表于 2020-6-14 13:33 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 jshamj 于 2020-6-14 13:34 编辑

很强大,但我能力有限,看不懂SQL.还有原工作簿中有三张表,表中有模拟数据。能用数组或字典等方式实现吗?谢谢

TA的精华主题

TA的得分主题

发表于 2020-6-14 16:07 来自手机 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
jshamj 发表于 2020-6-14 13:33
很强大,但我能力有限,看不懂SQL.还有原工作簿中有三张表,表中有模拟数据。能用数组或字典等方式实 ...

可以用字典

TA的精华主题

TA的得分主题

发表于 2020-6-14 17:02 | 显示全部楼层
本帖最后由 Tree.IM 于 2020-6-14 17:06 编辑

你的结果是使用powerquery做的吗?
我刚试了下用powerquery做,结果和你给的一样

两表合并.zip

222.98 KB, 下载次数: 4

TA的精华主题

TA的得分主题

发表于 2020-6-14 17:37 | 显示全部楼层
两个表都是2000行*30列的数据
123.gif

两表合并1.rar

476.45 KB, 下载次数: 40

评分

2

查看全部评分

TA的精华主题

TA的得分主题

发表于 2020-6-14 20:59 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
lwwy1981 发表于 2020-6-14 17:37
两个表都是2000行*30列的数据

lwwy1981 老师的代码写的太完美了。收藏留用!还请老师抽空到http://club.excelhome.net/thread-1542088-1-1.html帮我写下代码?

TA的精华主题

TA的得分主题

发表于 2020-6-14 21:05 来自手机 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2020-6-14 21:17 | 显示全部楼层
速度很慢大概要半分鐘,但是還是可以獲得結果吧!
Sub sh1()
Sheet4.Activate
Application.ScreenUpdating = False
Set d = CreateObject("Scripting.Dictionary")
arr1 = Sheet2.[A1].CurrentRegion
arr2 = Sheet3.[A1].CurrentRegion
For i = 2 To UBound(arr1)
    d(arr1(i, 1)) = ""
Next
For i = 2 To UBound(arr2)
    d(arr2(i, 1)) = ""
Next
'--------------------------------------
Sheet4.Activate
Sheet4.Cells.ClearContents
tt1 = Application.Transpose(d.keys)
[A1] = "key"
[A2].Resize(UBound(tt1)) = tt1
'--------------------------------------
Set A = Range([A2], [A2].End(4))
For i = 1 To A.Cells.Count
    Set S = A.Cells(i)
    '----------------------------------
    For j = 2 To UBound(arr1)
        If S.Value = arr1(j, 1) Then
            S1 = Application.Index(arr1, j)
            S.Offset(, 1).Resize(, UBound(S1)) = S1
        End If
    Next
    '----------------------------------
    For j = 2 To UBound(arr2)
        If S.Value = arr2(j, 1) Then
            S1 = Application.Index(arr2, j)
            S.Offset(, UBound(arr1, 2) + 1).Resize(, UBound(S1)) = S1
        End If
    Next
    '----------------------------------
Next
'----------------------------------
ActiveSheet.Columns(2).EntireColumn.Delete
ActiveSheet.Columns(UBound(arr1, 2) + 1).EntireColumn.Delete
'----------------------------------
arr = Sheet4.[A1].CurrentRegion
For i = 1 To UBound(arr, 2) - 1
    With [A1]
        .Offset(, i) = "F" & i
    End With
Next
Application.ScreenUpdating = True
End Sub
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-4-28 04:51 , Processed in 0.047292 second(s), 13 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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