Excel精英培训网

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

[已解决]有多行收款记录,如何在一行统计

[复制链接]
发表于 2017-3-28 14:39 | 显示全部楼层 |阅读模式
“收款登记表”同一套房有多行收款记录,用“汇总表”方式来汇总,如何编VBA代码,谢谢大师帮忙
最佳答案
2017-3-28 15:21
  1. Sub 汇总()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     arr = Sheet1.[a1].CurrentRegion
  4.     For I = 2 To UBound(arr)
  5.         x = arr(I, 2)
  6.        If Len(x) > 0 Then d(x) = d(x) & "," & I
  7.     Next
  8.     Dim brr(1 To 1000, 1 To 31)
  9.     For Each x In d.keys   '对于每个房号
  10.         xrr = Split(d(x), ",")
  11.         n = n + 1   '新增一条记录
  12.         I = xrr(1)
  13.         brr(n, 1) = n
  14.         For j = 2 To 11       '前11列固定内容
  15.             brr(n, j) = arr(I, j)
  16.         Next
  17.         For k = 1 To UBound(xrr)      '后4列一组收款情况
  18.             I = xrr(k)
  19.             brr(n, j) = arr(I, 12)   '收款日期
  20.             brr(n, j + 1) = arr(I, 13)     '收款
  21.             brr(n, j + 3) = arr(I, 18)   '收据编号
  22.             j = j + 4
  23.         Next
  24.     Next
  25.     Sheet2.[a7:ae1006] = ""
  26.     Sheet2.[a7].Resize(n, 31) = brr
  27. End Sub
复制代码

工作簿1.rar

120.28 KB, 下载次数: 2

发表于 2017-3-28 15:21 | 显示全部楼层    本楼为最佳答案   
  1. Sub 汇总()
  2.     Set d = CreateObject("scripting.dictionary")
  3.     arr = Sheet1.[a1].CurrentRegion
  4.     For I = 2 To UBound(arr)
  5.         x = arr(I, 2)
  6.        If Len(x) > 0 Then d(x) = d(x) & "," & I
  7.     Next
  8.     Dim brr(1 To 1000, 1 To 31)
  9.     For Each x In d.keys   '对于每个房号
  10.         xrr = Split(d(x), ",")
  11.         n = n + 1   '新增一条记录
  12.         I = xrr(1)
  13.         brr(n, 1) = n
  14.         For j = 2 To 11       '前11列固定内容
  15.             brr(n, j) = arr(I, j)
  16.         Next
  17.         For k = 1 To UBound(xrr)      '后4列一组收款情况
  18.             I = xrr(k)
  19.             brr(n, j) = arr(I, 12)   '收款日期
  20.             brr(n, j + 1) = arr(I, 13)     '收款
  21.             brr(n, j + 3) = arr(I, 18)   '收据编号
  22.             j = j + 4
  23.         Next
  24.     Next
  25.     Sheet2.[a7:ae1006] = ""
  26.     Sheet2.[a7].Resize(n, 31) = brr
  27. End Sub
复制代码

工作簿1.rar

77.26 KB, 下载次数: 12

回复

使用道具 举报

 楼主| 发表于 2017-3-28 16:13 | 显示全部楼层

谢谢,大师,但我的要求是汇总表已有房号而且是按顺序排列的,就是要求按房号汇总其他数据
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 11:33 , Processed in 0.349893 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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