ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 1618|回复: 11

[求助] 根据多条件多表汇总每户数据,按照模板生成户表

[复制链接]

TA的精华主题

TA的得分主题

发表于 2023-2-22 23:18 | 显示全部楼层 |阅读模式

第一次出现汇总数据后,按照模板生成数据,论坛上只看到多表汇总,没有汇总之后的分表,不错的例子。
按照我的理解可以用数组加字典,字典的高级用法,一对多
或者多个字典
模拟数据,根据多表汇总数据,按模板生成单个工作簿。

汇总多表数据,按模板生成数据.rar

187.5 KB, 下载次数: 27

字典,数组

TA的精华主题

TA的得分主题

发表于 2023-2-23 07:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
论坛有相关拆分案例,楼主可以检索下

TA的精华主题

TA的得分主题

发表于 2023-2-23 10:33 | 显示全部楼层
这种问题,就是一个繁琐的力气活,没有任何技术难度

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-23 10:43 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-23 12:45 | 显示全部楼层
3190496160 发表于 2023-2-23 10:33
这种问题,就是一个繁琐的力气活,没有任何技术难度

可以用字典的高级用法,一对多,但是我汇总之后不会拆分到模板里面

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-23 13:09 | 显示全部楼层
这个是我用循环判断写的一个,感觉好慢,想用数组和字典,但是还不会。 和本案列有点相似。不是本案列的代码  用循环写的烦人的部分代码 实在是字数限制贴不上来 Set sheet = ThisWorkbook.Sheets("生产经营性收支")                          For y = 3 To sheet.Cells(Rows.Count, 2).End(3).Row                                                      If sheet.Cells(y, 6) = k(I) Then                                 Select Case sheet.Cells(y, 10)                                       Case "生产经营性支出":                                                                                   If CByte(sheet.Cells(y, 9)) = 1 Then                                                                                                              sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                         s = s + sheet.Cells(y, "n")                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 2 Then                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                         t = t + sheet.Cells(y, "n")                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 3 Then                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                         m = m + sheet.Cells(y, "n")                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 4 Then                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                         n = n + sheet.Cells(y, "n")                                                     End If                                        Case "生产经营性收入":                                                          If sheet.Cells(y, 11) = "养殖业" Then                                                                          If CByte(sheet.Cells(y, 9)) = 1 Then                                                                                                                                              sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         s1 = s1 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 2 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         t1 = t1 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 3 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         m1 = m1 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 4 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         n1 = n1 + sheet.Cells(y, "n")                                                                         End If                                                             ElseIf sheet.Cells(y, 11) = "种植业" Or sheet.Cells(y, 11) = "林果业" Or sheet.Cells(y, 11) = "林下" Then                                                                                                                                      If CByte(sheet.Cells(y, 9)) = 1 Then                                                                                                                                              sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         s2 = s2 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 2 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         t2 = t2 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 3 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         m2 = m2 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 4 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         n2 = n2 + sheet.Cells(y, "n")                                                                         End If                                                           Else                                                                                                                                     If CByte(sheet.Cells(y, 9)) = 1 Then                                                                                                                                              sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         s3 = s3 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 2 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         t3 = t3 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 3 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         m3 = m3 + sheet.Cells(y, "n")                                                                                                                                                  ElseIf CByte(sheet.Cells(y, 9)) = 4 Then                                                                         sheet.Cells(y, "o") = sheet.Cells(y, "n")                                                                         n3 = n3 + sheet.Cells(y, "n")                                                                         End If                                                                     End If                                     End Select                                                          End If                         Next y                                                      sht.Cells(6, "t") = s ' (一)生产经营性支出                             sht.Cells(9, "t") = t ' (一)生产经营性支出                             sht.Cells(12, "t") = m ' (一)生产经营性支出                             sht.Cells(15, "t") = n ' (一生产经营性支出                                                           sht.Cells(6, "e") = s2 ' (一)种植收入                             sht.Cells(9, "e") = t2 ' (一)                             sht.Cells(12, "e") = m2 ' (一))                             sht.Cells(15, "e") = n2 ' (一生                                                    sht.Cells(6, "f") = s1 ' (一)养殖收入                             sht.Cells(9, "f") = t1 ' (一)                             sht.Cells(12, "f") = m1 ' (一)                             sht.Cells(15, "f") = n1 ' (一                                                          sht.Cells(6, "g") = s3 ' (一)其他                             sht.Cells(9, "g") = t3 ' (一)                             sht.Cells(12, "g") = m3 ' (一)                             sht.Cells(15, "g") = n3 ' (一)                    s = 0                    t = 0                    m = 0                    n = 0                                       s1 = 0                   t1 = 0                   m1 = 0                   n1 = 0                   s2 = 0                                        t2 = 0                    m2 = 0                    n2 = 0                                        s3 = 0                    t3 = 0                    m3 = 0                    n3 = 0                                                                    End If             Next              

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-23 13:10 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个是我用循环判断写的一个,感觉好慢,想用数组和字典,但是还不会。
和本案列有点相似。不是本案列的代码  用循环写的烦人的部分代码 实在是字数限制贴不上来
Set sheet = ThisWorkbook.Sheets("生产经营性收支")

                        For y = 3 To sheet.Cells(Rows.Count, 2).End(3).Row
                        
                            If sheet.Cells(y, 6) = k(I) Then
                                Select Case sheet.Cells(y, 10)
                                      Case "生产经营性支出":
                           
                                                     If CByte(sheet.Cells(y, 9)) = 1 Then
                                                   
                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                        s = s + sheet.Cells(y, "n")
                                                        
                                                        ElseIf CByte(sheet.Cells(y, 9)) = 2 Then
                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                        t = t + sheet.Cells(y, "n")
                                                        
                                                        ElseIf CByte(sheet.Cells(y, 9)) = 3 Then
                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                        m = m + sheet.Cells(y, "n")
                                                        
                                                        ElseIf CByte(sheet.Cells(y, 9)) = 4 Then
                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                        n = n + sheet.Cells(y, "n")
                                                    End If
                                       Case "生产经营性收入":
                                                         If sheet.Cells(y, 11) = "养殖业" Then
                                                                         If CByte(sheet.Cells(y, 9)) = 1 Then
                                                                    
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        s1 = s1 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 2 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        t1 = t1 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 3 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        m1 = m1 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 4 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        n1 = n1 + sheet.Cells(y, "n")
                                                                        End If
                                                            ElseIf sheet.Cells(y, 11) = "种植业" Or sheet.Cells(y, 11) = "林果业" Or sheet.Cells(y, 11) = "林下" Then
                                                            
                                                                        If CByte(sheet.Cells(y, 9)) = 1 Then
                                                                    
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        s2 = s2 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 2 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        t2 = t2 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 3 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        m2 = m2 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 4 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        n2 = n2 + sheet.Cells(y, "n")
                                                                        End If
                                                          Else
                                                         
                                                                         If CByte(sheet.Cells(y, 9)) = 1 Then
                                                                    
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        s3 = s3 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 2 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        t3 = t3 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 3 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        m3 = m3 + sheet.Cells(y, "n")
                                                                        
                                                                        ElseIf CByte(sheet.Cells(y, 9)) = 4 Then
                                                                        sheet.Cells(y, "o") = sheet.Cells(y, "n")
                                                                        n3 = n3 + sheet.Cells(y, "n")
                                                                        End If
                                                                    End If
                                    End Select
                           
                            End If
                        Next y
                        
                            sht.Cells(6, "t") = s ' (一)生产经营性支出
                            sht.Cells(9, "t") = t ' (一)生产经营性支出
                            sht.Cells(12, "t") = m ' (一)生产经营性支出
                            sht.Cells(15, "t") = n ' (一生产经营性支出
                           
                             sht.Cells(6, "e") = s2 ' (一)种植收入
                            sht.Cells(9, "e") = t2 ' (一)
                            sht.Cells(12, "e") = m2 ' (一))
                            sht.Cells(15, "e") = n2 ' (一生
                     
                            sht.Cells(6, "f") = s1 ' (一)养殖收入
                            sht.Cells(9, "f") = t1 ' (一)
                            sht.Cells(12, "f") = m1 ' (一)
                            sht.Cells(15, "f") = n1 ' (一
                           
                            sht.Cells(6, "g") = s3 ' (一)其他
                            sht.Cells(9, "g") = t3 ' (一)
                            sht.Cells(12, "g") = m3 ' (一)
                            sht.Cells(15, "g") = n3 ' (一)
                   s = 0
                   t = 0
                   m = 0
                   n = 0
                  
                  s1 = 0
                  t1 = 0
                  m1 = 0
                  n1 = 0
                  s2 = 0
                  
                   t2 = 0
                   m2 = 0
                   n2 = 0
                  
                   s3 = 0
                   t3 = 0
                   m3 = 0
                   n3 = 0
               
               
               
                End If
            Next
            

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-24 22:47 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
liulang0808 发表于 2023-2-23 07:16
论坛有相关拆分案例,楼主可以检索下

我看了一下都只是汇总或者拆分的,我需要的是多表按条件汇总之后按照模板拆分,大佬有案列的地址吗?

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-24 23:28 | 显示全部楼层
3190496160 发表于 2023-2-23 10:33
这种问题,就是一个繁琐的力气活,没有任何技术难度

字典的高级用法一对多,和多表多条件汇总,我之前用循环好慢,想用这个字典加数组,但是汇总之后如何吧字典回填模板就不知道了

TA的精华主题

TA的得分主题

 楼主| 发表于 2023-2-24 23:30 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
这个应该是可以用字典的一对多,方法,想学一下字典汇总之后如何拆分到模板里面
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-11-19 00:31 , Processed in 0.037491 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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