Excel精英培训网

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

[已解决]按条件提取日期及数量

[复制链接]
发表于 2016-4-17 11:33 | 显示全部楼层 |阅读模式
求助.zip (9.86 KB, 下载次数: 6)
excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2016-4-17 12:00 | 显示全部楼层
Sub test()
    Dim A, B, d, i, j, c
    Set d = CreateObject("scripting.dictionary")
    For j = 2 To 3
        A = Sheets(j).UsedRange: c = UBound(A, 2)
        For i = 1 To UBound(A)
            d(A(i, c - 1)) = d(A(i, c - 1)) & A(i, c)
        Next i
    Next j

    A = Sheets(1).Range("b3").CurrentRegion
    For i = 2 To UBound(A)
        A(i, 2) = 0
        B = VBA.Split(d(A(i, 1)), "块")
        For j = 0 To UBound(B) - 1
            A(i, 2) = A(i, 2) + B(j)
        Next j
    Next i
    [b3].Resize(i - 1, 2) = A
End Sub

求助2.rar (14.21 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2016-4-17 12:05 | 显示全部楼层
Sub test2()
    Dim A, B, d, i, j, c, str
    Set d = CreateObject("scripting.dictionary")
    For j = 2 To 3
        A = Sheets(j).UsedRange: c = UBound(A, 2)
        For i = 1 To UBound(A)
            d(A(i, c - 1)) = d(A(i, c - 1)) & A(i, c)
        Next i
    Next j

    Sheets(1).Activate
    A = Range("b3").CurrentRegion
    For i = 2 To UBound(A)
        A(i, 2) = 0
        str = d(A(i, 1))
        str = VBA.Replace(str, "块", ",")
        str = VBA.Replace(str, "套", ",")
        B = VBA.Split(str, ",")
        For j = 0 To UBound(B) - 1
            A(i, 2) = A(i, 2) + B(j)
        Next j
    Next i
    [b3].Resize(i - 1, 2) = A
End Sub

求助3.rar (13.74 KB, 下载次数: 2)
回复

使用道具 举报

 楼主| 发表于 2016-4-17 12:06 | 显示全部楼层
爱疯 发表于 2016-4-17 12:00
Sub test()
    Dim A, B, d, i, j, c
    Set d = CreateObject("scripting.dictionary")

你好,我想要的是每次的数量 及日期
回复

使用道具 举报

发表于 2016-4-17 12:13 | 显示全部楼层    本楼为最佳答案   
Sub test()
    Dim A, B, d1, i, j, c, str
    Set d1 = CreateObject("scripting.dictionary")
    Set d2 = CreateObject("scripting.dictionary")
    For j = 2 To 3
        A = Sheets(j).UsedRange: c = UBound(A, 2)
        For i = 1 To UBound(A)
            d1(A(i, c - 1)) = d1(A(i, c - 1)) & A(i, c)
            d2(A(i, c - 1)) = d2(A(i, c - 1)) & ", " & A(i, 1)
        Next i
    Next j

    Sheets(1).Activate
    A = Range("b3").CurrentRegion
    For i = 2 To UBound(A)
        A(i, 2) = 0
        str = d1(A(i, 1))
        str = VBA.Replace(str, "块", ",")
        str = VBA.Replace(str, "套", ",")
        B = VBA.Split(str, ",")
        For j = 0 To UBound(B) - 1
            A(i, 2) = A(i, 2) + B(j)
        Next j
        A(i, 3) = Mid(d2(A(i, 1)), 3)
    Next i
    [b3].Resize(UBound(A), UBound(A, 2)) = A
End Sub

求助4.rar (13.21 KB, 下载次数: 20)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 10:59 , Processed in 0.347244 second(s), 10 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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