ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
楼主: 胡剑0227

[讨论] 有志于用活循环迭代公式的不要错过

[复制链接]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-11 15:34 | 显示全部楼层
再上一个达到 规划求解 功能的应用

这里 长周期 和 短周期 会影响一大批隐藏行的公式,最终影响到 汇总值。
要求 设定最佳的长、短周期组合 使得 汇总值最大。公式中长、短周期条件为大于0,小于100,整数,长周期大于短周期,呵呵。

里面涉及的东西超出了作业1或解析一中所提到的要点...以后会讲到。说难不难,说简单不简单,里面有些暗礁...善于避让暗礁...并养成好的听劲,听到Excel的心跳,那么你也能轻松地写出这些公式。


这里循环迭代实现了两个功能,循环功能 和 判决功能。


[ 本帖最后由 胡剑0227 于 2009-9-11 16:08 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-11 16:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
作业2:
实现本作业后,我想顶楼的实现中需要注意的关键点你大概就能体会到了...
累加1到100.gif

TA的精华主题

TA的得分主题

发表于 2009-9-11 17:16 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=IF(A1<1,1,IF(A1<100,A1+1,A1))
=IF(A1>0,A1+A2,0)
迭代100次

TA的精华主题

TA的得分主题

发表于 2009-9-11 17:26 | 显示全部楼层

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-11 19:04 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
原帖由 zhaozyuan 于 2009-9-11 17:16 发表
=IF(A1<1,1,IF(A1<100,A1+1,A1))
=IF(A1>0,A1+A2,0)
迭代100次

呵呵,但从逻辑上讲对VBA版的同学来说这实在太简单了,不过由于是在单元格中直接书写公式,有很多独特性。

把公式写到单元格看看效果吧,似乎不能 很配合的 进行累加,呵呵。你试试看。

还有...最后一个节拍很关键,你实现一下 A2 单元格只累加到 100.即以后按F9他保持不动。

[ 本帖最后由 胡剑0227 于 2009-9-11 19:05 编辑 ]

TA的精华主题

TA的得分主题

发表于 2009-9-11 20:22 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
=IF(A1>=100,101,IF(A1<1,1,IF(A1<100,A1+1,A1)))
=IF(A1>100,A2,IF(A1>0,A1+A2,0))

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-11 21:51 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
嗯,就是比较难调整到初始的 两个 都等于 1 的情况。写完公式后,能得到的状态最接近的似乎是 A1=2,A2=2,于是加到100时缺失了一个1,呵呵。

在单元格中写迭代公式要注意单元格之间的初始值的传递过程,这个确实比 代码 要麻烦的多。

这里大家可以感受到 脉冲是针对单元格的,而且 上面的单元格 先得到脉冲,下面的单元格后得到脉冲,这点是关键...

这也是A1必须循环到101时,A2才累加到100.

TA的精华主题

TA的得分主题

发表于 2009-9-13 15:33 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
这个也太牛了吧?

TA的精华主题

TA的得分主题

发表于 2009-9-14 13:10 | 显示全部楼层
原帖由 胡剑0227 于 2009-9-11 21:51 发表
嗯,就是比较难调整到初始的 两个 都等于 1 的情况。写完公式后,能得到的状态最接近的似乎是 A1=2,A2=2,于是加到100时缺失了一个1,呵呵。

在单元格中写迭代公式要注意单元格之间的初始值的传递过程,这个确实比 ...


因为想把两个单元格的初始值调整到都等于1,所以加了一个辅助列进行迭代控制,用来启动“心跳”,但是为什么启动第一次“心跳”后,A1单元格却是2,A2是3呢?即表示,此时“心跳”了两次,但从动画中显示,明明是有一个瞬间A1和A2的值都是1呀,按照胡兄的说法,上面的单元格先得到“脉冲”,那么是不是因为A1单元格先得到“脉冲”取得值1,而A2单元格后得到脉冲取得值1后,A2单元格值的更新触发了第二次“心跳”使得A1和A2再次得到一个"脉冲",让A1单元格得到第二个值2,A2单元格得到第二个值3呢? 1-100累加.gif

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-14 13:20 | 显示全部楼层

回复 19楼 sunbin200388 的帖子

呵呵,使用 辅助 单元格来控制 初始态 是一个很不错的想法。

问题二:
单元格公式值得变化并不会触发重新计算,否则上面两个单元格之间互相触发就 没完没了 了,呵呵。

上面你选择  开始 时确实触发了两次计算,在单元格的数据有效性 序列 下拉中选择 时触发了两次计算。

从上面是否可以体会到 单元格之间的依赖性。这点从脉冲的角度,分析哪些是当前值(针对脉冲过来的那一刻)就能很好的解决由 依赖性带来的 混淆感。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2024-12-28 04:05 , Processed in 0.038299 second(s), 9 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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