excel迭代存储
A. 如何用excel进行迭代计算
方法/步骤:
1.
如下单元格在引用自身的时候,出现循环引用警告提示
2.
点击office按钮,选择excel选项
3.
在公式--计算选项,对迭代进行设置,我这里设置了100次
4.
如下所示,完成设置后,单元格进行了100次迭代 END
B. excel 的迭代计算怎么应用我目前对这个没什么概念。
如何使用Excel迭代计算
如何使用Excel迭代计算
大家都知道,数独是一种逻辑拼图(我3年前完全沉迷于它) ,要求您把数字1-9遵守一定的规则成一个网格(抽签更多信息关于Sudoku游戏可在网上找到) 。
研究员时在Excel的球队,科里丹写道,试算表为解决数独游戏使用Excel的公式,并使它可在网上办公(在这里) 。丹的电子表格是伟大的,与许多电子游戏解决了,它没有使用任何的VBA或其他脚本做的工作,解决难题,并依靠用迭代计算功能的Excel 。这是相当冷静,一直是热门下载,但有一件事情的电子表格,我想看看如果我不能改善只是它是多么复杂。事实上,丹取得的每一个细胞自身不同的公式,他最后不得不使用VBA创建的公式,因为它维护和调试的VBA没有写入所有这些不同的公式,一种自动的方式是不可能的。
我一看丹的电子表格,我想我自己的版本的数独解算器,不仅只用于公式,但也是一个地方的公式相对理解和有少量的独特配方。它变成了不说,很难建立,但我想我学到了相当多尝试不同的办法的问题作出了迭代模型类似这样的表现良好,并在同一时间得到合理维护和理解的。我认为,甚至可能出现一个合理有益的方式,在研究抽象的公式,考虑到Excel公式语言。我总是希望博客的过程,创造此试算表,以及如何工作的迭代公式,以显示力量, Excel的公式语言,因为它表明了有益的循环引用和迭代计算,并因为我觉得这是一种令人难以置信数额的乐趣,使这里不用。很多人创造了更强大的求解器,许多电子表格,有的只用公式,但我想尝试解释如何您可以创建一个求解,希望分享一些公式过关,人们找到有用的。
预reqs
创建一个电子表格的解决数独不是入门级spreadsheeting 。除了不错的公式,您需要了解的概念,迭代。克里斯来的表现非常出色的解释专题在其早先的职位迭代和康威的生命游戏,所以我不想重复,我会简单地假设你已经了解迭代。第二,我们要作出极其沉重的使用已命名的范围,并为我做的东西,新的名称经理是非常有益的(见公式建设改善第4部分:定义名称的一些有关本)和我米要承担工作的知识和普遍的命名范围(但我要表现出一定的技巧可能是新的经验公式,即使用户) 。最后,您需要至少熟悉阵列符号在Excel中。
设立审计委员会
对于那些我还没有输了,我要开始建立了一系列的主板非常希望那些旦科里使用:一个9x9局对我的投入,一个9x9局解决方案,以及27x27局可能的值在每一个箱子。我这样做是通过改变行高,列宽,字体和缩放等,所有的细胞是小广场,然后运用边界和填充得到如下:
的投入和合理的解决方案板直截了当(输入板是一个在左上角在这里您可以键入一个难题有待解决,该解决方案是董事会的正确答案希望显示) 。董事会可能的值,我会打电话的有效值局,是有一点麻烦。这是27x27 ,因为每一个箱子中的投入和解决板由一个3x3的细胞在有效值局。每个9细胞是否代表一个1-9的数字仍然在运行的实际价值相应的解决方案中局和一系列可能的值为特定细胞中的输入/解决细胞是一套所有数字在一个3x3 “大细胞”不属于空白。如果尚未,其目的/使用本委员会应成为明确以后。现在,让我们填写所有可能的值从8时59分在上述每个大细胞。
填写有效值局
我们要做到这一点,建立一个单一的公式,将填补在各种数字1-9在此基础上连续列公式坐落在,然后我们将稍后添加逻辑空白的数字是无效的。这个公式是有些复杂的电子表格比平均公式,所以我会首先整个公式,然后分解。这看起来如下:
=国防部(栏(格A1 ) -1,3 ) + 1 +国防部(列(格A1 ) -1,3 ) * 3
当这是进入左上角细胞有效值局,然后装入整个有效值局,这使得结果如下:
请注意,您想要做的填写带有选择性粘贴|公式或CTRL输入,否则你会搞砸所有漂亮格式。
打破这个公式下,行和列返回(杜)的行或列的参考传递给他们一些。通过这些职能格A1 ,因为在此公式中,意味着他们将给予我们一个号码,始于一上升。第一部分的公式使用模函数变换编号栏柱成0-2的数字,然后添加一个获得1-3 。对此,我们添加一个0 , 3 ,或6 ,根据行号使用的模函数的结果ROW函数。
其次,因为这有点gnarly公式已经坐在一起,我们将不得不使用它所有的地方,我们要借此配方及将其移出细胞和成一个命名范围。这使我们能够摘要以外的所有逻辑公式到一个单一的,易于理解的名称。由于没有一个更好的名字,我将称之为“ onetonine ” ,将有相同的精确公式,我们刚刚建立。由于背景的相对引用(即他们是否为当前的细胞)是由什么细胞你在当您创建的命名范围,这是关键的是,您刚开始时选择单元格A1 ,然后建立新的命名范围,从而使您的公式工程各地的资产负债表内。
这也是为什么我们允许水槽的三排和三栏周围所有的董事会。
现在,我们可以把我们的新名称和测试它在局,象这样:
这里按CTRL +输入是目前最简单的方法来设定的公式中的所有细胞的有效值局。首先,请选择整个局,然后键入公式中,而是紧迫的输入,只需按两下Ctrl + Enter键来填补公式你刚才输入的所有细胞(不搞乱他们的格式) 。
建立解决局
我们会想什么基础有效值离开某一方块就我们目前的解决办法看起来像(而不是输入) ,但为了做到这一点,我们需要的东西,解决局。首先,至少,该解决方案一定会包含所有的箱子的数量从投入局。让我们先通过这样做最简单的方式,而追赶的情况下空白。在解决局,让我们所有的细胞有平等只是在相应的单元格输入板使用相对引用,除非输入细胞是空白的。绝对最简单的方式做到这一点是与下列公式(中显示的形式,这将是进入细胞D16 ) :
=如果(个人财产,个人财产, “ ” )
再次,请使用Ctrl + Enter键来填补这一到适当的细胞。现在,我们有基础的工作,让我们更可重复使用的和有意义的使用已命名的范围。
就像我们的名字onetonine ,让抽象的概念,指的是正确的输入细胞从细胞中的任何解决方案,使该委员会成为一个名称。我们需要做一些类似的所有板在某一点,所以我们将开始使命名范围为每个板(我选择in_board , sol_board ,并val_board ) ,然后去一个名字从溶液局输入板( in_cell_from_sol )这是简单=主要! D4类,然后使用这个改变公式是=如果( in_cell_from_sol , in_cell_from_sol , “ ” ) 。请注意,这需要投入D16 。
确定,到目前为止,我们只是使我们的公式不再,但相信我,这一概念成为一种生活程序。做同样的有效值细胞解决董事会细胞是唯一有一点麻烦。 sol_cell_from_val的名称是:
=指数( sol_board ,中断( (列(主要!格A1 ) -1 ) / 3 ) 1 ,中断( (栏(主!格A1 ) -1 ) / 3 ) +1 )
这必须是建立由细胞的P4 。此公式使用Row和柱连同司运营商和INT转换的坐标从目前的细胞在27x27局的坐标在9x9板,然后使用索引获得细胞出sol_board相应的坐标。
对二者的方式测试这个公式是按一下“是指”框中的名称经理从不同细胞的有效值局。取决于细胞你在您会看到“舞蹈蚂蚁” (移动突出)为不同的细胞-细胞希望相应的解决办法局。
现在,我们有一些基本知识,让我们在一个实际难题,并请参阅关于让投入传播到该解决方案董事会和有效值局。这是困惑我们会使用:
进入它,解决局看起来应该像这样输入板。为了使有效值局的工作中,我们使用这个公式,所有有效的董事会细胞:
=如果( sol_cell_from_val <>"",中频( sol_cell_from_val = onetonine , onetonine ,""), onetonine )
这意味着,现有的存储单元是笼罩了存在的价值,如果在解决细胞和价值不是当前的onetonine价值。
这应该给您:
现在,我们准备这样做的东西,实际上将有助于拿出解决方案的基础上的规则和策略的游戏。
检查中的一些行的解决办法局
主要规则的游戏是,你不能有两个相同的号码中的任何行,列,或3x3大方块。我们将开始增加的规则不能有一个以上的号码,任何行,然后在列和大箱子。例如,在第二个大细胞在第一行中,没有一个号码4 ,第2 ,第7或9有可能是由于这条规则。我们可以做到这一点,把空白的任何细胞的有效值局为1 )的解决方案中不存在(而这正是我们进入决赛onetonine的公式有效值细胞)和2 )行的解决方案包含了一些委员会等于现值onetonine 。请注意,条件# 1正是过去onetonine显示(即还没有办法可以解决当前的大细胞) ,因此,所有我们能做的就是把逻辑# 2有。这种逻辑可以表示为:
=如果( COUNTIF ( sol_row_from_val , onetonine ) “ 0 , ” “ , onetonine )
凡sol_row_from_val是:
=指数( sol_board ,中断( (列(主要!格A1 ) -1 ) / 3 ) 1 , 0 )
同样,这必须输入从P - 4 。
因此,结合这些我们得到:
=如果( sol_cell_from_val <>"",中频( sol_cell_from_val = onetonine , onetonine ,""),中频( COUNTIF ( sol_row_from_val , onetonine ) “ 0 , ” “ , onetonine ) )
其中,而不是简单的,至少是可以理解的,可以为您提供一个有效的价值局看起来像这样:
延伸至栏和( 3x3 )大盒
当我们去购买的规则, “没有两个相同的号码一栏”和“没有两个相同的号码,一个大盒子” ,在这同样的方式,我们会遇到两个问题: 1 。您不能创建sol_bigbox_from_val直接使用指数,因为索引仅返回一个细胞,行,或列从范围或整个范围和2 。这将开始让笨重的所有三个COUNTIFs OR'd一起在本月底公式。
为了解决第一个问题,您可以使用胶印-因为你可以使用抵销创建的任何其他参考这里-而是因为offset是挥发性这将导致性能问题的道路。一个更好的解决办法是采取联盟的两次提到,你从指数(使用Excel中的联盟运营商-冒号) ,以便使3x3范围。这给我们提供了sol_bigbox_from_val如下公式(输入从P - 4 ) :
=指数( sol_board ,中断( (列(主要!格A1 ) -1 ) / 9 ) * 3 +1 ,中断( (栏(主!格A1 ) -1 ) / 9 ) * 3 +1 ) :指数( sol_board ,中断( (列(主要!格A1 ) -1 ) / 9 ) * 3 +3 ,中断( (栏(主!格A1 ) -1 ) / 9 ) * 3 +3 )
现在我们可以选择这个公式除了更容易。该中断,行,司的一部分说,每9行您将在有效值局,下移了一块三行解决局。有一个类似的表达栏完成了同样的话跨越。第二次提及的恰恰是第一个参考,但抵消两排下来,两栏之间,让您有3x3方块。
现在我们有了这一点,我们可以写一个大的公式,包括是否onetonine价值目前已经存在的任何行,列或大框,但让我们在这里再次使用抽象保持基本公式有效值局更简单。而不是把它直接插入公式,让我们创造一个新的名字叫做solution_in_rcb为“不存在解决细胞与我的电话号码中的任何一种行,列,或bigbox ? ”这名只有已返回true或false (做试验的一部分,条件# 2不段) ,尽管没有得到短,其实是很简单写:
=或( COUNTIF ( sol_row_from_val , onetonine ) “ 0 , COUNTIF ( sol_col_from_val , onetonine ) ” 0 , COUNTIF ( sol_bigbox_from_val , onetonine ) “ 0 )
利用这个新名字使我们的新配方有效值细胞:
=如果( sol_cell_from_val <>"",中频( sol_cell_from_val = onetonine , onetonine ,""),中频( solution_in_rcb , “ ” , onetonine ) )
这不仅是少于这个公式已经和更可以理解的,这也导致一些明确的地方,只有一个可能的解决办法:
所以我们可以眼球了一些解决办法,但诀窍是要养活这些委员会的解决办法。这是迭代的用武之地下一次我们会使用迭代和几个公式技巧来解决一些Sudokus 。
C. EXCEL中迭代计算设置如何保存
EXCEL的设置是按照你在使用EXCEL程序时打开的第一个文档的设置为准,后续打开的EXCEL文件都是同第一个打开的文件相同。
所以你朋友如果先打开你的这个表就没问题。
=============================================================
不能——在我的知识范围内!
D. excel迭代计算得结果,每次保存结果这个结果都会变,保存一次就加这个结果一次。求解释
整体公式简单调整一下 增加判断函数 IF 就是说,如果出现本身数值为0时,显示为“” 也就是空 也可以显示为“0” 这样就可避免这个问题了
E. Excel怎么使用迭代计算
1、Excel表格有迭代计算时候,打开会弹出提示框:“循环引用警告,一个或者多个公式包含循环引用。循环引用是指某个.....”。
3、循环套用公式举例:
现在我们设置迭代计算开启并且循环5次
设置:A2=10,B2=A2+B2
F. excel迭代计算怎么不保存一次算一次
你好,你可以把整体公式简单调整一下 增加判断函数 IF 就是说,如果出现本身数值为0时,显示为“” 也就是空 也可以显示为“0” 这样就可避免这个问题了。
如果你想使用excel迭代计算。打开Excel数字表格,在下侧,点击“选项”,在弹出的Excel选项中,点击“公式”,在“计算选项”中,调节迭代计算次数即可。
补充:迭代运算是反复的运算,引用自已进行计算,迭代运算次数就是重复运算多少次.相当于编程中的循环.
G. excel怎么做迭代
正常情况下,excel公式是不允许引用公式自身所在单元格的,但在迭代计算时就得循环引用以达到迭代的目的。
要迭代计算03版在工具>选项>重新计算中选上“迭代计算”,并选择合适的次数与误差,次数过大会造成“死循环”。07版在OFFICE大图标>选项>公式>计算选项中设置。
H. 请教一下 excel的迭代计算
迭代相当于其他语言中的循环,由于LISP语言一切均为函数,所以其迭代也是通过函数实现的。
迭代也是一种主要的函数定义手段,尤其是熟悉象PASCAL这样的过程型语言的用户,可能更习惯于使用迭代而不是递归。使用迭代往往比使用递归效率高和节省内存,但有些问题使用递归要比使用迭代简单、明了。如上面定义过的COUNTATOMS函数,若只单纯地使用迭代,其定义要复杂得多。而且递归是"纯"的LISP定义手法,迭代只是为了增加更多的定义手段才增加到LISP中来的。
最常用到的迭代,是通过PROG函数实现的,PROG函数本身没有什么具体的含义,它只起到一种可以进行迭代的媒介作用。在PROG函数内,可以使用GO函数转到某个给定的标号,也可以通过RETURN函数退出PROG,并使得PROG的返回值为RETURN的参量值。
例如,使用PROG迭代定义阶乘函数:
这里给出的是使用迭代方法,而非递归方法定义的阶乘函数。
(DEFUN N!(n)
通过PROG函数实现迭代,其中的((result 1))定义了一个局部变量result,其初始值为1。该变量只在PROG函数内部有效。在这里变量result用于记录计算的结果。
(PROG((result 1))
LOOP为循环标记,可以通过GO函数返回到这里。LOOP只是一个标记,也可以使用其他的符号表示。这种标记只可以在PROG(或者其他与PROG类似的函数)内部使用。
LOOP
通过条件函数COND定义,当n为0或为1时,回送结果result。其中函数RETURN是跳出PROG的函数。
(COND((= n 0)(RETURN result))
((=n 1)(RETURN result))
其他情况下,将n乘以result,并使得n等于n-1,通过GO函数,跳转到LOOP处,循环执行。
(T(SETQ result(* n result))
(SETQ n(- n 1))
(GO LOOP)))))
紧跟在PROG后面的表,说明了result是一个局部变量,其初始值为1,下面的LOOP是一个标号,当n=0或n=1时,通过RETURN函数,回送result的值,其它情况,将n乘到result上去,并得到n减1,使用GO函数返回到标号LOOP,如此循环往复,直到结束为止。
MAP类函数是LISP语言提供的另一类处理迭代的函数,这类函数的特征是函数名均以MAP开头。当以表的元素为循环主题时,这类函数往往用起来会非常简练和方便。
LISP中还提供了一类隐式迭代函数,这一类函数的函数名均以MAP开头,故称它们为MAP类函数。MAP类函数的一个典型代表是MAPCAR函数。
MAPCAR函数的第一个参量是一个要调用的函数名,其它参量均为表,其它参量的个数等于第一个参量(它是一个函数名)所需要的参量数。MAPCAR的功能是,从第二个参量开始,依次取出各个参量的第i个元素(1≤i≤n,n是各个参量中最短的那个表的长度),然后把它们作为第一个参量的参量进行求值,每次求值的结果形成一张表作为MAPCAR的回送值。
图5.3给出了(MAPCAR '+ '(1 2 3) '(4 5 6))的操作示意图。该图表示,MAPCAR函数依次从两个表中取出对应位置的元素,对他们实行"+"操作(由MAPCAR函数的第一个参数"'+"指定),并将计算结果组成一个表。
(MAPCAR '+ '(1 2 3) '(4 5 6))==>(5 7 9)
它的作用方式可用图5.3表示。
下面,我们使用MAPCAR函数,给出前面已经定义过的COUNTATOMS函数的更简洁的定义。
该例子重写了前面已经定义过的COUNTATOMS函数。在这里使用MAPCAR函数,并与递归相结合,可以看出定义是多么的简练。
(DEFUN COUNTATOMS(s)
(COND((ATOM s)1)
(T(APPLY '+(MAPCAR 'COUNTATOMS s)))))
这里我们用到了APPLY函数,通常APPLY有两个参量,第一个参量是一个函数名,第二个参量是一张表,APPLY的功能是将表中的所有元素做为函数的参量进行求值,并将函数的返回值作为其自己的返回值。
(SETQ L '(1 2))
(APPLY '+ L)==>3
LAMBDA表达式可以定义匿名函数。匿名函数常与MAPCAR等需要函数名作为参数的函数一起使用。LAMBDA函数以匿名的方式定义了一个函数。
有时为了完成更复杂一些的操作,在MAPCAR函数中经常要用到LAMBDA式子。LAMBDA式子可以定义匿名函数,凡是在要求用函数名作为参量的地方,均可以用LAMBDA式子代替。
LAMBDA式子的格式如下:
(LAMBDA(<形参表>){<函数定义体>})
作为使用LAMBDA的例子,我们把COUNTATOMS重新定义如下:
(DEFUN COUNTATOMS(s)
(APPLY '+(MAPCAR '(LAMBDA(x)
(COND((ATOM x)1)
(T(COUNTATOMS x))))s)))
该定义的思路是:将s中的各个元素交给MAPCAR去处理,若某个元素是原子,就记数1,若不是原子(一定是表)就递归调用COUNTATOMS来处理,然后将计算结果加起来作为COUNTATOMS的返回值。