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的返回值。