Excel精英培训网

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

[已解决]按客户合计数量和重量

[复制链接]
发表于 2022-6-1 16:45 | 显示全部楼层 |阅读模式
按客户合计数量和重量
最佳答案
2022-6-2 11:33
Sub 统计()
    Dim Arr, Brr(), K
    Dim Rc%, X%
    Dim Num1 As Single
    Dim Num2 As Single
    Dim Dic
    Set Dic = CreateObject("scripting.dictionary")
    Arr = Sheet1.Range("A1").CurrentRegion
    ReDim Brr(1 To 10000, 1 To 5)
    K = 0
    For Rc = 2 To UBound(Arr)
        If Dic.Exists(Arr(Rc, 2)) Then
            Brr(Dic(Arr(Rc, 2)), 3) = Brr(Dic(Arr(Rc, 2)), 3) + Arr(Rc, 6)
            Brr(Dic(Arr(Rc, 2)), 4) = Brr(Dic(Arr(Rc, 2)), 4) + Arr(Rc, 7)
        Else
            K = K + 1
            Dic(Arr(Rc, 2)) = K
            Brr(K, 1) = K: Brr(K, 2) = Arr(Rc, 2)
            Brr(K, 3) = Arr(Rc, 6): Brr(K, 4) = Arr(Rc, 7)
        End If
        Num1 = Num1 + Arr(Rc, 6)
        Num2 = Num2 + Arr(Rc, 7)
    Next Rc
    With Sheet2
        .Range("A3:E10000").ClearContents
        .Range("A2:E10000").Borders.LineStyle = xlNone
        .Range("A3:E" & K + 2) = Brr
        .Cells(K + 3, 1) = "合  计"
        .Range(.Cells(K + 3, 1), Cells(K + 3, 2)).HorizontalAlignment = xlCenterAcrossSelection
        .Cells(K + 3, 3) = Num1
        .Cells(K + 3, 4) = Num2
        With .Range(.Cells(2, 1), .Cells(K + 3, 5)).Borders
          .LineStyle = xlContinuous
          .Weight = xlThin
          .ColorIndex = 3
        End With
    End With
End Sub

按客户合计数量和重量.zip

2.48 KB, 下载次数: 4

发表于 2022-6-1 17:09 | 显示全部楼层
标准求和公式:=SUMIF(入库!$B:$B,合计!$B3,入库!F:F)
右拉下拉。

按客户合计数量和重量.zip

7.48 KB, 下载次数: 1

回复

使用道具 举报

 楼主| 发表于 2022-6-1 17:14 | 显示全部楼层
limonet 发表于 2022-6-1 17:09
标准求和公式:=SUMIF(入库!$B:$B,合计!$B3,入库!F:F)
右拉下拉。

感谢帮助,数据少的话可以用函数解决,但是数据多的话客户也多,而且客户不是固定的,所以用代码比较方便点~
回复

使用道具 举报

发表于 2022-6-1 18:00 | 显示全部楼层
ruhong18 发表于 2022-6-1 17:14
感谢帮助,数据少的话可以用函数解决,但是数据多的话客户也多,而且客户不是固定的,所以用代码比较方便 ...

数据多用推荐用透视表。
回复

使用道具 举报

发表于 2022-6-1 23:36 | 显示全部楼层
本帖最后由 hasyh2008 于 2022-6-2 00:15 编辑

Sub 统计()
    Dim Arr, Brr(), K
    Dim Rc%, X%
    Dim Dic
    Set Dic = CreateObject("scripting.dictionary")
    Arr = Sheet1.Range("A1").CurrentRegion
    ReDim Brr(1 To 1000, 1 To 5)
    K = 0
    For Rc = 2 To UBound(Arr)
        If Dic.Exists(Arr(Rc, 2)) Then
            Brr(Dic(Arr(Rc, 2)), 3) = Brr(Dic(Arr(Rc, 2)), 3) + Arr(Rc, 6)
            Brr(Dic(Arr(Rc, 2)), 4) = Brr(Dic(Arr(Rc, 2)), 4) + Arr(Rc, 7)
        Else
            K = K + 1
            Dic(Arr(Rc, 2)) = K
            Brr(K, 1) = K: Brr(K, 2) = Arr(Rc, 2)
            Brr(K, 3) = Arr(Rc, 6): Brr(K, 4) = Arr(Rc, 7)
        End If
    Next Rc
    With Sheet2
        .Range("A3:E1000").ClearContents
        .Range("A3:E" & K + 2) = Brr
        .Cells(K + 3, 2) = "合  计"
        .Cells(K + 3, 3) = Application.Sum(.Range("C3:C" & K + 2))
        .Cells(K + 3, 4) = Application.Sum(.Range("D3:D" & K + 2))
    End With
End Sub



按客户合计数量和重量(20220601).rar

11.74 KB, 下载次数: 8

评分

参与人数 1学分 +2 收起 理由
ruhong18 + 2 学习了

查看全部评分

回复

使用道具 举报

发表于 2022-6-2 11:33 | 显示全部楼层    本楼为最佳答案   
Sub 统计()
    Dim Arr, Brr(), K
    Dim Rc%, X%
    Dim Num1 As Single
    Dim Num2 As Single
    Dim Dic
    Set Dic = CreateObject("scripting.dictionary")
    Arr = Sheet1.Range("A1").CurrentRegion
    ReDim Brr(1 To 10000, 1 To 5)
    K = 0
    For Rc = 2 To UBound(Arr)
        If Dic.Exists(Arr(Rc, 2)) Then
            Brr(Dic(Arr(Rc, 2)), 3) = Brr(Dic(Arr(Rc, 2)), 3) + Arr(Rc, 6)
            Brr(Dic(Arr(Rc, 2)), 4) = Brr(Dic(Arr(Rc, 2)), 4) + Arr(Rc, 7)
        Else
            K = K + 1
            Dic(Arr(Rc, 2)) = K
            Brr(K, 1) = K: Brr(K, 2) = Arr(Rc, 2)
            Brr(K, 3) = Arr(Rc, 6): Brr(K, 4) = Arr(Rc, 7)
        End If
        Num1 = Num1 + Arr(Rc, 6)
        Num2 = Num2 + Arr(Rc, 7)
    Next Rc
    With Sheet2
        .Range("A3:E10000").ClearContents
        .Range("A2:E10000").Borders.LineStyle = xlNone
        .Range("A3:E" & K + 2) = Brr
        .Cells(K + 3, 1) = "合  计"
        .Range(.Cells(K + 3, 1), Cells(K + 3, 2)).HorizontalAlignment = xlCenterAcrossSelection
        .Cells(K + 3, 3) = Num1
        .Cells(K + 3, 4) = Num2
        With .Range(.Cells(2, 1), .Cells(K + 3, 5)).Borders
          .LineStyle = xlContinuous
          .Weight = xlThin
          .ColorIndex = 3
        End With
    End With
End Sub

评分

参与人数 1学分 +2 收起 理由
ruhong18 + 2 感谢帮助

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-4 17:17 , Processed in 0.369958 second(s), 15 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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