ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

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

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

[复制链接]

TA的精华主题

TA的得分主题

发表于 2009-9-21 10:43 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 60楼 胡剑0227 的帖子

呃,好像一开始总是10,并不是C2的位置关系,而是改动起始开关的时候计算了两次,汗

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-21 11:02 | 显示全部楼层
楼上确定2次?呵呵

这里确实和C2的位置是没有关系,而且也只是1次触发。数据有效性-序列 是触发两次。
慢放.gif

TA的精华主题

TA的得分主题

发表于 2009-9-21 11:06 | 显示全部楼层

回复 62楼 胡剑0227 的帖子

不好意思,是数据有效性的问题,呵呵,横向的还发生过直接从3开始

TA的精华主题

TA的得分主题

发表于 2009-9-21 11:59 | 显示全部楼层
那就这样了,不能用有效性序列

一次次按似乎没问题,按住F9不放时间长了再放开好像就有问题了

循环精灵-解析2003.rar

15.32 KB, 下载次数: 52

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-21 14:48 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册

回复 64楼 liuzj2s 的帖子

恩,公式写的很工整、漂亮,是个高手。一个判断方式使用了SUM,另一个使用了PRODUCT,其中的奥妙就是本题的目的,呵呵...

[ 本帖最后由 胡剑0227 于 2009-9-21 14:59 编辑 ]

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-21 20:59 | 显示全部楼层
会 二进制循环 后,就会做遍历个个状态然后进行优先选择的 策略分析,稍微修改 就能解决类似的问题。
比如穷举 21 个 数中 任取5 个数之类的。
今天刚看到一个题...所以借用了,呵呵。
大家可以尝试实现一下:题改成
1-21这 21个 数中 任取5个,请穷举这5个数之和。总共20349种情况...
这就是我上面提到的 单元格组合循环 成就的 大用。
原帖为:http://club.excelhome.net/viewth ... p;page=1#pid3181248


这里 1-21 所以直接二进制循环 速度慢的要死,需要考虑改进。

[ 本帖最后由 胡剑0227 于 2009-9-21 21:05 编辑 ]
21取5取和.gif

21取5 2007.rar

75 KB, 下载次数: 43

含公式

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-9-23 18:01 | 显示全部楼层
解析64楼佳作,探析其中玄机。
先上图,再体会一下整个流转过程(可以设置迭代次数为1,以更好的体会其中的变化,并获取分析迭代公式的能力)

从上图可以看出:节拍0:A4-A3-A2-A1:0-0-0-0
                            节拍1:A4-A3-A2-A1:0-0-0-1
                            节拍2:A4-A3-A2-A1:0-0-1-0
                            节拍3:A4-A3-A2-A1:0-0-1-1
                            节拍4:A4-A3-A2-A1:0-1-0-0
                            节拍5:A4-A3-A2-A1:0-1-0-1
                             .............................................
所以,不注意的其中玄机的话很容易范逻辑错误...在 迭代次数 设置为1 的情况下,上面的一个节拍等同于 按一次 F9.
具体公式不讲,主要来分析其中的逻辑状态:
               A1:每次按 F9 ,得到一个计算脉冲,就在 0 和 1之间转换一下,这个问题不大。
               A2:每次按 F9 ,得到一个计算脉冲,如果在按F9之前 A1=1那么它在 0 和 1之间转换一下。
               这句话没错,但并不能直接用来写公式!!!
               A2在 0 和1 之间转换一下的逻辑判断为:A1=0,当A1=0 时,A2在 0 和 1 之间进行转换。这个是关键,需要吃透的。吃透了这点,就把这本分的关键把握住了。
               可能你会在这里觉得胡剑犯浑了,呵呵。
               这个问题在21楼强调过,不过没有具体事例不好理解其重要性:
注意:在A2得到脉冲的瞬间,所谓的A1的值是已经经过了这一轮的脉冲触发后得到的新值!!!
                           从这里我猜想 计算脉冲 是依照单元格挨个分配的,有时间先后顺序,而这个时间分配顺序是从上到下,从左到右的Z字型,并白一点说就是 A1,B1,C1...然后A2,B2,C2...
                           所以如果将 A2 0-1转换的逻辑变成 A1=1 时,如果确实按 F9 之前A1=1,但按F9以后由于A1先进行运算,A1已经从1变成0了,所以A2只能从过判断接受 计算脉冲时 A1=0 反过来判断按F9之间 A1=1。
               这一点不仅在写 循环 时非常重要,在智能判决时也要特别注意。

               明白了这一点,A3的判决条件也就不是A1=A2=1 而是 A1=A2=0了。所以这里逻辑本身还是简单的,难的是体会出 计算脉冲 的分配顺序 带来的影响。
======================================================================================

[ 本帖最后由 胡剑0227 于 2009-9-23 18:51 编辑 ]
体会其中的玄机.gif

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-1 18:36 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
今天又有执著于公式的同学,想要把一堆数中将 所有 相加 等于 某个数的 组合 都罗列出来。如果 求和条件 为 10,那么,1,9;2,8;1,2,7这三组都要罗莉。
具体看例子:
大家可以尝试实现一下,再实现的时候 需要考虑这个问题:循环迭代因子 在 图中是在最上方,这个是否有讲究...

在处理这类问题时,就需要注意一点(最好将迭代因子 放在 最先 运算的 区域,这样便于 判决,或者说判决部分最好 在相对 迟后 运算的 位置,这个需要好好体会..当然也只是个人的一点看法,在本例我特意写成 行 的形式而没有写成列的形式,也有这方面考虑)




目的就是要把 1-10,不过似乎漏了4,不过无关紧要,这些数中将 和 为 10 或 某个目标值 的数 都罗列出来。

[ 本帖最后由 胡剑0227 于 2009-10-1 19:03 编辑 ]

求集合0227.rar

3.18 KB, 下载次数: 44

含公式

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-2 06:22 | 显示全部楼层
68楼 思路解析:
C1:K1作为循环因子 从000000000自增到111111111,这中间就遍历了所有的状态。

当C1:K1 转置后和 A3:A11 进行 相乘相加,如果求得和正好 是目标值 10,那么计数...

同时记录这个时候 的 循环因子 状态值。(根据行 13 中的数字)

TA的精华主题

TA的得分主题

 楼主| 发表于 2009-10-8 13:02 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
大循环应用经验小结:
套路:
1、用多个单元格构造一个大的循环,最普通的情况就是二进制的0和1自增情况,在逻辑上当做各个状态,或者说表示各种可能性。
2、根据当前的各个状态进行 判决 ,如果符合条件,记录这个状态。如果是找一个方案,那么这样就找到了这个方案,如果要罗列所有方案,那么可以 用一个单元格来做 计数器,辅助记录各个方案。

技巧:将 循环单元格 部分放在 时间流的上流,将决策判决、判决依据放在 时间流的下流。
这里的 时间流概念 也是个人臆造出来的,顺序是 从上到下,从左到右,Z字形的顺序,这个是工作表中 计算脉冲(也属本人臆造,呵呵) 分配的顺序


这些经验...有待检验...出现问题大家再一起拯救,哈哈。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

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

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

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

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

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

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