Excel精英培训网

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

[已解决]如何用VBA实现函数公式的功能

[复制链接]
发表于 2017-6-19 13:49 | 显示全部楼层 |阅读模式
本帖最后由 gdxtx 于 2017-6-19 15:05 编辑

我的帐龄分析表中,B4列至P4列正常函数的操作方法是:
B4=IF(VLOOKUP(A4,源数据!A$3:B$9145,2,FALSE)=0,"",VLOOKUP(A4,源数据!A$3:B$9145,2,FALSE))


C4={=IF(D4>0,SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345<=30)*(源数据!F$3:F$9345)),SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345<=30)*(源数据!F$3:F$9345))+D4)}
D4={=IF(F4>0,SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>30)*($C$2-源数据!E$3:E$9345<=60)*(源数据!F$3:F$9345)),SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>30)*($C$2-源数据!E$3:E$9345<=60)*(源数据!F$3:F$9345))+F4)}

E4=IF(D4<0,0,D4)

F4={=IF(H4>0,SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>60)*($C$2-源数据!E$3:E$9345<=90)*(源数据!F$3:F$9345)),SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>60)*($C$2-源数据!E$3:E$9345<=90)*(源数据!F$3:F$9345))+H4)}

G4=IF(F4<0,0,F4)

H4={=IF(J4>0,SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>90)*($C$2-源数据!E$3:E$9345<=180)*(源数据!F$3:F$9345)),SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>90)*($C$2-源数据!E$3:E$9345<=180)*(源数据!F$3:F$9345))+J4)}

I4=IF(H4<0,0,H4)

J4={=IF(L4>0,SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>180)*($C$2-源数据!E$3:E$9345<=365)*(源数据!F$3:F$9345)),SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>180)*($C$2-源数据!E$3:E$9345<=365)*(源数据!F$3:F$9345))+L4)}

K4=IF(J4<0,0,J4)

L4={=IF(N4>0,SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>365)*($C$2-源数据!E$3:E$9345<=1095)*(源数据!F$3:F$9345)),SUM((源数据!B$3:B$9345=分析报表!B4)*($C$2-源数据!E$3:E$9345>365)*($C$2-源数据!E$3:E$9345<=1095)*(源数据!F$3:F$9345))+N4)}

M4=IF(L4<0,0,L4)

N4={=SUM((源数据!B$3:B$9345=分析报表!$B4)*($C$2-源数据!E$3:E$9345>1095)*(源数据!F$3:F$9345))-SUM((源数据!B$3:B$9345=分析报表!$B4)*(源数据!G$3:G$9345))}

O4=IF(N4<0,0,N4)

P4=SUM(C4,E4,G4,I4,K4,M4,O4)
然后向下自动填充;如何使用VBA来实现?请各位老师帮忙下,谢谢

最佳答案
2017-6-19 18:27
见附件

应收账款账龄分析.zip

151.08 KB, 下载次数: 4

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2017-6-19 14:55 | 显示全部楼层
如果你想得到更多的帮助,最好是上个附件,方便大家理解。
回复

使用道具 举报

 楼主| 发表于 2017-6-19 15:06 | 显示全部楼层
yorkchenshunan 发表于 2017-6-19 14:55
如果你想得到更多的帮助,最好是上个附件,方便大家理解。

您好!附件我已经上传了,请你帮我看看,谢谢!
回复

使用道具 举报

发表于 2017-6-19 16:22 | 显示全部楼层
见附件。

应收账款账龄分析.rar

87.72 KB, 下载次数: 4

回复

使用道具 举报

 楼主| 发表于 2017-6-19 17:42 | 显示全部楼层

非常感谢!效果很好。谢谢!不知道这个分析表的行数能不能做到不按现在的固定行数,改成动态,有几个单位分析后空一行,然后合计。即分析表的行数随着应收单位的增减而增减。谢谢!
回复

使用道具 举报

发表于 2017-6-19 18:27 | 显示全部楼层    本楼为最佳答案   
见附件

应收账款账龄分析1.rar

86.82 KB, 下载次数: 8

回复

使用道具 举报

 楼主| 发表于 2017-6-19 23:42 | 显示全部楼层

太感谢了,您真了不起!谢谢!!!
回复

使用道具 举报

 楼主| 发表于 2017-6-20 09:20 | 显示全部楼层
本帖最后由 gdxtx 于 2017-6-20 09:54 编辑

您好!非常感谢您帮忙,我测试后,各单位的帐龄分析结果都正确,但有个小问题,合计数不会只计算第一行的数字。请您看看要怎么修改。另外那个“简报”表也帮我看看能不能也弄成跟分析表一样是动态的,即各单位后面就是合计。谢谢!!

我在您帮写的那个VBA中加入:
For n2 = 1 To UBound(brr)
    For n1 = 1 To UBound(arr)
    If arr(n1, 2) = brr(n2, 1) Then
    brr(n2, 15) = brr(n2, 14) + brr(n2, 12) + brr(n2, 10) + brr(n2, 8) + brr(n2, 6) + brr(n2, 4) + brr(n2, 2) '行合计
End If
   Next

解决了行合计的问题,但列合计不知道怎么弄!请您有时间帮我改一下。
回复

使用道具 举报

发表于 2017-6-20 10:07 | 显示全部楼层
见附件。PS:你之前录制的取数宏运行效率比较低,我就擅自把宏全部改了。

应收账款账龄分析2.rar

87.83 KB, 下载次数: 9

回复

使用道具 举报

 楼主| 发表于 2017-6-20 10:13 | 显示全部楼层
yorkchenshunan 发表于 2017-6-20 10:07
见附件。PS:你之前录制的取数宏运行效率比较低,我就擅自把宏全部改了。

非常感谢您!!!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 08:49 , Processed in 0.334521 second(s), 11 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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