Excel精英培训网

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

[已解决]流水账表格

[复制链接]
发表于 2015-7-5 13:41 | 显示全部楼层 |阅读模式
想得到的结果有点复杂,详见附件。 附件明细账.rar (6.37 KB, 下载次数: 27)
发表于 2015-7-5 13:57 | 显示全部楼层
回复

使用道具 举报

发表于 2015-7-5 17:22 | 显示全部楼层    本楼为最佳答案   
  1. Sub 刷新()
  2.     Dim ir%, m%, imax%
  3.     Dim mx1#, mx2#, x#, sx1#, sx2#
  4.     imax = Range("e" & Cells.Rows.Count).End(xlUp).Row
  5.     ir = 6
  6.     x = Range("i5").Value

  7.     Do
  8.         If Range("a" & ir) <> "" Then
  9.             mx1 = mx1 + Range("f" & ir)
  10.             mx2 = mx2 + Range("g" & ir)
  11.             sx1 = sx1 + Range("f" & ir)
  12.             sx2 = sx2 + Range("g" & ir)
  13.         End If
  14.         Do
  15.             m = Range("a" & ir)
  16.             ir = ir + 1
  17.             If Range("a" & ir) <> "" Then
  18.                 mx1 = mx1 + Range("f" & ir)
  19.                 mx2 = mx2 + Range("g" & ir)
  20.                 sx1 = sx1 + Range("f" & ir)
  21.                 sx2 = sx2 + Range("g" & ir)
  22.             End If
  23.              imax = Range("e" & Cells.Rows.Count).End(xlUp).Row
  24.             If (m <> Range("a" & ir + 1) And Range("a" & ir + 1) <> "") Or ir >= imax Then Exit Do
  25.         Loop
  26.         If Range("e" & ir) <> "累计" Then
  27.             Range("e" & ir + 1).EntireRow.Insert
  28.             Range("e" & ir + 1).EntireRow.Insert
  29.             Else
  30.             ir = ir - 2
  31.         End If
  32.         ir = ir + 1
  33.         Range("e" & ir) = "本月合计"
  34.         Range("f" & ir) = mx1
  35.         Range("g" & ir) = mx2
  36.         Range("i" & ir - 1) = x + sx1 - sx2
  37.         ir = ir + 1
  38.         Range("e" & ir) = "累计"
  39.         Range("f" & ir) = sx1
  40.         Range("g" & ir) = sx2
  41.         mx1 = 0: mx2 = 0
  42.         ir = ir + 1
  43.          imax = Range("e" & Cells.Rows.Count).End(xlUp).Row
  44.         If ir >= imax Then Exit Do
  45.     Loop

  46. End Sub
复制代码
回复

使用道具 举报

发表于 2015-7-5 17:30 | 显示全部楼层
注意刷新后,如果需要添加本月数据的,要把最后二行的小计删除后再添加。
如果添加下月数据则不受影响,可以多次刷新。
回复

使用道具 举报

 楼主| 发表于 2015-7-11 17:19 | 显示全部楼层
wp8680 发表于 2015-7-5 17:22

很好的VBA工程,如果在“本月合计”所在行的下边从A到I 划上一条红色边框线就更完美了。谢谢!
回复

使用道具 举报

发表于 2015-7-11 19:12 | 显示全部楼层
zhgghw 发表于 2015-7-11 17:19
很好的VBA工程,如果在“本月合计”所在行的下边从A到I 划上一条红色边框线就更完美了。谢谢!

你贪心不?可以用也不给最佳。那红线仅是一句代码就可以的事。
回复

使用道具 举报

 楼主| 发表于 2015-7-18 18:24 | 显示全部楼层
wp8680 发表于 2015-7-11 19:12
你贪心不?可以用也不给最佳。那红线仅是一句代码就可以的事。

这阵工作有点忙,这才来设最佳。只要是好的,啥时候设都不算晚哈。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2025-8-16 04:59 , Processed in 0.283084 second(s), 14 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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