公式计算引擎支持单元格引用、表单交叉引用、循环引用、函数嵌套等。
将公式放入单元格中
您可以将公式添加到单元格或单元格区域。 您还可以向行或列中的所有单元格添加公式。 公式是带有描述公式的字符串的公式,通常是函数、运算符和常量的集合。
当您将公式分配给行或列时rc时间计算公式,该公式将用于该行或列中的每个单元格(假设该公式没有在单元格级别被覆盖)。 对于行或列中的公式,请使用行或列中的第一个单元格作为基位置。 如果使用相对寻址,则会针对 A 列中的每个单元格计算此公式,并且每个单元格都有不同的结果。 如果您希望A列中的每个单元格计算C2和D2的值之和(而不是计算C和D列中每个单元格的值),那么您可以使用公式$C$2+ $ D$2,使用绝对地址。
您可以通过指定对象的属性来添加公式。 下面给出了使用代码的步骤。
当您使用 Cells 对象的 Text 属性为单元格赋值时,表单使用单元格类型将指定的字符串转换为所需的数据类型。 例如,数字单元格类型将字符串转换为双精度浮点数据类型。 当您使用 Cells 对象的 Value 属性将值分配给单元格时,表单按原样接受分配的对象并且不会解析它。 所以如果你给它设置一个值,它仍然是一个字符串。 某些计算函数(例如 SUM)会忽略单元格区域中的非数字值。 例如,如果单元格区域 A1:A3 包含值 {1, "2", 3},则公式 SUM{A1:A3} 的计算结果将为 4,因为 SUM 函数忽略字符串“2”。 确保在公式计算中使用的每个单元格中正确设置数字,并将其设置为正确的数据类型。
以下示例演示如何指定一个公式,该公式查找第一个单元格值的 50 倍的结果,并将结果放入另一个单元格中。 然后,它可以对一系列单元格(A1 到 A4)求和,并将结果放入第三列的每个单元格中。
..单元格[2, 0]。 =“(A1,5)”;
..[3]。 =“总和(A1:A4)”;
公式中的单元格引用
除了数值、运算符和函数之外,公式还可以包含对其他单元格值的引用。 例如,要求两个单元格的值之和,该公式可以按行和列求出单元格的坐标。 您可以使用绝对单元格引用(基于行和列中的实际坐标)或相对单元格引用(相对于当前单元格的坐标)。 您可以使用属性来选择表单使用的单元格引用类型。 公式不能同时包含绝对和相对单元格引用。 如果您将单元格引用样式更改为不显示公式的样式,则控件会向公式提供一个问号作为占位符,以表示无法显示的单元格引用。
下表包含有效使用公式引用的几个示例:
功能
描述
总和(A1:A10)
计算第一列中第 1 行到第 10 行的总和
PI()*C6
Pi 乘以单元格 C6 的值
(A1 + B1) * C1
将前两个单元格中的值相加,并将该结果乘以第三个单元格中的值。
如果(A1>5, A1*2, A1*3)
如果单元格 A1 的值大于 5,则将单元格 A1 的内容乘以 2,否则将单元格 A1 的内容乘以 3
如果您在单元格 B1 的公式中将相对单元格引用定义为 RC[-1]+R[-1]C,则该公式将被解析为左侧 (A1) 单元格的值添加到上部单元格 (“B0 “) 价值。 控件会将单元格“B0”的值视为空单元格。 如果将单元格引用样式更改为A1的样式,则公式将变为A1+B?,因为A1的样式无法代表单元格“B0”。 然而,控件仍然认为公式将使用R1C1参考样式。
不支持的范围索引:该范围的起始行和结束行包含不同的引用类型(例如,绝对坐标和相对坐标)。
两个行坐标都是绝对坐标或相对坐标。 例如:
R1C[-1]:R5C[-1] '支持(绝对行:绝对行)
R1C[-1]:RC[-1] ' 不支持(绝对行:相对行)
RC[-1]:R5C[-1] '不支持(相对行:绝对行)
R[-5]c[-1]:RC[-1] ' 支持(相对行:相对行)
通过设置属性或使用默认值指定引文样式:
.[0]. = .Win..模型..A1;
在公式中形成引用
当对一个单元格的引用包括对另一个工作表单元格的引用时,这称为表交叉引用。 例如,以下公式中的表交叉引用使用加法运算符:
!A2 + !A2)
如果表单名称包含非字母数字字符(例如空格),请在公式中将表单名称用单引号引起来。 例如,假设表单名称为“第一页”,则公式为 SUM('第一页'!$A$1:$A$5)。 如果表单名称包含单引号字符,请在公式中使用两个单引号字符。 例如,假设表单名称为“scott's page”,则公式为 SUM('scott''spage'!$A$1:$A$5)。
以下示例在公式中使用默认表单名称:
.[0].单元格[0,0]。 = "!A3 + !A2";
公式中的嵌套函数
您可以在公式中将一个函数嵌套在另一个函数中。 在下面的示例中,两个单元格的值之和(使用 SUM 函数创建)嵌入到公式中。 首先设置单元格类型,然后设置单元格值。
.[0].细胞[3, 1]. =“(A1,SUM(A2,A3))”;
在公式中使用循环引用
您可以引用包含公式的单元格公式,这是循环引用。 这是一种典型的函数递归方法,通过迭代同一个函数来逼近最优值。 您可以通过设置“重新计算迭代”属性来选择函数自身迭代(递归)的次数。
如果公式“=(A1:C5)”位于单元格 C4 中,则不会返回结果。 换句话说,如果数组中最后一个行索引和列索引大于公式所在单元格的行索引和列索引,则不会计算公式。 在本例中,单元格 C4 位于 A1:C5 范围内。 这是公式中的循环引用,因此除非启用迭代rc时间计算公式,否则不会计算公式。
循环公式的问题是通过迭代来解决的。 在每个重新计算周期中,控件迭代指定的次数。 在每次迭代中,每个重复公式仅计算一次。
循环引用的示例如下:
1. 设置公式单元格的单元格类型。
2.使用表单的属性设置重新计算迭代次数,
3. 设置表单的引用样式。
4. 在单元格中使用循环引用来定义公式
..=真;
..(0, 1, 20);
.. = 5;
.. = 5;
..(0, 2, "A1*3");
..(0, 0, "B1+C1");