工作表查询数据代码

Private Sub Worksheet_Change(ByVal Target As Range)
    Dim nRow%, Arr(), Brr(), nYue%, m%
    Dim ds As Object, n%
    Set ds = CreateObject("Scripting.Dictionary")
    If Target.Address <> "$H$2" Then Exit Sub
    nYue = Val(Target.Value)
    With Sheets("设置")
        Brr = .Range("e1").CurrentRegion.Value
        For i = 1 To UBound(Brr)
            ds(Brr(i, 2)) = Brr(i, 1)
        Next
        Brr = .Range("i1").CurrentRegion.Value
        For i = 1 To UBound(Brr)
            ds(Left(Brr(i, 2), 2)) = Brr(i, 1) '品牌取前2个字,不知有没有问题
        Next
    End With
    With Sheets("数据")
        nRow = .Range("a1048576").End(xlUp).Row
        Arr = .Range("a1:i" & nRow).Value
    End With
    For i = 2 To nRow
        If Month(Arr(i, 1)) = nYue And ds(Arr(i, 3)) And ds(Left(Arr(i, 6), 2)) Then
            n = ds("_" & Arr(i, 3))
            If n = 0 Then
                m = m + 1
                n = m
                ds("_" & Arr(i, 3)) = m
                Arr(n, 1) = Arr(i, 3)
            End If
            Arr(n, 2) = Val(Arr(n, 2)) + Arr(i, 7)
            Arr(n, 4) = Val(Arr(n, 4)) + Arr(i, 9)
        End If
    Next
    For i = 1 To m
        Arr(i, 3) = Arr(i, 4) / Arr(i, 2)
    Next
    Application.EnableEvents = False
    With Me
        nRow = .Range("g1048576").End(xlUp).Row
        If nRow > 3 Then .Range("f4:j" & nRow).ClearContents
        If m > 0 Then
            .Range("g4").Resize(m, 4).Value = Arr
        End If
    End With
    Application.EnableEvents = True
End Sub

  • 3
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

豪情云天

您的鼓励就是创作的最大动力!

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值