Excel精英培训网

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

[已解决]两个工作表之间数据转换

[复制链接]
发表于 2015-9-11 08:58 | 显示全部楼层 |阅读模式
  各位 老师 大师 大神们  早上好!
           我想利用VBA来处理同一工作簿中两个工作表之间数据转换的问题,即将一个工作表中的"供应商"对应的"付款金额"自动分摊到另外一个工作表对应的"供应商"的各条记录中的"申请付款A"中,详见附件说明,这样的程序对经常使用EXCEL的朋友来说是一件有益的好事,只要能实现该功能,我相信会有许多人感谢各位老师的,在此,我首先非常非常感谢各位的帮助和支持!
最佳答案
2015-9-11 12:50
………………

SJZH.zip

20.84 KB, 下载次数: 7

发表于 2015-9-11 12:47 | 显示全部楼层
  1. Sub Macro1()
  2. Dim arr, brr, crr, drr, d, i&
  3. Set d = CreateObject("scripting.dictionary")
  4. Sheet2.Activate
  5. arr = Sheet1.Range("a1").CurrentRegion
  6. brr = Range("a5").CurrentRegion
  7. ReDim crr(1 To UBound(brr) - 4, 1 To 1)
  8. ReDim drr(1 To UBound(brr) - 4, 1 To 1)
  9. For i = 2 To UBound(arr)
  10.     d(arr(i, 1)) = arr(i, 17)
  11. Next
  12. For i = 6 To UBound(brr)
  13.     If d(brr(i, 6)) = 0 Then GoTo line100
  14.     If d(brr(i, 6)) >= brr(i, 19) Then
  15.         crr(i - 5, 1) = brr(i, 19)
  16.         d(brr(i, 6)) = d(brr(i, 6)) - brr(i, 19)
  17.     Else
  18.         crr(i - 5, 1) = d(brr(i, 6)): d(brr(i, 6)) = 0
  19.     End If
  20.     If crr(i - 5, 1) > 0 Then drr(i - 5, 1) = Format(crr(i - 5, 1) / brr(i, 19), "0.00%")
  21. line100:
  22. Next
  23. Range("t6").Resize(UBound(crr)) = crr
  24. Range("v6").Resize(UBound(drr)) = drr
  25. End Sub
复制代码
回复

使用道具 举报

发表于 2015-9-11 12:50 | 显示全部楼层    本楼为最佳答案   
………………

款项处理.zip

23.74 KB, 下载次数: 17

回复

使用道具 举报

 楼主| 发表于 2015-9-13 19:54 | 显示全部楼层
老师 你好 !
       增加的判断内容,见重新上传的附件, 款项处理.zip (21.84 KB, 下载次数: 5)
回复

使用道具 举报

 楼主| 发表于 2015-9-20 22:26 | 显示全部楼层
满足了我上传资料所给出的条件,故我设置为:”答案最佳“,再次谢谢 dsmch 朋友!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-20 02:11 , Processed in 0.306819 second(s), 12 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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