ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

[已解决] 跨工作簿引用数据无效,求检查完善代码

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-7-20 11:06 | 显示全部楼层 |阅读模式
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
本帖最后由 抹不去の回忆 于 2023-7-20 15:08 编辑

原理是这样:
       我想把文件夹中“订货单"这个工作薄表1里的“采购计划数量”,“仓库库存“这个工作簿表1里的“数量、售价”,匹配到在“自动请货表“这个工作薄表1对应的位置中。
第一步:我设想的是先把“总库存”的基础数据取到“自动请货表”表1对应位置
第二步:把“订货单”里需要的数据取到“自动请货表”表1对应位置
第二步:把“仓库库存”里需要的数据取到“自动请货表”表1对应位置

整个代码运行执行第二步、第三步查找不到相同数据,问题我自己大概找到了,是第一段代码取“商品编码”这列数据格式出问题了,导致无法进行匹配,请大神帮忙看看如何做优化,谢谢!

初学者,表述不清楚的地方请谅解一下!!!
这是第一段代码主要是用来把总库存这个表里需要的数据取到自动报货表里面来,但是取过来以后商品编码变了,比如003124,取过来以后变成了3124
Sub a() '自动提取采购计划数据
    Dim arr, colarr
     ph = ThisWorkbook.Path
    Workbooks.Open ph & "\总库存.xlsx"
    arr = ActiveWorkbook.Sheets("sheet1").Cells(1, 1).CurrentRegion
    Workbooks("总库存.xlsx").Close 0
    Workbooks("自动报货表.xlsm").Activate
    colarr = Application.WorksheetFunction.Index(arr, 0, 4)
    Sheet1.Range("a1").Resize(UBound(arr)) = colarr
    colarr = Application.WorksheetFunction.Index(arr, 0, 5)
    Sheet1.Range("b1").Resize(UBound(arr)) = colarr
   
    colarr = Application.WorksheetFunction.Index(arr, 0, 6)
    Sheet1.Range("c1").Resize(UBound(arr)) = colarr
   
    colarr = Application.WorksheetFunction.Index(arr, 0, 7)
    Sheet1.Range("D1").Resize(UBound(arr)) = colarr
   
    colarr = Application.WorksheetFunction.Index(arr, 0, 9)
    Sheet1.Range("e1").Resize(UBound(arr)) = colarr
   
    colarr = Application.WorksheetFunction.Index(arr, 0, 10)
    Sheet1.Range("I1").Resize(UBound(arr)) = colarr
End Sub

这是第二段代码
第一段代码执行完成后,就有了基础资料,然后根据“自动报货表”和“订货单”里面的商品编码做循环遍历,从“订货单”里面把计划数量(16列)赋值到自动报货表的11列
Sub b()
  Dim arr, ph
     ph = ThisWorkbook.Path
    Workbooks.Open ph & "\订货单.xlsx"
    arr = ActiveWorkbook.Sheets("sheet1").Cells(1, 1).CurrentRegion
    Workbooks("订货单.xlsx").Close 0
    Workbooks("自动报货表.xlsm").Activate
  
    h = Range("A65536").End(xlUp).Row
   
    For j = 2 To h
        For i = 1 To UBound(arr)
            If Cells(j, 1) = arr(i, 4) Then
                Cells(j, 11) = arr(i, 16)
               
            End If
            
        Next i
        Next j
End Sub
Sub c()
  Dim arr, ph
     ph = ThisWorkbook.Path
    Workbooks.Open ph & "\仓库库存.xlsx"
    arr = ActiveWorkbook.Sheets("sheet1").Cells(1, 1).CurrentRegion
    Workbooks("仓库库存.xlsx").Close 0
    Workbooks("自动报货表.xlsm").Activate
  
    h = Range("A65536").End(xlUp).Row
   
    For j = 2 To h
        For i = 1 To UBound(arr)
            If Cells(j, 1) = arr(i, 3) Then
                Cells(j, 6) = arr(i, 12)
              
            End If
            
        Next i
        Next j
End Sub

求助完善代码.rar

1.2 MB, 下载次数: 8

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-20 11:38 | 显示全部楼层
主要问题应该是出在第一段代码,取过来的商品编码格式变了,后续代码执行都需要用到商品编码来做循环遍历,导致无法正确取值。

TA的精华主题

TA的得分主题

发表于 2023-7-20 11:50 | 显示全部楼层
看不懂结果表对应的哪个表的数据,应该模拟几个数据,并说明取值于哪个表哪一个字段列

TA的精华主题

TA的得分主题

发表于 2023-7-20 11:51 | 显示全部楼层

TA的精华主题

TA的得分主题

发表于 2023-7-20 11:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
图片.png 建议转为字符串才能保证格式

TA的精华主题

TA的得分主题

发表于 2023-7-20 11:59 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-7-20 12:12 | 显示全部楼层
feilanga 发表于 2023-7-20 11:50
看不懂结果表对应的哪个表的数据,应该模拟几个数据,并说明取值于哪个表哪一个字段列

在自动报货这个表里面执行一下模块6里面的代码,您应该就能明白我意思了
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

GMT+8, 2024-11-17 04:33 , Processed in 0.031219 second(s), 8 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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