公式計(jì)算引擎支持單元格引用、表單交叉引用、循環(huán)引用、函數(shù)嵌套等。
將公式放入單元格中
您可以將公式添加到單元格或單元格區(qū)域。 您還可以向行或列中的所有單元格添加公式。 公式是帶有描述公式的字符串的公式,通常是函數(shù)、運(yùn)算符和常量的集合。
當(dāng)您將公式分配給行或列時(shí)rc時(shí)間計(jì)算公式,該公式將用于該行或列中的每個(gè)單元格(假設(shè)該公式?jīng)]有在單元格級(jí)別被覆蓋)。 對(duì)于行或列中的公式,請(qǐng)使用行或列中的第一個(gè)單元格作為基位置。 如果使用相對(duì)尋址,則會(huì)針對(duì) A 列中的每個(gè)單元格計(jì)算此公式,并且每個(gè)單元格都有不同的結(jié)果。 如果您希望A列中的每個(gè)單元格計(jì)算C2和D2的值之和(而不是計(jì)算C和D列中每個(gè)單元格的值),那么您可以使用公式$C$2+ $ D$2,使用絕對(duì)地址。
您可以通過指定對(duì)象的屬性來(lái)添加公式。 下面給出了使用代碼的步驟。
當(dāng)您使用 Cells 對(duì)象的 Text 屬性為單元格賦值時(shí),表單使用單元格類型將指定的字符串轉(zhuǎn)換為所需的數(shù)據(jù)類型。 例如,數(shù)字單元格類型將字符串轉(zhuǎn)換為雙精度浮點(diǎn)數(shù)據(jù)類型。 當(dāng)您使用 Cells 對(duì)象的 Value 屬性將值分配給單元格時(shí),表單按原樣接受分配的對(duì)象并且不會(huì)解析它。 所以如果你給它設(shè)置一個(gè)值,它仍然是一個(gè)字符串。 某些計(jì)算函數(shù)(例如 SUM)會(huì)忽略單元格區(qū)域中的非數(shù)字值。 例如,如果單元格區(qū)域 A1:A3 包含值 {1, "2", 3},則公式 SUM{A1:A3} 的計(jì)算結(jié)果將為 4,因?yàn)?SUM 函數(shù)忽略字符串“2”。 確保在公式計(jì)算中使用的每個(gè)單元格中正確設(shè)置數(shù)字,并將其設(shè)置為正確的數(shù)據(jù)類型。
以下示例演示如何指定一個(gè)公式,該公式查找第一個(gè)單元格值的 50 倍的結(jié)果,并將結(jié)果放入另一個(gè)單元格中。 然后,它可以對(duì)一系列單元格(A1 到 A4)求和,并將結(jié)果放入第三列的每個(gè)單元格中。
..單元格[2, 0]。 =“(A1,5)”;
..[3]。 =“總和(A1:A4)”;
公式中的單元格引用
除了數(shù)值、運(yùn)算符和函數(shù)之外,公式還可以包含對(duì)其他單元格值的引用。 例如,要求兩個(gè)單元格的值之和,該公式可以按行和列求出單元格的坐標(biāo)。 您可以使用絕對(duì)單元格引用(基于行和列中的實(shí)際坐標(biāo))或相對(duì)單元格引用(相對(duì)于當(dāng)前單元格的坐標(biāo))。 您可以使用屬性來(lái)選擇表單使用的單元格引用類型。 公式不能同時(shí)包含絕對(duì)和相對(duì)單元格引用。 如果您將單元格引用樣式更改為不顯示公式的樣式,則控件會(huì)向公式提供一個(gè)問號(hào)作為占位符,以表示無(wú)法顯示的單元格引用。
下表包含有效使用公式引用的幾個(gè)示例:
功能
描述
總和(A1:A10)
計(jì)算第一列中第 1 行到第 10 行的總和
PI()*C6
Pi 乘以單元格 C6 的值
(A1 + B1) * C1
將前兩個(gè)單元格中的值相加,并將該結(jié)果乘以第三個(gè)單元格中的值。
如果(A1>5, A1*2, A1*3)
如果單元格 A1 的值大于 5,則將單元格 A1 的內(nèi)容乘以 2,否則將單元格 A1 的內(nèi)容乘以 3
如果您在單元格 B1 的公式中將相對(duì)單元格引用定義為 RC[-1]+R[-1]C,則該公式將被解析為左側(cè) (A1) 單元格的值添加到上部單元格 (“B0 “) 價(jià)值。 控件會(huì)將單元格“B0”的值視為空單元格。 如果將單元格引用樣式更改為A1的樣式,則公式將變?yōu)锳1+B?,因?yàn)锳1的樣式無(wú)法代表單元格“B0”。 然而,控件仍然認(rèn)為公式將使用R1C1參考樣式。
不支持的范圍索引:該范圍的起始行和結(jié)束行包含不同的引用類型(例如,絕對(duì)坐標(biāo)和相對(duì)坐標(biāo))。
兩個(gè)行坐標(biāo)都是絕對(duì)坐標(biāo)或相對(duì)坐標(biāo)。 例如:
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è)置屬性或使用默認(rèn)值指定引文樣式:
.[0]. = .Win..模型..A1;
在公式中形成引用
當(dāng)對(duì)一個(gè)單元格的引用包括對(duì)另一個(gè)工作表單元格的引用時(shí),這稱為表交叉引用。 例如,以下公式中的表交叉引用使用加法運(yùn)算符:
!A2 + !A2)
如果表單名稱包含非字母數(shù)字字符(例如空格),請(qǐng)?jiān)诠街袑⒈韱蚊Q用單引號(hào)引起來(lái)。 例如,假設(shè)表單名稱為“第一頁(yè)”,則公式為 SUM('第一頁(yè)'!$A$1:$A$5)。 如果表單名稱包含單引號(hào)字符,請(qǐng)?jiān)诠街惺褂脙蓚€(gè)單引號(hào)字符。 例如,假設(shè)表單名稱為“scott's page”,則公式為 SUM('scott''spage'!$A$1:$A$5)。
以下示例在公式中使用默認(rèn)表單名稱:
.[0].單元格[0,0]。 = "!A3 + !A2";
公式中的嵌套函數(shù)
您可以在公式中將一個(gè)函數(shù)嵌套在另一個(gè)函數(shù)中。 在下面的示例中,兩個(gè)單元格的值之和(使用 SUM 函數(shù)創(chuàng)建)嵌入到公式中。 首先設(shè)置單元格類型,然后設(shè)置單元格值。
.[0].細(xì)胞[3, 1]. =“(A1,SUM(A2,A3))”;
在公式中使用循環(huán)引用
您可以引用包含公式的單元格公式,這是循環(huán)引用。 這是一種典型的函數(shù)遞歸方法,通過迭代同一個(gè)函數(shù)來(lái)逼近最優(yōu)值。 您可以通過設(shè)置“重新計(jì)算迭代”屬性來(lái)選擇函數(shù)自身迭代(遞歸)的次數(shù)。
如果公式“=(A1:C5)”位于單元格 C4 中,則不會(huì)返回結(jié)果。 換句話說(shuō),如果數(shù)組中最后一個(gè)行索引和列索引大于公式所在單元格的行索引和列索引,則不會(huì)計(jì)算公式。 在本例中,單元格 C4 位于 A1:C5 范圍內(nèi)。 這是公式中的循環(huán)引用,因此除非啟用迭代rc時(shí)間計(jì)算公式,否則不會(huì)計(jì)算公式。
循環(huán)公式的問題是通過迭代來(lái)解決的。 在每個(gè)重新計(jì)算周期中,控件迭代指定的次數(shù)。 在每次迭代中,每個(gè)重復(fù)公式僅計(jì)算一次。
循環(huán)引用的示例如下:
1. 設(shè)置公式單元格的單元格類型。
2.使用表單的屬性設(shè)置重新計(jì)算迭代次數(shù),
3. 設(shè)置表單的引用樣式。
4. 在單元格中使用循環(huán)引用來(lái)定義公式
..=真;
..(0, 1, 20);
.. = 5;
.. = 5;
..(0, 2, "A1*3");
..(0, 0, "B1+C1");