Excel精英培训网

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

[已解决]帮忙修改VBA代码

[复制链接]
发表于 2022-8-2 12:02 | 显示全部楼层 |阅读模式
本表的要求是把2022.8表中G列满足8月定额表中A列、B列、C列的值得和按照2022.8中B列和J:AN列对应的日期填充在蓝色区域。
因8月定额满足A列、B列、C列3个条件的有多个,但是现在的VBA代码只能填充到一个里边,如何更改代码把所有的都填充上
比如:A18:C18中有两列是一样的,现在只能把求出来的只填充在一列里边,如何让两列都填充上

最佳答案
2022-8-2 14:16
本帖最后由 hasyh2008 于 2022-8-2 14:18 编辑

也发个熟悉的代码!!

Sub 汇总()
    Application.ScreenUpdating = False
    Dim Ar, R&, C%, K&, Str$, D As Object, D2 As Object, T
    T = Timer
    clear
    Set D = CreateObject("scripting.dictionary")
    Ar = Sheets("2022.8").[A1].CurrentRegion
    For R = 2 To UBound(Ar)
        Str = Ar(R, 4) & "|" & Ar(R, 5) & "|" & Ar(R, 6) & "|" & Ar(R, 2)
        D(Str) = D(Str) + Ar(R, 7)
    Next R
    With Sheets("8月定额")
        Ar = .[A1].CurrentRegion
        For R = 3 To UBound(Ar)
            For C = 10 To 40
                Str = Ar(R, 1) & "|" & Ar(R, 2) & "|" & Ar(R, 3) & "|" & Ar(2, C)
                If D.exists(Str) Then Ar(R, C) = D(Str)
                Ar(R, 41) = Ar(R, 41) + Ar(R, C)
            Next C
        Next R
        Sheets("8月定额").[A1].CurrentRegion = Ar
    End With
    MsgBox "用时:" & Format(Timer - T, "0.00\秒")
    Application.ScreenUpdating = True
End Sub
Sub clear()
    Sheets("8月定额").[J3:AN1000].ClearContents
End Sub

2022年树脂质量统计.zip

178.68 KB, 下载次数: 14

发表于 2022-8-2 14:02 | 显示全部楼层
回复

使用道具 举报

 楼主| 发表于 2022-8-2 14:13 | 显示全部楼层
回复

使用道具 举报

发表于 2022-8-2 14:16 | 显示全部楼层    本楼为最佳答案   
本帖最后由 hasyh2008 于 2022-8-2 14:18 编辑

也发个熟悉的代码!!

Sub 汇总()
    Application.ScreenUpdating = False
    Dim Ar, R&, C%, K&, Str$, D As Object, D2 As Object, T
    T = Timer
    clear
    Set D = CreateObject("scripting.dictionary")
    Ar = Sheets("2022.8").[A1].CurrentRegion
    For R = 2 To UBound(Ar)
        Str = Ar(R, 4) & "|" & Ar(R, 5) & "|" & Ar(R, 6) & "|" & Ar(R, 2)
        D(Str) = D(Str) + Ar(R, 7)
    Next R
    With Sheets("8月定额")
        Ar = .[A1].CurrentRegion
        For R = 3 To UBound(Ar)
            For C = 10 To 40
                Str = Ar(R, 1) & "|" & Ar(R, 2) & "|" & Ar(R, 3) & "|" & Ar(2, C)
                If D.exists(Str) Then Ar(R, C) = D(Str)
                Ar(R, 41) = Ar(R, 41) + Ar(R, C)
            Next C
        Next R
        Sheets("8月定额").[A1].CurrentRegion = Ar
    End With
    MsgBox "用时:" & Format(Timer - T, "0.00\秒")
    Application.ScreenUpdating = True
End Sub
Sub clear()
    Sheets("8月定额").[J3:AN1000].ClearContents
End Sub

2022年树脂质量统计.rar

177.37 KB, 下载次数: 13

评分

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

查看全部评分

回复

使用道具 举报

发表于 2022-8-2 14:30 | 显示全部楼层
本帖最后由 hasyh2008 于 2022-8-2 14:32 编辑

!!!!!
回复

使用道具 举报

 楼主| 发表于 2022-8-2 15:09 | 显示全部楼层
hasyh2008 发表于 2022-8-2 14:16
也发个熟悉的代码!!

Sub 汇总()

谢谢,就是要的这效果
回复

使用道具 举报

发表于 2022-8-2 17:14 | 显示全部楼层
916445055 发表于 2022-8-2 15:09
谢谢,就是要的这效果

认为行就选为最佳答案
回复

使用道具 举报

发表于 2022-8-3 20:54 | 显示全部楼层
Sub clear()
    Sheets("8月定额").[J3:AN1000].ClearContents
End Sub

改为
Sub clear()
    Sheets("8月定额").[J3:AO1000].ClearContents
End Sub

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2022-8-4 08:01 | 显示全部楼层
我行我速2008 发表于 2022-8-3 20:54
Sub clear()
    Sheets("8月定额").[J3:AN1000].ClearContents
End Sub

谢谢
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-30 09:24 , Processed in 0.375234 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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