Spread的公式計算引擎支持300多種內(nèi)置函數(shù),并支持通過內(nèi)置函數(shù)和運算符來自定義公式。支持的函數(shù)包括日期、時間函數(shù)、工程計算函數(shù)、財務計算函數(shù)、邏輯函數(shù)、數(shù)學和三角函數(shù)、統(tǒng)計函數(shù)、文本函數(shù)等。 公式計算引擎支持單元格的引用、表單的交叉引用、循環(huán)引用、函數(shù)嵌套等。 放置公式在單元格中你可以添加一個公式到一個單元格或單元格區(qū)域內(nèi)。 你還可以向一行或者一列中所有的單元格添加公式。該公式是一個具有說明公式字符串的公式,通常是包含一個函數(shù),運算符和常數(shù)的集合體。 當把一個公式分配到行或列的時候,這個公式為每一個行或列的單元格所用(假設該公式?jīng)]有在單元格級別上被覆蓋)。對于在一行或者一列中的公式,Spread使用行或列中的第一個單元格為基準位置。如果你使用相對尋址,這個公式為列A中的每一個單元格進行測算,每一個單元格中都有一個不同的結(jié)果 。如果你想要列A中每一個單元格對C2和D2的值的和進行計算(而不是C列和D列中每一個單元格的值進行計算),那么你就可以使用公式$C$2+$D$2,它使用了絕對地址。 你可以通過指定該對象的Formula屬性來添加一個公式。 下面已經(jīng)給出使用代碼的步驟。 當你使用Cells對象的Text屬性對單元格進行賦值時,表單使用單元格類型將一個指定的字符串轉(zhuǎn)換為需要的數(shù)據(jù)類型。舉例來說,一個數(shù)字單元格類型將字符串轉(zhuǎn)換為雙精度浮點數(shù)數(shù)據(jù)類型。當你使用Cells對象的Value屬性對單元格進行賦值時,表單根據(jù)原樣接受賦值的對象并且不會進行解析。因此如果你使用一個值進行設置,它仍然會是字符串。一些計算的函數(shù)(舉例來說,SUM)忽視了單元格區(qū)域中的非數(shù)字的值。舉例來說,如果單元格區(qū)域A1:A3包含數(shù)值{1,“2”,3},那么公式SUM{A1:A3}計算的結(jié)果為4因為SUM函數(shù)忽略了字符串“2”。請確定你正確的設置了每一個單元格的數(shù)字,這些數(shù)字用于公式的計算中并且你已經(jīng)將其設置為正確的數(shù)據(jù)類型。 下面的這個示例顯示了如何指定一個公式,找到第一個單元格的值的五十倍的結(jié)果,并且將結(jié)果放入另一單元格中。然后,它可以求得一個單元格區(qū)域的總和 (A1到A4)并且將結(jié)果放入第三列的每一個單元格中。
公式中的單元格引用除了數(shù)值,運算符,以及函數(shù)之外,一個公式還可以包括其它單元格值的引用。舉例來說,要查找兩個單元格的值的總和,該公式可以通過行和列查找到單元格的坐標。 你可以使用絕對單元格引用(根據(jù)行和列的實際坐標)或相對單元格引用(相對于當前單元格的坐標)。你可以使用ReferenceStyle屬性,選擇對表單使用哪種類型的單元格引用。一個公式不能同時包含絕對單元格引用和相對單元格引用。如果你已經(jīng)將單元格引用樣式變成不能顯示公式的樣式,Spread控件向公式提供一個問號作為占位符以代表不能顯示的單元格引用。 下表包含若干個示例,它們有效地使用了公式的引用:
如果你在單元格B1的公式中定義相對單元格引用 為RC[-1]+R[-1]C,則公式將被解析為左邊的(A1)單元格的 值加到上面的單元格(“B0“)的值當中去。 控件會將單元格"B0" 的值看作空的單元格。如果你更改單元格引用樣式風格為A1的樣式,公式會變?yōu)锳1+B? ,因為A1的樣式不能表示單元格"B0"。然而,控件仍認為公式會使用R1C1引用樣式。 Spread不支持的區(qū)域索引:此區(qū)域的開始行 和結(jié)束行由不同的引用類型組成(例如,一個絕對坐標和一個相對坐標)。 兩個行坐標要么都是絕對的,要么都是相對的。舉例來說: R1C[-1]:R5C[-1] ' 支持 (絕對行 : 絕對行) R1C[-1]:RC[-1] ' 不支持 (絕對行 : 相對行) RC[-1]:R5C[-1] ' 不支持 (相對行 : 絕對行) R[-5]c[-1]:RC[-1] ' 支持 (相對行 : 相對行) 通過設置ReferenceStyle屬性或者使用 默認ReferenceStyle值指定引用樣式:
公式中的表單引用當一個單元格的引用包括對另一個工作表單元格的引用時,這被稱為表交叉引用。例如下面這個公式中的表交叉引用使用了加法操作符: FirstRoundData!A2 + SecondRoundData!A2) 如果表單名稱包含非字母數(shù)字字符( 例如,空格),那么在公式中用單引號擴上表單名稱。舉例來說,假設表單名稱是“page one”,那么該公式就是SUM('page one'!$A$1:$A$5)。 如果表單名稱包含單引號字符,那么在公式中使用兩個單引號字符。舉例來說,假設表單名稱是“scott's page” 那么該公式就是SUM('scott''spage'!$A$1:$A$5). 下面的示例使用了公式中默認的表單名稱:
公式中的嵌套函數(shù)你可以將一個函數(shù)嵌套在公式的另一個函數(shù)中。在下面的的這個示例中,兩個單元格(使用SUM函數(shù)建立)的值的和被嵌入到PRODUCT公式。 首先單元格類型被設置,然后單元格值被設置。
在公式中使用循環(huán)引用你可以引用一個單元格公式,這個單元格又包含該公式,就是一個循環(huán)引用。這是一個典型的函數(shù)遞歸的方式,通過對相同函數(shù)的迭代,接近一個最佳值。你可以選擇函數(shù)迭代(遞歸)自身的次數(shù),通過設置重新計算迭代次數(shù)屬性。 如果公式“=COLUMNS(A1:C5)”在單元格C4中,就不會有結(jié)果返回。換句話說,如果該數(shù)組中最后一個行索引與列索引都大于公式所在的單元格的行索引與列索引,公式就不會進行計算。在這種情況下,單元格C4處于區(qū)域A1:C5中。這是公式中的一個循環(huán)引用,所以Spread并不計算公式的值,除非迭代被開啟。 Spread通過迭代解決了循環(huán)公式的問題。在每次重新計算周期中,控件會進行指定次數(shù)的迭代。在每次迭代中,每一個重復的公式只進行一次計算。 一個循環(huán)引用的例子如下: 1. 設置公式單元格的單元格類型。 2. 使用表單的MaximumIterations屬性設置重新計算迭代次數(shù)、 3. 設置表單的引用樣式。 4. 使用單元格中的循環(huán)引用來定義公式
附:Spread for Windows Forms快速入門系列文章 Spread for Windows Forms快速入門(1)---開始使用Spread Spread for Windows Forms快速入門(2)---設置Spread表單 Spread for Windows Forms快速入門(3)---行列操作 Spread for Windows Forms快速入門(4)---常用的單元格類型(上) Spread for Windows Forms快速入門(5)---常用的單元格類型(下) Spread for Windows Forms快速入門(6)---定義單元格的外觀 Spread for Windows Forms快速入門(7)---單元格的交互操作 |
|