Excel精英培训网

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

[已解决]选定文件获取数据

[复制链接]
发表于 2022-8-22 16:13 | 显示全部楼层 |阅读模式
本帖最后由 lsyong 于 2022-8-24 11:18 编辑

请老师帮忙写一下代码,实现下面功能
工作表“DB” ,从第4行开始,根据下面关系,右边的  I 列 到 P 列, 获取对应的数据。

E:\FP-MO\MO-A\文件夹内 有工作表"DB"

F:\2022年MO\MO\文件夹内 有 PKG220615.xlsx  工作表"PKG"

当工作表“DB”  B列 ,D 列  等于  工作表"PKG" B 列 , C 列  时

工作表"DB"  I 列=工作表"PKG"  D 列
工作表"DB"  J 列=工作表"PKG"  E 列
工作表"DB"  K 列=工作表"PKG"  F 列
工作表"DB"  L 列=工作表"DB"  E 列 大于等于工作表"PKG"  G 列时,等于作表"PKG"  G 列,工作表"DB"  E 列 小于工作表"PKG"  G 列时,等于工作表"DB"  E 列。
工作表"DB"  M 列=取整(工作表"DB"  E 列 /工作表"PKG"  I 列)
工作表"DB"  N 列=向上取整(工作表"DB"  E 列 /工作表"PKG"  I 列)
工作表"DB"  O 列=工作表"DB"  E 列 大于等于工作表"PKG"  I 列时,等于工作表"PKG"  I 列,工作表"DB"  E 列 小于工作表"PKG"  I 列时,等于工作表"DB"  E 列
工作表"DB"  P 列=取整(工作表"DB"  E 列 /工作表"PKG"  I 列)

最佳答案
2022-8-24 12:35
本帖最后由 我行我速2008 于 2022-8-24 12:38 编辑

简单写了下,可能有误!文件地址请自行修改。

Sub 拷贝()
    Dim d As Object
    Dim Wb As Workbook
    Dim Sh As Worksheet
    Dim Ar, Br, R, f, X, K
    Set d = CreateObject("scripting.dictionary")
    Set Sh = ActiveSheet
    f = Dir(ThisWorkbook.Path & "\PKG220616.xlsx")
    If f = "" Then MsgBox "【PKG220616】文件不存在": Exit Sub
    Set Wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)
    With Wb.Worksheets("PKG")
        Ar = .Range("A1:S" & .Cells(Rows.Count, 2).End(xlUp).Row)
        For R = 1 To UBound(Ar)
            d(Ar(R, 2) & "-" & Ar(R, 3)) = R
        Next R
    End With
    With Sh
        Br = Sh.[a1].CurrentRegion
        For X = 4 To UBound(Br)
            If d.exists(Br(X, 2) & "-" & Br(X, 4)) Then
                K = d(Br(X, 2) & "-" & Br(X, 4))
                Br(X, 9) = Ar(K, 4): Br(X, 10) = Ar(K, 5): Br(X, 11) = Ar(K, 6)
                If Br(X, 5) < Ar(K, 7) Then Br(X, 12) = Br(X, 5) Else Br(X, 12) = Ar(K, 7)
                Br(X, 13) = Int(Br(X, 5) / Ar(K, 9))
                Br(X, 14) = Application.RoundUp(Br(X, 5) / Ar(K, 9), 0)
                If Br(X, 5) < Ar(K, 9) Then Br(X, 15) = Br(X, 5) Else Br(X, 15) = Ar(K, 9)
                Br(X, 16) = Int(Br(X, 5) / Ar(K, 9))
            End If
        Next X
    End With
    Wb.Close True
    Sh.[a1].CurrentRegion = Br
    Set Wb = Nothing
    Set Sh = Nothing
End Sub

DGD.zip

47.16 KB, 下载次数: 5

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2022-8-23 19:13 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2022-8-24 11:19 | 显示全部楼层
我行我速2008 发表于 2022-8-23 19:13
附件都没有,让人如何帮你。

不好意思,忘了,现在补上了。

DGD.zip

47.16 KB, 下载次数: 1

回复

使用道具 举报

发表于 2022-8-24 12:35 | 显示全部楼层    本楼为最佳答案   
本帖最后由 我行我速2008 于 2022-8-24 12:38 编辑

简单写了下,可能有误!文件地址请自行修改。

Sub 拷贝()
    Dim d As Object
    Dim Wb As Workbook
    Dim Sh As Worksheet
    Dim Ar, Br, R, f, X, K
    Set d = CreateObject("scripting.dictionary")
    Set Sh = ActiveSheet
    f = Dir(ThisWorkbook.Path & "\PKG220616.xlsx")
    If f = "" Then MsgBox "【PKG220616】文件不存在": Exit Sub
    Set Wb = Workbooks.Open(ThisWorkbook.Path & "\" & f)
    With Wb.Worksheets("PKG")
        Ar = .Range("A1:S" & .Cells(Rows.Count, 2).End(xlUp).Row)
        For R = 1 To UBound(Ar)
            d(Ar(R, 2) & "-" & Ar(R, 3)) = R
        Next R
    End With
    With Sh
        Br = Sh.[a1].CurrentRegion
        For X = 4 To UBound(Br)
            If d.exists(Br(X, 2) & "-" & Br(X, 4)) Then
                K = d(Br(X, 2) & "-" & Br(X, 4))
                Br(X, 9) = Ar(K, 4): Br(X, 10) = Ar(K, 5): Br(X, 11) = Ar(K, 6)
                If Br(X, 5) < Ar(K, 7) Then Br(X, 12) = Br(X, 5) Else Br(X, 12) = Ar(K, 7)
                Br(X, 13) = Int(Br(X, 5) / Ar(K, 9))
                Br(X, 14) = Application.RoundUp(Br(X, 5) / Ar(K, 9), 0)
                If Br(X, 5) < Ar(K, 9) Then Br(X, 15) = Br(X, 5) Else Br(X, 15) = Ar(K, 9)
                Br(X, 16) = Int(Br(X, 5) / Ar(K, 9))
            End If
        Next X
    End With
    Wb.Close True
    Sh.[a1].CurrentRegion = Br
    Set Wb = Nothing
    Set Sh = Nothing
End Sub

DGD.rar

51.99 KB, 下载次数: 7

评分

参与人数 1学分 +2 收起 理由
lsyong + 2 我和小伙伴都惊呆了

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-8-24 13:38 | 显示全部楼层
我行我速2008 发表于 2022-8-24 12:35
简单写了下,可能有误!文件地址请自行修改。

Sub 拷贝()

非常感谢,帮忙。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-29 23:32 , Processed in 0.182618 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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