Excel精英培训网

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

[已解决]VBA根据指定要求自动填充对应内容

[复制链接]
发表于 2017-3-16 16:01 | 显示全部楼层 |阅读模式
各位老师大家好,我有一工作薄,原先用的是公式的,数据量越来越多后运行很慢很慢,甚至停止不前了,卡了,能否使用VBA功能解决?要求是,当我在Sheet2表从单元格E3开始输入内容后,把Sheet1表列A内容与Sheet2表从单元格E3内容相同时,同行D列单元格内容和I列单元格内容自动填充到Sheet2表从单元格E3同行的F列和G列中,从E3单元格开始可使用至最末一行,请哪位老师帮忙啊!
最佳答案
2017-3-16 16:25
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Row < 3 Or Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
  3.     Application.EnableEvents = False
  4.     If Len(Target) = 0 Then Target.EntireRow = ""
  5.     arr = Sheet1.[a1].CurrentRegion
  6.     Set d = CreateObject("scripting.dictionary")
  7.     For i = 2 To UBound(arr)
  8.         d(CStr(arr(i, 1))) = i
  9.     Next
  10.     i = d(CStr(Target.Value))
  11.     If i > 0 Then
  12.         Target.Offset(, 1) = arr(i, 4)
  13.         Target.Offset(, 2) = arr(i, 9)
  14.     End If
  15.     Application.EnableEvents = True
  16. End Sub
复制代码

Book1.rar

342.99 KB, 下载次数: 15

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-3-16 16:15 | 显示全部楼层
卡不是公式的问题,是你文件本身的问题,这就是一个简单的VLOOKP问题,不会卡的,你看看你的文件大小就知道了,你传的附件就那么几行数据压缩前就3.6M的大小,所以...
回复

使用道具 举报

发表于 2017-3-16 16:17 | 显示全部楼层
你要做的只是文件瘦身,不是用VBA来实现你的查询功能,完全没必要。10000行数据差不多1M大小,你看看你有3、4万行数据吗?
回复

使用道具 举报

发表于 2017-3-16 16:19 | 显示全部楼层
你多次操作,往后不停的会有增添删减的操作,还是用函数,比如vlookup。
如果你是一次操作的,代码会有优势。
建议你还是用函数。
回复

使用道具 举报

发表于 2017-3-16 16:25 | 显示全部楼层    本楼为最佳答案   
  1. Private Sub Worksheet_Change(ByVal Target As Range)
  2.     If Target.Row < 3 Or Target.Column <> 5 Or Target.Count > 1 Then Exit Sub
  3.     Application.EnableEvents = False
  4.     If Len(Target) = 0 Then Target.EntireRow = ""
  5.     arr = Sheet1.[a1].CurrentRegion
  6.     Set d = CreateObject("scripting.dictionary")
  7.     For i = 2 To UBound(arr)
  8.         d(CStr(arr(i, 1))) = i
  9.     Next
  10.     i = d(CStr(Target.Value))
  11.     If i > 0 Then
  12.         Target.Offset(, 1) = arr(i, 4)
  13.         Target.Offset(, 2) = arr(i, 9)
  14.     End If
  15.     Application.EnableEvents = True
  16. End Sub
复制代码

Book1.rar

347.24 KB, 下载次数: 146

回复

使用道具 举报

发表于 2017-3-16 16:26 | 显示全部楼层
他的文件里面数据虽然不多,但条件格式,有效性很多,很占空间。
回复

使用道具 举报

发表于 2017-3-16 16:36 | 显示全部楼层
非要代码的话,循环数组到符合就赋值然后就退出也比字典快啊。
回复

使用道具 举报

 楼主| 发表于 2017-3-16 20:25 | 显示全部楼层

你好,很好用,方便了很多,但这些代码看着眼花,能否帮我注释一下每行代码的意思吗?谢谢啦!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 19:30 , Processed in 0.781433 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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