Excel精英培训网

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

[已解决]跨工作薄导入数据

[复制链接]
发表于 2014-12-23 16:09 | 显示全部楼层 |阅读模式
本帖最后由 salt 于 2014-12-23 21:35 编辑

请老师帮忙修改一下代码,导入汇总表里的数据从E3到J386,现在的代码只能导入单列数据,此代码也是从论坛里搜的,谢谢
最佳答案
2014-12-23 20:28
Sub Macro2()
On Error Resume Next
Dim arr, brr, crr, d, wb As Workbook, i&, j%
Set d = CreateObject("scripting.dictionary")
arr = Range("a1").CurrentRegion
ReDim brr(1 To UBound(arr) - 2, 1 To 5)
Application.ScreenUpdating = False
wj = Application.GetOpenFilename
If wj <> False Then Set wb = GetObject(wj)
crr = wb.Sheets(1).Range("a1").CurrentRegion
wb.Close 0
For i = 4 To UBound(crr)
    z = crr(i, 2) & "," & crr(i, 3) & "," & crr(i, 4)
    For j = 5 To 9
        zf = z & "," & crr(3, j)
        d(zf) = d(zf) + crr(i, j)
    Next
Next
For i = 3 To UBound(arr)
    z = arr(i, 2) & "," & arr(i, 3) & "," & arr(i, 4)
    For j = 5 To 9
        zf = z & "," & arr(2, j)
        brr(i - 2, j - 4) = d(zf)
    Next
Next
Range("e3").Resize(UBound(brr), 5) = brr
Application.ScreenUpdating = True
End Sub

求助.zip

160.6 KB, 下载次数: 17

请老师帮忙修改一下代码,导入汇总表里的数据从E3到J386,现在的代码只能导入单列数据

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-12-23 16:45 | 显示全部楼层
两表标题必须对应,建议重新模拟附件
回复

使用道具 举报

 楼主| 发表于 2014-12-23 16:55 | 显示全部楼层
dsmch 发表于 2014-12-23 16:45
两表标题必须对应,建议重新模拟附件

老师标题修改了,你看是这样的吗?

求助.zip

160.49 KB, 下载次数: 11

回复

使用道具 举报

发表于 2014-12-23 17:16 | 显示全部楼层
  1. Sub Macro2()
  2. Dim arr, brr, crr, d, wb As Workbook, i&, j%
  3. Set d = CreateObject("scripting.dictionary")
  4. arr = Range("a1").CurrentRegion
  5. ReDim brr(1 To UBound(arr) - 2, 1 To 5)
  6. Application.ScreenUpdating = False
  7. Set wb = GetObject(ThisWorkbook.Path & "\汇总表.xls")
  8. crr = wb.Sheets(1).Range("a1").CurrentRegion
  9. wb.Close 0
  10. For i = 4 To UBound(crr)
  11.     z = crr(i, 2) & "," & crr(i, 3) & "," & crr(i, 4)
  12.     For j = 5 To 9
  13.         zf = z & "," & crr(3, j)
  14.         d(zf) = d(zf) + crr(i, j)
  15.     Next
  16. Next
  17. For i = 3 To UBound(arr)
  18.     z = arr(i, 2) & "," & arr(i, 3) & "," & arr(i, 4)
  19.     For j = 5 To 9
  20.         zf = z & "," & arr(2, j)
  21.         brr(i - 2, j - 4) = d(zf)
  22.     Next
  23. Next
  24. Range("e3").Resize(UBound(brr), 5) = brr
  25. Application.ScreenUpdating = True
  26. End Sub
复制代码
回复

使用道具 举报

 楼主| 发表于 2014-12-23 17:42 | 显示全部楼层
dsmch 发表于 2014-12-23 17:16

老师,能否在不同的文件夹里选择汇总表导入。谢谢
回复

使用道具 举报

发表于 2014-12-23 20:28 | 显示全部楼层    本楼为最佳答案   
Sub Macro2()
On Error Resume Next
Dim arr, brr, crr, d, wb As Workbook, i&, j%
Set d = CreateObject("scripting.dictionary")
arr = Range("a1").CurrentRegion
ReDim brr(1 To UBound(arr) - 2, 1 To 5)
Application.ScreenUpdating = False
wj = Application.GetOpenFilename
If wj <> False Then Set wb = GetObject(wj)
crr = wb.Sheets(1).Range("a1").CurrentRegion
wb.Close 0
For i = 4 To UBound(crr)
    z = crr(i, 2) & "," & crr(i, 3) & "," & crr(i, 4)
    For j = 5 To 9
        zf = z & "," & crr(3, j)
        d(zf) = d(zf) + crr(i, j)
    Next
Next
For i = 3 To UBound(arr)
    z = arr(i, 2) & "," & arr(i, 3) & "," & arr(i, 4)
    For j = 5 To 9
        zf = z & "," & arr(2, j)
        brr(i - 2, j - 4) = d(zf)
    Next
Next
Range("e3").Resize(UBound(brr), 5) = brr
Application.ScreenUpdating = True
End Sub
回复

使用道具 举报

 楼主| 发表于 2014-12-23 21:34 | 显示全部楼层

同时提取文件夹里工作薄和仓库出库结算汇总表里的数据

本帖最后由 salt 于 2014-12-25 10:12 编辑
dsmch 发表于 2014-12-23 20:28
Sub Macro2()
On Error Resume Next
Dim arr, brr, crr, d, wb As Workbook, i&, j%

dsmch老师,请看附件,麻烦dsmch老师看看能否实现不,谢谢dsmch老师。同时提取文件夹里工作薄和仓库出库结算汇总表里的数据,自动在合计后面填充出库数量、单价,然后用出库数量减去合计后的值乘单价,填写金额。

求助.zip

169.9 KB, 下载次数: 6

同时提取文件夹里工作薄和仓库出库结算汇总表里的数据,自动在合计后面填充出库数量、单价,然后用出库数量 ...

点评

说明引用的具体范围,模拟结果,建议另开新帖求助  发表于 2014-12-25 12:45
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-24 22:37 , Processed in 0.718091 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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