Excel精英培训网

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

匹配相同的给予赋值 能用字典来完成吗?敬请老师们赐教。谢谢!

[复制链接]
发表于 2019-10-14 11:11 | 显示全部楼层 |阅读模式
各位老师好!
            表2的A:B列与表1的A:B列匹配,如果相同者,根据表2的G1动态值,插入表1的C:E列对应的项目类值。
    字典对我来说还很迷糊,想学学字典,敬请老师们用字典方法赐教。本人先叩谢啦!!

匹配相同后取值.zip

12.29 KB, 下载次数: 2

发表于 2019-10-14 11:42 | 显示全部楼层
QQ截图20191014113431.jpg


Sub test()
    Dim A, d, i, j, k
    Set d = CreateObject("scripting.dictionary")

    '1)写入字典
    Sheets(1).Select
    i = Range("a65536").End(xlUp).Row
    A = Range("a1:e" & i)
    For i = 3 To UBound(A)
        For j = 3 To UBound(A, 2)
            k = A(i, 1) & "," & A(i, 2) & "," & A(2, j)
            d(k) = A(i, j)
        Next j
    Next i

    '2)读取字典
    Sheets(2).Select
    i = Range("a65536").End(xlUp).Row
    A = Range("a1:c" & i)
    For i = 4 To UBound(A)
        k = A(i, 1) & "," & A(i, 2) & "," & A(2, 3)
        A(i, 3) = d(k)
    Next i
    [c4:c65536] = ""
    Range("A1").Resize(UBound(A), UBound(A, 2)) = A

End Sub

1.rar (17.71 KB, 下载次数: 5)

评分

参与人数 1学分 +2 收起 理由
wtb8150 + 2 谢谢赐教!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-10-14 12:01 | 显示全部楼层
谢谢超级版主老师!
真够神速的,立马给予赐教,真是感激!谢谢您的赐教!谢谢!!
                  
              
     

回复

使用道具 举报

 楼主| 发表于 2019-10-14 12:22 | 显示全部楼层
有一个小问题,斗胆问一问老师。
      1、 执行代码后覆盖了表2并插入了对应值,这没错。能不能只插入对应值到表2的C列而不覆盖?
      2、能不能按照表2 G1的动态值来插入表1 的动态C:E列的值?
谢谢赐教!
回复

使用道具 举报

 楼主| 发表于 2019-10-14 12:54 | 显示全部楼层
本帖最后由 wtb8150 于 2019-10-14 12:55 编辑

不知是我的理解有误还是怎么的,每次执行时表2的C列好像都没有更新,原来是什么数据仍是什么数据。敬请老师指教!谢谢!
回复

使用道具 举报

发表于 2019-10-14 15:06 | 显示全部楼层
2.rar (17.22 KB, 下载次数: 1)

评分

参与人数 1学分 +2 收起 理由
wtb8150 + 2 谢谢老师赐教!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2019-10-14 15:21 | 显示全部楼层
谢谢超级版主老师!感谢您的热情指教!
动态插入我已经调好,能按表2的G1动态值插入表1对应值。这次在老师的赐教下明白了许多。
至于覆盖我的意思是只在表2的C列覆盖不知可行否。其实这样也很好。
谢谢老师热心赐教!谢谢!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-27 00:21 , Processed in 0.269322 second(s), 8 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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