ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

VBA常用技巧代码解析

    [复制链接]

TA的精华主题

TA的得分主题

发表于 2018-3-22 21:37 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖已被收录到知识树中,索引项:开发帮助和教程
楼主辛苦了,感谢分享。

TA的精华主题

TA的得分主题

发表于 2018-3-24 09:16 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-3-24 16:25 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
感谢楼主分享!

TA的精华主题

TA的得分主题

发表于 2018-3-26 13:10 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-3-26 14:48 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-3-27 10:24 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-3-27 12:09 | 显示全部楼层
本帖最后由 lrh788 于 2018-3-27 12:37 编辑

以下代码是根据汇总中a:d列数据在订单中查找并将订单对应的E--I列值返回到汇总对应的E--I列。请将下列公式用VBA代码来实现=LOOKUP(1,0/(a2&b2&c2&d2=订单!$a$2:$a$20000000&订单!$b$2:$b$20000000&订单!$c$2:$c$20000000&订单!$d$2:$d$20000000),订单!$e$2:$e$20000000)
我的附件只是举例说明,但我的正式数据每张表超过100万行,请老师修改哈!Sub aa()
Set d = CreateObject("Scripting.Dictionary")
ar = Sheets("订单").Cells(1, 1).CurrentRegion
    For i = 2 To UBound(ar)
        ar(i, 1) = ar(i, 1) & ar(i, 2) & ar(i, 3) & ar(i, 4)
        For j = 5 To UBound(ar, 2)
            d(ar(i, 1) & ar(1, j)) = d(ar(i, 1) & ar(1, j)) & ar(i, j)
        Next j
    Next i
br = Cells(1, 1).CurrentRegion
ReDim br1(1 To UBound(br), 1 To 1)
    For i = 2 To UBound(br)
        br1(i, 1) = br(i, 1) & br(i, 2) & br(i, 3) & br(i, 4)
        For j = 5 To UBound(br, 2)
            br(i, j) = d(br1(i, 1) & br(1, j))
            Cells(i, j) = br(i, j)
        Next j
    Next i
End Sub
此代码已基本实现我的意图,但还需改进:1.原代码要求汇总与订单两表表头字段必须一致,能否不管表头允许两表头字段不一致;;2.能否实现根据满足条件在订单表要取的列值填写到汇总表任意指定列;3.如在汇总表第四、五列有订单表中没有的列,运行代码后不要清除,自动把要取的值放没有列值的后一列或放到当中任意指定列。最好能同时实现上面三点要求!
我的原表是这样的,查找表(10余万人)中A\B\C列分别为姓名、出生年月、身份证,另外表为人口数据库(100余万人),A\B\C\D列分别为姓名、出生年月、身份证、地址,我的目的是:1、通过查找表中姓名、出生年月、身份证,在人口数据库表中查找与之姓名、出生年月、身份证同时相同时提取其对应的家庭地址;2、通过查找表中姓名、出生年月,在人口数据库表中查找与之姓名、出生年月同时相同时提取其对应的身份证。二者可不同时实现,可通过修改代码单独实现。
此代吗数据量在几万时还行,但超过10万就慢了,等到最后还时常报错!能否优化代码?减少循环语句?请版主大师完善下,急用!!!

订单.rar

79.85 KB, 下载次数: 9

TA的精华主题

TA的得分主题

发表于 2018-3-27 14:18 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
jjjjjjjjjjjjjjjjjjjjjjjjjjjjj

TA的精华主题

TA的得分主题

发表于 2018-3-31 02:44 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2018-3-31 11:21 | 显示全部楼层
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-5-18 22:57 , Processed in 0.051695 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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