Excel精英培训网

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

[已解决]请各位老师和大神,帮我看看这个复杂的公式,求个VBA,谢谢各位老师和大神!

[复制链接]
发表于 2017-4-23 14:02 | 显示全部楼层 |阅读模式
本帖最后由 lixiangjypx 于 2017-4-24 10:01 编辑

这个公式是dgerwin 老师给的!在这里先感谢他(她)!
如果各位老师可以用VBA实现的话,麻烦也给一个VBA吧!行数多了运行起来会卡,谢谢了!
公式我第一次使用时,账簿有227行,这时的公式的检验结果与凭证内容是相符的。
可第二次增加到603行时公式计算出来的结果有一部分和凭证内容不符了,计算结果本是“OK“的,却显示了”借贷同在“或"非全收付,待查"。这603行中包括了第一次使用时的227行,这227行的计算结果有的也不符,和第一次227行的结果不一样。
当我用另外一个公司的账簿1539行检验时,行数越多,计算的结果与凭证内容不符的就越多,经过仔细的核对,1539行的账簿当行数减少到159行时,计算结果全部正确!
请教下各位老师和大神,这公式最多能达到多少行?当行数超过时该怎样改公式?
谢谢各位老师和大神!知道的,请你指点下,谢谢了!

在227的表格里使用:
IF(SUMPRODUCT(($D$2:$D$227=D2)*(LEFT($G$2:$G$227,3)="100")*($K$2:$K$227))>0,IF(SUMPRODUCT(($D$2:$D$227=D2)*((LEFT($G$2:$G$227,3))="100")*($L$2:$L$227))>0,"借贷同在",IF(SUMPRODUCT(($D$2:$D$227=D2)*(LEFT($G$2:$G$227,3)="100")*($K$2:$K$227))=SUMPRODUCT(($D$2:$D$227=D2)*(LEFT($G$2:$G$227,3)<>"100")*($L$2:$L$227)),"OK","非全收付,待查")),IF(SUMPRODUCT(($D$2:$D$227=D2)*((LEFT($G$2:$G$227,3))="100")*($L$2:$L$227))>0,IF(SUMPRODUCT(($D$2:$D$227=D2)*((LEFT($G$2:$G$227,3))="100")*($L$2:$L$227))=SUMPRODUCT(($D$2:$D$227=D2)*(LEFT($G$2:$G$227,3)<>"100")*($K$2:$K$227)),"OK","非全收付,待查"),""))

在603表格里使用
IF(SUMPRODUCT(($D$2:$D$603=D2)*(LEFT($G$2:$G$603,3)="100")*($K$2:$K$603))>0,IF(SUMPRODUCT(($D$2:$D$603=D2)*((LEFT($G$2:$G$603,3))="100")*($L$2:$L$603))>0,"借贷同在",IF(SUMPRODUCT(($D$2:$D$603=D2)*(LEFT($G$2:$G$603,3)="100")*($K$2:$K$603))=SUMPRODUCT(($D$2:$D$603=D2)*(LEFT($G$2:$G$603,3)<>"100")*($L$2:$L$603)),"OK","非全收付,待查")),IF(SUMPRODUCT(($D$2:$D$603=D2)*((LEFT($G$2:$G$603,3))="100")*($L$2:$L$603))>0,IF(SUMPRODUCT(($D$2:$D$603=D2)*((LEFT($G$2:$G$603,3))="100")*($L$2:$L$603))=SUMPRODUCT(($D$2:$D$603=D2)*(LEFT($G$2:$G$603,3)<>"100")*($K$2:$K$603)),"OK","非全收付,待查"),""))

1593的公式只是把603改成1593,附件里有。

最佳答案
2017-4-24 09:03
直接 见 附件,
之前没细看 , 加了4个辅助列
公式检验底稿ccc.rar (138.34 KB, 下载次数: 4)

公式检验底稿22.rar

131.52 KB, 下载次数: 4

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
 楼主| 发表于 2017-4-24 10:00 | 显示全部楼层
砂海 发表于 2017-4-24 09:03
直接 见 附件,
之前没细看 , 加了4个辅助列

谢谢砂海老师,耽误你宝贵时间了,公式很好用!{:1612:}
回复

使用道具 举报

发表于 2017-4-23 16:09 | 显示全部楼层
抛弃 sumproduct
用 两个辅助列 sumifs 代替 ,
(1 函数 sumifs 快 ,  2 用辅助列 避免了重复运算)

这样公式 就 简单多了 .
回复

使用道具 举报

 楼主| 发表于 2017-4-23 17:27 | 显示全部楼层
砂海 发表于 2017-4-23 16:09
抛弃 sumproduct
用 两个辅助列 sumifs 代替 ,
(1 函数 sumifs 快 ,  2 用辅助列 避免了重复运算)

谢谢砂海老师!老师能给个公式吗?本人是小菜鸟啊,现在还在学习中,只会一些比较简单的函数!老师能给个VBA的话就更好了,谢谢老师!
回复

使用道具 举报

发表于 2017-4-24 09:03 | 显示全部楼层    本楼为最佳答案   
直接 见 附件,
之前没细看 , 加了4个辅助列
公式检验底稿ccc.rar (138.34 KB, 下载次数: 4)
回复

使用道具 举报

发表于 2017-4-24 10:30 | 显示全部楼层
直接讲规则,不要让人解读公式。
回复

使用道具 举报

 楼主| 发表于 2017-4-24 22:45 | 显示全部楼层
grf1973 发表于 2017-4-24 10:30
直接讲规则,不要让人解读公式。

谢谢老师的提醒!
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-19 17:10 , Processed in 0.828370 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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