Excel精英培训网

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

[已解决]求助精英修改代码20120627

[复制链接]
发表于 2012-6-27 17:32 | 显示全部楼层 |阅读模式
  1. Option Explicit
  2. Sub XXL()
  3. Dim t, D1

  4. Application.Calculation = xlCalculationAutomatic '自动重算
  5. Dim MyrO&, ArrO, III
  6. MyrO = Sheets("现金流水").[A65536].End(xlUp).Row 'A列最后一个非空单元格
  7. ArrO = Sheets("现金流水").Range("A2:R" & MyrO) '把数据表的使用区域纳入数组
  8. Dim Maxrow, Rwct
  9. Dim Myr&, i&, Arr, Brr(1 To 14)
  10. Dim D As New Dictionary 'scrrun.dll后期绑定
  11. Dim J, R, Arr1(), II
  12. Set D1 = CreateObject("Scripting.Dictionary")
  13. Myr = Sheets("数据表").[b65536].End(xlUp).Row 'B列最后一个非空单元格
  14. Arr = Sheets("数据表").Range("b2:Q" & Myr) '把数据表的使用区域纳入数组
  15. For i = 1 To UBound(Arr) '在数组中循环
  16. D(Arr(i, 1)) = ""
  17. Next
  18. Application.EnableEvents = False
  19. If Sheets("最终效果").Range("AX2") - 1 >= D.Count Then MsgBox "已到最后一页": Sheets("最终效果").Range("AX2") = D.Count: Exit Sub
  20. Sheets("单户").Range("b2") = D.Keys(Sheets("最终效果").Range("AX2") - 1)
  21. For i = 1 To UBound(Arr)
  22. If Arr(i, 1) = Sheets("单户").Range("b2") Then
  23. Brr(1) = Arr(i, 2) '客户名称
  24. Brr(2) = Arr(i, 3) '借据号码
  25. For J = 3 To 14 '贷款余额 ~ 综合业务账号
  26. Brr(J) = Arr(i, J + 2)
  27. Next
  28. Sheets("单户").Range("C2").Resize(1, 14) = Brr '将结果写入 C2:P2 单元格
  29. R = R + 1

  30. ReDim Preserve Arr1(1 To 8, 1 To R) 'Arr1(1 To 8列, 1 To R行)

  31. If Sheets("单户").Range("G2") = "" Then
  32. Arr1(1, R) = Sheets("单户").Range("b5").Value '新放与上年余额订位日期
  33. Arr1(2, R) = "上年结转"
  34. Else
  35. Arr1(1, R) = Sheets("单户").Range("j2").Value '借款日期
  36. Arr1(2, R) = Sheets("单户").Range("I2").Value '借款用途
  37. End If
  38. Arr1(3, R) = Sheets("单户").Range("G2").Value '发放金额
  39. Arr1(5, R) = Sheets("单户").Range("M2").Value '年度结转
  40. Arr1(6, R) = Sheets("单户").Range("F2").Value '贷款余额
  41. Arr1(8, R) = Sheets("单户").Range("h2").Value '责任人
  42. ' ***********************************************************


  43. '请大师修改代码:
  44. '1, Sheets("单户").Range("B2").Value =SHEETS("现金流水").Range("A2"&所有使用的行).,筛选贷款帐号相同的发生额

  45. '2,从现金流水表中的D,E,F,G,R列中取数,分别写入单户表中B8,E8,R8,H8,G8

  46. If Sheets("单户").Range("B2").Value = Sheets("现金流水").Range("A2" & MyrO) Then
  47. For III = 1 To UBound(ArrO())
  48. D1(ArrO(III, 1)) = ""
  49. Next
  50. R = R + 1
  51. ReDim Preserve Arr1(1 To 8, 1 To R)
  52. Arr1(1, R) = ArrO(III, 4) 'Sheets("现金流水").Range("D2" & MyrO).Value

  53. Arr1(4, R) = ArrO(III, 5) 'Sheets("现金流水").Range("E2" & MyrO).Value

  54. Arr1(7, R) = ArrO(III, 6) 'Sheets("现金流水").Range("F2" & MyrO).Value

  55. Arr1(5, R) = ArrO(III, 18) 'Sheets("现金流水").Range("R2" & MyrO).Value

  56. If Arr1(4, R) And Arr1(7, R) > 0 Then
  57. Arr1(2, R) = "本息收回"
  58. Else
  59. Arr1(2, R) = "仅收利息"
  60. End If

  61. If R = 1 Then
  62. Arr1(6, R) = [f2].Value - Arr1(4, R)
  63. Else
  64. Arr1(6, R) = Arr1(6, R - 1) - Arr1(4, R)
  65. End If
  66. Arr1(8, R) = [H2].Value
  67. Else
  68. Exit For


  69. '*********************************************************************************************
  70. Sheets("单户").Range("b7:i100").ClearContents 'Clear
  71. If R <> 0 Then
  72. Sheets("单户").[b7].Resize(R, 8) = Application.Transpose(Arr1)
  73. 'With Sheets("单户").[b6].Resize(R + 1, 8)
  74. ' .Borders.LineStyle = 1
  75. ' .Font.Name = "仿宋_GB2312"
  76. ' .Font.Size = 9
  77. ' End With
  78. End If
  79. Exit For
  80. End If
  81. 'Next
  82. With Sheets("最终效果")

  83. Range("A6:AU20").ClearContents
  84. Range("C3,N3:AA3,AG3:AO3,AS3:AW3,AV2:AW2,AV6").ClearContents
  85. Maxrow = 6
  86. ' With Sheets("单户")
  87. Rwct = Sheets("单户").Range("B65536").End(xlUp).Row
  88. If Sheets("单户").Cells(2, 2) <> "" Then
  89. Cells(3, 45) = Sheets("单户").Cells(2, 2)
  90. Cells(3, 7) = Sheets("单户").Cells(2, 3)
  91. Cells(2, 48) = Sheets("单户").Cells(2, 4)
  92. Cells(3, 3) = Sheets("单户").Cells(2, 5)
  93. Cells(3, 33) = Sheets("单户").Cells(2, 14)
  94. Cells(3, 14) = Sheets("单户").Cells(2, 15)
  95. Cells(6, 48) = Sheets("单户").Cells(7, 9)
  96. Cells(28, 41) = "结算帐号" & Sheets("单户").Cells(2, 16)
  97. End If
  98. For i = Maxrow To Rwct
  99. If Sheets("单户").Cells(1 + i, 2) <> "" Then '记帐日期
  100. Cells(4, 1) = Right(Year(Sheets("单户").Cells(7, 2)), 2) '年2位
  101. Cells(i, 1) = Format(Month(Sheets("单户").Cells(1 + i, 2)), "00") '月2位
  102. Cells(i, 2) = Format(Day(Sheets("单户").Cells(1 + i, 2)), "00") '日2位
  103. Cells(i, 10) = Sheets("单户").Cells(i - 4, 12) '利率
  104. End If
  105. If Sheets("单户").Cells(1 + i, 2) <> "" Then
  106. Cells(6, 4) = Right(Year(Sheets("单户").Cells(2, 10)), 2) '年2位
  107. Cells(6, 5) = Format(Month(Sheets("单户").Cells(2, 10)), "00") '月2位
  108. Cells(6, 6) = Format(Day(Sheets("单户").Cells(2, 10)), "00") '日2位
  109. Cells(6, 7) = Right(Year(Sheets("单户").Cells(2, 11)), 2) '年2位
  110. Cells(6, 8) = Format(Month(Sheets("单户").Cells(2, 11)), "00") '月2位
  111. Cells(6, 9) = Format(Day(Sheets("单户").Cells(2, 11)), "00") '日2位
  112. End If
  113. If Sheets("单户").Cells(1 + i, 6) <> "" Then
  114. Cells(i, 29) = Right(Year(Sheets("单户").Cells(1 + i, 6)), 2) '年2位
  115. End If
  116. If Sheets("单户").Cells(1 + i, 6) <> "" Then
  117. Cells(i, 30) = Format(Month(Sheets("单户").Cells(1 + i, 6)), "00") '月2位
  118. End If
  119. If Sheets("单户").Cells(1 + i, 6) <> "" Then
  120. Cells(i, 31) = Format(Day(Sheets("单户").Cells(1 + i, 6)), "00") '日2位
  121. End If
  122. If Sheets("单户").Cells(1 + i, 3) <> "" Then Cells(i, 3) = Sheets("单户").Cells(1 + i, 3)
  123. If Sheets("单户").Cells(i + 1, 4) <> "" And Abs(Val(Sheets("单户").Cells(i + 1, 4))) >= 0 Then '借方金额分栏填充
  124. VaToBranch CDbl(Val(Sheets("单户").Cells(i + 1, 4))), i, 11, 19

  125. End If
  126. If Sheets("单户").Cells(i + 1, 5) <> "" And Abs(Val(Sheets("单户").Cells(i + 1, 5))) >= 0 Then '贷方金额分栏填充
  127. VaToBranch CDbl(Val(Sheets("单户").Cells(i + 1, 5))), i, 20, 28

  128. End If
  129. If Sheets("单户").Cells(i + 1, 7) <> "" And Abs(Val(Sheets("单户").Cells(i + 1, 7))) >= 0 Then '结存金额分栏填充
  130. VaToBranch CDbl(Val(Sheets("单户").Cells(i + 1, 7))), i, 32, 40
  131. End If
  132. If Sheets("单户").Cells(i + 1, 8) <> "" And Abs(Val(Sheets("单户").Cells(i + 1, 8))) >= 0 Then '利息金额分栏填充
  133. VaToBranch CDbl(Val(Sheets("单户").Cells(i + 1, 8))), i, 41, 47
  134. End If
  135. Next i
  136. End With

  137. Application.EnableEvents = True '打开事件





  138. End Sub
  139. Function VaToBranch(ByVal Sg#, ByVal rwC As Integer, ByVal Stcol As Integer, ByVal Edcol As Integer)
  140. Dim i, N, vLen As Integer
  141. Dim vLstr As String
  142. vLstr = Replace(CStr(Format(Sg, "0.00")), ".", "") '把数字格式的点替换为空
  143. vLen = Len(vLstr) '数字的长度
  144. For i = 1 To vLen '变量i的取值范围是1-数字去小数点的长度
  145. Cells(rwC, Edcol - vLen + i) = Mid(vLstr, i, 1) '用mid()循环取值
  146. Next i
  147. End Function '分列函数摘自论坛凭证处理130的

复制代码
我在*********和*******中加入代码后,无法运行了
请大师们帮帮,谢谢

最佳答案
2012-6-30 13:52
本帖最后由 zjdh 于 2012-6-30 18:27 编辑

(, 下载次数: 24)

求助精英修改代码20120627.rar

126.69 KB, 下载次数: 11

发表于 2012-6-27 19:08 | 显示全部楼层
本帖最后由 zjdh 于 2012-6-27 19:11 编辑

你就是没在*********和*******中加入代码,也同样无法运行!
因为第2个 for i=....  没有next对应
新添的语句中有if......else.... 没有end if  更无法运行啦!!
回复

使用道具 举报

 楼主| 发表于 2012-6-27 19:37 | 显示全部楼层
zjdh 发表于 2012-6-27 19:08
你就是没在*********和*******中加入代码,也同样无法运行!
因为第2个 for i=....  没有next对应
新添的 ...

请老师帮忙解一下代码,我知识有限,无从下手
回复

使用道具 举报

 楼主| 发表于 2012-6-27 19:44 | 显示全部楼层
zjdh 发表于 2012-6-27 19:08
你就是没在*********和*******中加入代码,也同样无法运行!
因为第2个 for i=....  没有next对应
新添的 ...

请老师看看,没有加代码,以原代码中的单户B2为条件从现金流水中调发生额,如现金流水中没有发生额就运行现在的代码

求助大师 没有加代码的.rar

127.02 KB, 下载次数: 18

回复

使用道具 举报

 楼主| 发表于 2012-6-27 20:45 | 显示全部楼层
zjdh 发表于 2012-6-27 19:08
你就是没在*********和*******中加入代码,也同样无法运行!
因为第2个 for i=....  没有next对应
新添的 ...

老师改了已不行,请老师帮助
MyCatch.jpg
回复

使用道具 举报

发表于 2012-6-27 20:45 | 显示全部楼层
syt188702 发表于 2012-6-27 19:44
请老师看看,没有加代码,以原代码中的单户B2为条件从现金流水中调发生额,如现金流水中没有发生额就运行 ...

1楼代码中把第95句注销掉了!
本楼附件next 又回来了!
回复

使用道具 举报

 楼主| 发表于 2012-6-27 20:52 | 显示全部楼层
zjdh 发表于 2012-6-27 20:45
1楼代码中把第95句注销掉了!
本楼附件next 又回来了!

老师代码运行了,但没有从现金流水表中调来发生额,请帮忙改改,谢谢
回复

使用道具 举报

 楼主| 发表于 2012-6-29 19:58 | 显示全部楼层
zjdh 发表于 2012-6-27 20:45
1楼代码中把第95句注销掉了!
本楼附件next 又回来了!

敬请老师再次伸出援助之手吧
回复

使用道具 举报

 楼主| 发表于 2012-6-29 08:34 | 显示全部楼层
zjdh 发表于 2012-6-27 20:45
1楼代码中把第95句注销掉了!
本楼附件next 又回来了!

东海老师,请帮助我完善这个贷款台帐吧,去年得到您的帮助在此表示谢谢,(从邮箱里发给老师函数台帐,经过老师们用VBA给减肥从20多MB减少到2MB)运行很好,但由于执行新会计制度,原数据库设计有缺陷,只能取12次发生额。
回复

使用道具 举报

发表于 2012-6-29 20:55 | 显示全部楼层
求助.rar (113.3 KB, 下载次数: 7)
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 03:12 , Processed in 0.313216 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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