execl如何做数据分布图(遇到的一个Execl迭代运算问题)

各位朋友,你们好。今天复盘一个我解决Excel问题的全过程思路。

一、需要的效果

最近编写一个工作中用的工具,需要用到迭代运算(见下图),当我在【F4】单元格输入一个数后,需要让Excel自动将我输入的数据乘以【F3】的数据,再填写到【F4】中,即【F4】=【F4】*【F3】。

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(1)


二、需要的方法

这就是Excel中的循环引用,在常规情况下会提示错误无法计算,若要执行计算,需要在选项中设置【迭代运算】。

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(2)

迭代运算设置


三、遇到的第一个问题

于是乎,用VBA写了几句代码,以实现这种效果:

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(3)

但是这个代码在执行过程中,会出现一个问题:

由于用的是工作表【Change】事件触发的,只要【F4】单元格内容改变,就会不停的触发计算,但是每次计算都会导致【F4】单元格内容的改变,这就陷入了一个无限循环……这时,即使设置迭代次数为1,都无法避免这个问题……

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(4)

内容改变触发的迭代运算,无限循环

问题一:现在需要解决迭代运算的计算次数,只进行一次计算。


四、第一个问题的解决

解决思路:通过思考,想到了一个方法,设置一个开关,用来对迭代计算进行控制。

比如:开启迭代运算第一次计算时,给【L1】单元格赋值为1,开关关闭。当迭代计算代码执行时,先判断【L1】单元格的值,当【L1】=1时,就停止计算。同时再设置一个事件,让【L1】单元格的值恢复为0,来打开这个开关。(即,当L1单元格为0时,开关状态为开启,执行第一次迭代运算;在第一次代码执行时,给L1赋值为1,关闭开关,计算终止;通过SelectChange事件,恢复L1单元格值为0,开启开关)。【这段话有点绕,实在看不明白就看下图红色框中的代码和注释吧……】

然后修改代码如下:

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(5)

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(6)

第一个问题成功解决


五、遇到的第二个问题

通过上面的代码,设置一个开关,控制开关的开启和关闭状态,解决了迭代运算计算次数的问题。

现在又出现了第二个问题:

Excel的change事件能判断单元格内容的改变,但是编辑单元格也会触发Change事件,即使没有改变单元格内容,Change事件仍然会认为单元格编辑中改变了内容,要执行运算(实际上,当单元格值未改变时,不应该触发计算)。问题演示如下:

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(7)

问题二:现在需要解决编辑单元格时,如果内容没有改变,则不进行计算。


六、第二个问题的解决

解决思路:在编辑单元格前,有一个选中单元格的过程,那么通过SelectChange事件,先记录选中时单元格的值,然后再和编辑完成后的值做对比,如果两个值相同,则不进行计算。修改后的代码如下:

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(8)

修改后,代码的执行效果:

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(9)


这个问题难点在于:

①改变单元格的值才会触发的计算,但是触发计算时又会引起单元格改变,再次触发事件,造成不断循环;

②在单元格内容没改变时,不因该触发计算,如何来判断单元格编辑前后内容是否有改变。

到此,这个问题完美解决。这就是我在遇到问题时的解决全过程,希望对你们有所帮助。


题外话:

在工作中,为了提高工作效率、简化工作流程,把重复的工作内容交给电脑来处理。抽了一个星期的空余时间编制了一个定额库工具,用于快速分析项目成本、拆分和统计项目各种材料、统计各工种的工程量及劳务费用……

这个工具全部模拟专业的计价软件,先录入公司的各种劳务和材料成本(企业定额) ,然后导入项目预算(投标)清单,再将企业定额通过本工具录入清单中,计算项目成本和分析各种数据。下面是部分操作演示:

execl如何做数据分布图(遇到的一个Execl迭代运算问题)(10)

工具演示

点击项目名称即可调出(企业)定额查询录入工具,通过双击项目录入相应的人工、材料、机械。这次分享的这个问题,就是在编制这个工具的过程中遇到的。但是这个工具还未最终完成,有不少细节待完善(类似本文中遇到的问题,已解决)。

如果你也是从事工程造价工作,有制作一个的企业定额数据库的想法和需要,那么可以将你的想法和需求在评论区回复、或者通过私信留言,大家一起交流和探讨。我希望把这个工具做成一个大家都喜欢、并且非常实用的Excel造价工具。


我是上班下班,因为爱好办公软件、喜欢分享。所以来到这里将我的学习心得和踩过的一些坑,和大家聊聊,希望大家学习我成功的经验,避开我踩过的坑。我和你们一起进步。

好了,今天就聊到这里,感谢各位朋友的关注和支持。

如果你喜欢我分享的内容,请点个赞支持下;

如果你觉得我分享的内容对你有帮助,可以关注我;

如果要看我以前分享过的好玩的内容,大家可以去我的主页查看历史文章。

,

免责声明:本文仅代表文章作者的个人观点,与本站无关。其原创性、真实性以及文中陈述文字和内容未经本站证实,对本文以及其中全部或者部分内容文字的真实性、完整性和原创性本站不作任何保证或承诺,请读者仅作参考,并自行核实相关内容。文章投诉邮箱:anhduc.ph@yahoo.com

    分享
    投诉
    首页