Excel精英培训网

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

用字典的方式根据条件替换相应内容

[复制链接]
发表于 2019-10-13 18:36 | 显示全部楼层 |阅读模式
如附件所示,求助

用字典的方式根据条件替换相应内容.rar

8.75 KB, 下载次数: 29

发表于 2019-10-13 19:25 | 显示全部楼层
  1. 如果是上百万行,字典也没用,用数据库更新语句处理吧
复制代码
回复

使用道具 举报

发表于 2019-10-13 22:17 | 显示全部楼层
你这是想当然吧,如果是黄色区域有成百上千行或更多,字典会很节省时间。但如果是绿色区域很多而黄色区域很少(不超过200行),字典的意义就不大,数组也可以的。尽管如此,我还是给你写一个字典代码,但是字典是对黄色区域的,因为绿色区域总归是要扫描一次的,用字典是多余:
Dim zd As Object
Set zd = CreateObject("scripting.dictionary")
For i = 2 To [f1000000].End(3).Row
    zd(Cells(i, 6).Value & Cells(i, 7).Value) = Cells(i, 8)
Next i
For i = 2 To [a1000000].End(3).Row
    s = Cells(i, 1) & Cells(i, 2)
    If zd.exists(s) Then
       Cells(i, 3) = zd(s)
    End If
Next i

评分

参与人数 1学分 +2 收起 理由
1005423860 + 2

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-10-14 10:21 | 显示全部楼层
hfwufanhf2006 发表于 2019-10-13 22:17
你这是想当然吧,如果是黄色区域有成百上千行或更多,字典会很节省时间。但如果是绿色区域很多而黄色区域很 ...

好的,我去试试。。
回复

使用道具 举报

 楼主| 发表于 2019-10-14 10:42 | 显示全部楼层
hfwufanhf2006 发表于 2019-10-13 22:17
你这是想当然吧,如果是黄色区域有成百上千行或更多,字典会很节省时间。但如果是绿色区域很多而黄色区域很 ...

您好,我还想再加一个功能,就是mxgbox 本次替换总共替换的数量 ,能达到 “本次共替换****个数据”,这个应该怎么写啊。。
回复

使用道具 举报

发表于 2019-10-14 11:09 | 显示全部楼层
1005423860 发表于 2019-10-14 10:42
您好,我还想再加一个功能,就是mxgbox 本次替换总共替换的数量 ,能达到 “本次共替换****个数据”,这 ...

加一个计数器变量,比如(局部代码):js=0     '初始化计数器为0

For i = 2 To [a1000000].End(3).Row
    s = Cells(i, 1) & Cells(i, 2)
    If zd.exists(s) Then
       Cells(i, 3) = zd(s)
       js=js+1    '每替换一个,计数器+1
    End If
Next i

MsgBox "本次共替换了 " & js & " 个数据"


回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 03:54 , Processed in 0.314577 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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