ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[求助] 运用VBA跨工作簿填充相应数据

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-7-3 17:31 | 显示全部楼层 |阅读模式
求各位大神帮帮忙!小妹在此先感谢你们!求VBA代码,能一键完成下面的需求:有一个"tool.csv "为原数据,根据checklist把“current value"和”result"数据填到"checkbook.XLS"相应的项中。想要的效果的也放在里面了。谢谢谢谢!!!!感激不尽!!!

1,tool.csv

8E5637D03F7A09.jpg

2,最终填进checkbook里的效果图。根据checklist 把对应的“current value"和”result"数据填到里面去。
C43FFFAC04D3DA.jpg


3,注意的点是:(1)checkist 列里面包含多个checklist,要把符合要求的都以分行格填在同一个单元格里。
                      (2)checklist 可能对应多行的current value,要以分行格全填在同一单元格了。
book.zip (25.93 KB, 下载次数: 7)




TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-4 11:35 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
请老师们帮帮忙,跪谢!

TA的精华主题

TA的得分主题

发表于 2018-7-4 20:28 | 显示全部楼层
这样试试吧

book.zip

35.79 KB, 下载次数: 8

TA的精华主题

TA的得分主题

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

谢谢您的帮忙,但是我按了按钮后,在这一栏里据出现了错误,求解!谢谢!

Capture.PNG

TA的精华主题

TA的得分主题

发表于 2018-7-5 11:29 | 显示全部楼层
不知为何你的代码打开汉字是乱码
换个不同操作系统的计算机试试呢

  1. Sub check()
  2. 'http://club.excelhome.net/thread-1422774-1-3.html
  3. Application.ScreenUpdating = flase
  4. Dim arr, d1, d2
  5. Set d1 = CreateObject("scripting.dictionary")
  6. Set d2 = CreateObject("scripting.dictionary")
  7. With GetObject(ThisWorkbook.Path & "\tool.csv")
  8.    arr = .Sheets("tool").UsedRange
  9.    .Close False
  10. End With
  11. For i = 2 To UBound(arr)
  12.    If Not d1.exists(arr(i, 5)) Then
  13.       d1(arr(i, 5)) = arr(i, 9)
  14.    Else
  15.       d1(arr(i, 5)) = d1(arr(i, 5)) & Chr(10) & arr(i, 9)
  16.    End If
  17.       If Not d2.exists(arr(i, 5)) Then
  18.       d2(arr(i, 5)) = arr(i, 10)
  19.    Else
  20.       d2(arr(i, 5)) = d2(arr(i, 5)) & Chr(10) & arr(i, 10)
  21.    End If
  22. Next
  23. arr = Sheets("检查表").Range("j2:n" & Sheets("检查表").[n65536].End(3).Row)
  24. For i = 1 To UBound(arr)
  25.    If InStr(arr(i, 5), Chr(10)) Then
  26.       tmp = Split(arr(i, 5), Chr(10))
  27.       For j = 0 To UBound(tmp)
  28.          If d1.exists(tmp(j)) Then
  29.             If arr(i, 1) = "" Then
  30.                arr(i, 1) = d1(tmp(j))
  31.             Else
  32.                arr(i, 1) = arr(i, 1) & Chr(10) & d1(tmp(j))
  33.             End If
  34.          End If
  35.          If d2.exists(tmp(j)) Then
  36.             If arr(i, 2) = "" Then
  37.                arr(i, 2) = d2(tmp(j))
  38.             Else
  39.                arr(i, 2) = arr(i, 2) & Chr(10) & d2(tmp(j))
  40.             End If
  41.          End If
  42.       Next
  43.    Else
  44.       If d1.exists(arr(i, 5)) Then
  45.             If arr(i, 1) = "" Then
  46.                arr(i, 1) = d1(arr(i, 5))
  47.             Else
  48.                arr(i, 1) = arr(i, 1) & Chr(10) & d1(arr(i, 5))
  49.             End If
  50.          End If
  51.          If d2.exists(arr(i, 5)) Then
  52.             If arr(i, 2) = "" Then
  53.                arr(i, 2) = d2(arr(i, 5))
  54.             Else
  55.                arr(i, 2) = arr(i, 2) & Chr(10) & d2(arr(i, 5))
  56.             End If
  57.          End If
  58.    End If
  59. Next

  60. Sheets("检查表").Range("j2").Resize(UBound(arr), UBound(arr, 2)) = arr
  61. Application.ScreenUpdating = True
  62. End Sub
复制代码

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-5 14:33 | 显示全部楼层
yaojil 发表于 2018-7-5 11:29
不知为何你的代码打开汉字是乱码
换个不同操作系统的计算机试试呢

我把中文改成英文,可以运行,刚试了一下好像没有问题了!我激动啊!这省了好多力气啊!谢谢谢谢!!!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-7-12 15:23 | 显示全部楼层
yaojil 发表于 2018-7-5 11:29
不知为何你的代码打开汉字是乱码
换个不同操作系统的计算机试试呢

大师,请问如果我想用包含“Report”这个字眼的文件,比如"123Report.csv",这个 With GetObject(ThisWorkbook.Path & "\tool.csv")应该怎样修改呢
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2025-1-9 00:13 , Processed in 0.039011 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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