日韩黑丝制服一区视频播放|日韩欧美人妻丝袜视频在线观看|九九影院一级蜜桃|亚洲中文在线导航|青草草视频在线观看|婷婷五月色伊人网站|日本一区二区在线|国产AV一二三四区毛片|正在播放久草视频|亚洲色图精品一区

分享

Spread for Windows Forms快速入門(9)

 心靈窗畔 2015-05-30

Spread的公式計(jì)算引擎支持300多種內(nèi)置函數(shù),并支持通過內(nèi)置函數(shù)和運(yùn)算符來自定義公式。支持的函數(shù)包括日期、時(shí)間函數(shù)、工程計(jì)算函數(shù)、財(cái)務(wù)計(jì)算函數(shù)、邏輯函數(shù)、數(shù)學(xué)和三角函數(shù)、統(tǒng)計(jì)函數(shù)、文本函數(shù)等。


公式計(jì)算引擎支持單元格的引用、表單的交叉引用、循環(huán)引用、函數(shù)嵌套等。


放置公式在單元格中


你可以添加一個(gè)公式到一個(gè)單元格或單元格區(qū)域內(nèi)。 你還可以向一行或者一列中所有的單元格添加公式。該公式是一個(gè)具有說明公式字符串的公式,通常是包含一個(gè)函數(shù),運(yùn)算符和常數(shù)的集合體。


當(dāng)把一個(gè)公式分配到行或列的時(shí)候,這個(gè)公式為每一個(gè)行或列的單元格所用(假設(shè)該公式?jīng)]有在單元格級(jí)別上被覆蓋)。對(duì)于在一行或者一列中的公式,Spread使用行或列中的第一個(gè)單元格為基準(zhǔn)位置。如果你使用相對(duì)尋址,這個(gè)公式為列A中的每一個(gè)單元格進(jìn)行測(cè)算,每一個(gè)單元格中都有一個(gè)不同的結(jié)果 。如果你想要列A中每一個(gè)單元格對(duì)C2和D2的值的和進(jìn)行計(jì)算(而不是C列和D列中每一個(gè)單元格的值進(jìn)行計(jì)算),那么你就可以使用公式$C$2+$D$2,它使用了絕對(duì)地址。


你可以通過指定該對(duì)象的Formula屬性來添加一個(gè)公式。 下面已經(jīng)給出使用代碼的步驟。


當(dāng)你使用Cells對(duì)象的Text屬性對(duì)單元格進(jìn)行賦值時(shí),表單使用單元格類型將一個(gè)指定的字符串轉(zhuǎn)換為需要的數(shù)據(jù)類型。舉例來說,一個(gè)數(shù)字單元格類型將字符串轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)數(shù)據(jù)類型。當(dāng)你使用Cells對(duì)象的Value屬性對(duì)單元格進(jìn)行賦值時(shí),表單根據(jù)原樣接受賦值的對(duì)象并且不會(huì)進(jìn)行解析。因此如果你使用一個(gè)值進(jìn)行設(shè)置,它仍然會(huì)是字符串。一些計(jì)算的函數(shù)(舉例來說,SUM)忽視了單元格區(qū)域中的非數(shù)字的值。舉例來說,如果單元格區(qū)域A1:A3包含數(shù)值{1,“2”,3},那么公式SUM{A1:A3}計(jì)算的結(jié)果為4因?yàn)镾UM函數(shù)忽略了字符串“2”。請(qǐng)確定你正確的設(shè)置了每一個(gè)單元格的數(shù)字,這些數(shù)字用于公式的計(jì)算中并且你已經(jīng)將其設(shè)置為正確的數(shù)據(jù)類型。


下面的這個(gè)示例顯示了如何指定一個(gè)公式,找到第一個(gè)單元格的值的五十倍的結(jié)果,并且將結(jié)果放入另一單元格中。然后,它可以求得一個(gè)單元格區(qū)域的總和 (A1到A4)并且將結(jié)果放入第三列的每一個(gè)單元格中。









FpSpread1.ActiveSheet.Cells[2, 0].Formula = "PRODUCT(A1,5)";


FpSpread1.ActiveSheet.Columns[3].Formula = "SUM(A1:A4)";



公式中的單元格引用


除了數(shù)值,運(yùn)算符,以及函數(shù)之外,一個(gè)公式還可以包括其它單元格值的引用。舉例來說,要查找兩個(gè)單元格的值的總和,該公式可以通過行和列查找到單元格的坐標(biāo)。 你可以使用絕對(duì)單元格引用(根據(jù)行和列的實(shí)際坐標(biāo))或相對(duì)單元格引用(相對(duì)于當(dāng)前單元格的坐標(biāo))。你可以使用ReferenceStyle屬性,選擇對(duì)表單使用哪種類型的單元格引用。一個(gè)公式不能同時(shí)包含絕對(duì)單元格引用和相對(duì)單元格引用。如果你已經(jīng)將單元格引用樣式變成不能顯示公式的樣式,Spread控件向公式提供一個(gè)問號(hào)作為占位符以代表不能顯示的單元格引用。


下表包含若干個(gè)示例,它們有效地使用了公式的引用:


























函數(shù)



描述



SUM(A1:A10)



在第一列中計(jì)算行1到行10的總和



PI()*C6



Pi倍單元格C6的值



(A1 + B1) * C1



將前兩個(gè)單元格的數(shù)值相加,然后將這個(gè)結(jié)果乘以第三個(gè)單元格中的值。



IF(A1>5, A1*2, A1*3)



如果單元格A1的值大于5,那么將單元格A1的內(nèi)容乘以2,否則將A1的內(nèi)容乘以3



如果你在單元格B1的公式中定義相對(duì)單元格引用 為RC[-1]+R[-1]C,則公式將被解析為左邊的(A1)單元格的 值加到上面的單元格(“B0“)的值當(dāng)中去。 控件會(huì)將單元格"B0" 的值看作空的單元格。如果你更改單元格引用樣式風(fēng)格為A1的樣式,公式會(huì)變?yōu)锳1+B? ,因?yàn)锳1的樣式不能表示單元格"B0"。然而,控件仍認(rèn)為公式會(huì)使用R1C1引用樣式。


Spread不支持的區(qū)域索引:此區(qū)域的開始行 和結(jié)束行由不同的引用類型組成(例如,一個(gè)絕對(duì)坐標(biāo)和一個(gè)相對(duì)坐標(biāo))。


兩個(gè)行坐標(biāo)要么都是絕對(duì)的,要么都是相對(duì)的。舉例來說:


R1C[-1]:R5C[-1] ' 支持 (絕對(duì)行 : 絕對(duì)行)


R1C[-1]:RC[-1] ' 不支持 (絕對(duì)行 : 相對(duì)行)


RC[-1]:R5C[-1] ' 不支持 (相對(duì)行 : 絕對(duì)行)


R[-5]c[-1]:RC[-1] ' 支持 (相對(duì)行 : 相對(duì)行)


通過設(shè)置ReferenceStyle屬性或者使用 默認(rèn)ReferenceStyle值指定引用樣式:









fpSpread1.Sheets[0].ReferenceStyle = FarPoint.Win.Spread.Model.ReferenceStyle.A1;



公式中的表單引用


當(dāng)一個(gè)單元格的引用包括對(duì)另一個(gè)工作表單元格的引用時(shí),這被稱為表交叉引用。例如下面這個(gè)公式中的表交叉引用使用了加法操作符:


FirstRoundData!A2 + SecondRoundData!A2)


如果表單名稱包含非字母數(shù)字字符( 例如,空格),那么在公式中用單引號(hào)擴(kuò)上表單名稱。舉例來說,假設(shè)表單名稱是“page one”,那么該公式就是SUM('page one'!$A$1:$A$5)。 如果表單名稱包含單引號(hào)字符,那么在公式中使用兩個(gè)單引號(hào)字符。舉例來說,假設(shè)表單名稱是“scott's page” 那么該公式就是SUM('scott''spage'!$A$1:$A$5).


下面的示例使用了公式中默認(rèn)的表單名稱:









fpSpread1.Sheets[0].Cells[0,0].Formula = "Sheet1!A3 + Sheet2!A2";




公式中的嵌套函數(shù)


你可以將一個(gè)函數(shù)嵌套在公式的另一個(gè)函數(shù)中。在下面的的這個(gè)示例中,兩個(gè)單元格(使用SUM函數(shù)建立)的值的和被嵌入到PRODUCT公式。 首先單元格類型被設(shè)置,然后單元格值被設(shè)置。









fpSpread1.Sheets[0].Cells[3, 1].Formula = "PRODUCT(A1, SUM(A2,A3))";



在公式中使用循環(huán)引用


你可以引用一個(gè)單元格公式,這個(gè)單元格又包含該公式,就是一個(gè)循環(huán)引用。這是一個(gè)典型的函數(shù)遞歸的方式,通過對(duì)相同函數(shù)的迭代,接近一個(gè)最佳值。你可以選擇函數(shù)迭代(遞歸)自身的次數(shù),通過設(shè)置重新計(jì)算迭代次數(shù)屬性。


如果公式“=COLUMNS(A1:C5)”在單元格C4中,就不會(huì)有結(jié)果返回。換句話說,如果該數(shù)組中最后一個(gè)行索引與列索引都大于公式所在的單元格的行索引與列索引,公式就不會(huì)進(jìn)行計(jì)算。在這種情況下,單元格C4處于區(qū)域A1:C5中。這是公式中的一個(gè)循環(huán)引用,所以Spread并不計(jì)算公式的值,除非迭代被開啟。


Spread通過迭代解決了循環(huán)公式的問題。在每次重新計(jì)算周期中,控件會(huì)進(jìn)行指定次數(shù)的迭代。在每次迭代中,每一個(gè)重復(fù)的公式只進(jìn)行一次計(jì)算。


一個(gè)循環(huán)引用的例子如下:


1. 設(shè)置公式單元格的單元格類型。


2. 使用表單的MaximumIterations屬性設(shè)置重新計(jì)算迭代次數(shù)、


3. 設(shè)置表單的引用樣式。


4. 使用單元格中的循環(huán)引用來定義公式









fpSpread1.ActiveSheet.Iteration = true;


fpSpread1.ActiveSheet.SetValue(0, 1, 20);


fpSpread1.ActiveSheet.MaximumChange = 5;


fpSpread1.ActiveSheet.MaximumIterations = 5;


fpSpread1.ActiveSheet.SetFormula(0, 2, "A1*3");


fpSpread1.ActiveSheet.SetFormula(0, 0, "B1+C1");



 


附:Spread for Windows Forms快速入門系列文章


Spread for Windows Forms快速入門(1)---開始使用Spread


Spread for Windows Forms快速入門(2)---設(shè)置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)---單元格的交互操作


Spread for Windows Forms快速入門(8)---單元格中用戶動(dòng)作出發(fā)的事件

    本站是提供個(gè)人知識(shí)管理的網(wǎng)絡(luò)存儲(chǔ)空間,所有內(nèi)容均由用戶發(fā)布,不代表本站觀點(diǎn)。請(qǐng)注意甄別內(nèi)容中的聯(lián)系方式、誘導(dǎo)購買等信息,謹(jǐn)防詐騙。如發(fā)現(xiàn)有害或侵權(quán)內(nèi)容,請(qǐng)點(diǎn)擊一鍵舉報(bào)。
    轉(zhuǎn)藏 分享 獻(xiàn)花(0

    0條評(píng)論

    發(fā)表

    請(qǐng)遵守用戶 評(píng)論公約

    類似文章