OpenOffice.org/Calc
OpenOffice.org Calc
根据 OOoAuthors 的许可改编
Calc 是 OpenOffice.org (OOo) 的电子表格组件。您可以在电子表格中输入数据,通常是数值数据,然后操作这些数据以产生特定结果。
或者,您可以输入数据,然后以“假如...”的方式使用 Calc,通过更改某些数据并观察结果,而无需重新输入整个电子表格或工作表。
Calc 使用名为电子表格的元素。电子表格由多个单独的工作表组成,每个工作表包含一个按行和列排列的单元格块。
这些单元格包含构成要显示和操作的数据的各个元素——文本、数字、公式等。
每个电子表格可以有多个工作表,每个工作表可以有多个单独的单元格。在 OOo 的 3.0 版本中,每个工作表最多可以有 65,536 行和最多 1024 列。
您可以通过多种方式将数据输入 Calc:使用键盘、鼠标(拖放)、填充工具和选择列表。Calc 还提供了在同一文档的多个工作表中一次输入信息的功能。
输入数据后,您可以以多种方式格式化和显示数据。函数是在单元格中输入的预定义计算,可帮助您分析或操作电子表格中的数据。您只需添加参数,计算就会自动完成。函数是电子表格的主要原因。如果您理解函数,那么您就可以开始使用电子表格的真正强大功能。
Calc 包含超过 350 个函数,可帮助您分析和引用数据。其中许多函数用于处理数字,但许多其他函数用于处理日期和时间,甚至文本。函数可以像将两个数字加在一起一样简单,也可以像计算样本的标准差或数字的双曲正切一样复杂。
通常,函数的名称是对函数作用的简短描述。例如,FV 函数给出投资的未来值,而 BIN2HEX 将二进制数转换为十六进制数。按照惯例,函数全部使用大写字母输入,尽管 Calc 即使使用小写或混合大小写字母也能正确读取它们。
一些基本函数也用符号表示。例如,SUM(添加参数)也可以输入为 +,而 PRODUCTION(将参数相乘)也可以输入为 *。
每个函数都有多个用于计算的参数。这些参数可能会有或不会有自己的名称。您的工作是输入运行函数所需的参数。在某些情况下,参数有预定义的选择,您可能需要参考在线帮助或本书的附录 B(函数说明)来理解它们。然而,更常见的情况是,参数是您手动输入的值,或者是在电子表格的单元格或单元格范围内已经输入的值。在 Calc 中,您可以通过键入单元格名称或范围,或通过使用鼠标选择单元格来输入其他单元格的值(这与某些电子表格中的情况不同)。如果单元格中的值发生变化,则函数的结果会自动更新。
严格来说,当所有参数都输入并且函数准备运行时,它就变成了一个公式。这两个术语有时可以互换使用,但区别值得保留,因为公式可以使用函数作为参数。
为了兼容性,Calc 中的函数及其参数与 Microsoft Excel 中的对应函数几乎具有相同的名称。但是,Excel 和 Calc 都有一些对方没有的函数。此外,偶尔,Calc 和 Excel 中具有相同名称的函数具有不同的参数,或者对同一参数有略微不同的名称——两者都不能导入到对方。但是,也许九分之十的函数可以在 Calc 和 Excel 之间导入,没有任何问题。
除了像 + 或 * 这样的简单函数之外,所有函数都有类似的结构。如果您使用正确的工具输入函数,则可以避免学习这种结构,但了解它仍然对故障排除很有帮助。
以一个典型的例子来说,查找与输入搜索条件匹配的单元格的函数的结构是
= DCOUNT (Database;Database field;Search_criteria)
像大多数函数一样,这个函数以等号开头。它后面跟着 DCOUNT,即函数的名称。函数名称后面是其参数。所有参数都是必需的,除非特别列为可选。
参数在括号(圆括号)内添加,并用分号分隔,参数和分号之间没有空格。许多参数是一个数字。Calc 函数最多可以接受 30 个数字作为参数。乍一看这似乎并不多。但是,当您意识到该数字不仅可以是数字或单个单元格,还可以是包含多个甚至数百个单元格的数组或单元格范围时,这种明显的限制就消失了。
其他参数可能是列标签、数学常数或该函数特有的值。
根据函数的不同,参数可能需要用直引号输入。但是,此要求并不一致。否则类似的公式可能只有在这个要求上有所不同,也没有简单的规则告诉你哪个是哪个。您只需了解或检查在线帮助中的要求。
这些结构规则的唯一例外是使用符号输入的基本算术函数。例如,您可以输入 =2+3,而不是输入 =SUM(2;3)。
函数不仅可以单独使用,还可以作为较大公式的参数。但是,公式受到一个限制,即它一次只能执行一个函数。您需要确保函数按照正确的顺序执行,才能使公式正常工作。
为了帮助设置多函数公式中函数的顺序,您可以使用嵌套的括号。当公式运行时,Calc 会先执行最里面的函数,然后向外执行。例如,在简单的计算 =2+(5*7) 中,Calc 会先将 5 乘以 7。只有在将 2 加到结果中后才会得到 37。
函数在括号集中的放置称为嵌套。基本上,嵌套将一个可以独立运行的函数简化为公式中的一个参数。例如,在 =2+(5*7) 中,公式 (5*7) 嵌套在更大的公式 =2+(5*7) 中。换句话说,嵌套的函数变成了另一个函数的参数。
当使用带名称的函数进行计算时,这种关系就更加明显。对于所有目的,
=SUM(2;PRODUCT(5;7))
与 =2+(5*7) 相同。但是,当使用 SUM 和 PRODUCT 时,这种关系就更加清晰。PRODUCT 函数出现在分号之后,并且位于 SUM 函数的一组括号中,这清楚地表明 PRODUCT 是 SUM 的一个参数。此外,内层括号位于 (5;7) 周围,这清楚地表明该运算是在外层括号定义的运算之前完成的。
为了了解嵌套函数的功能,假设您正在设计一个自主学习模块。在模块中,学生参加三次测验,并将结果输入到单元格 A1、A2 和 A3 中。在 A4 中,您可以创建一个嵌套公式,该公式首先使用公式 =AVERAGE(A1:A3) 对测验结果进行平均。然后,该公式使用 IF 函数为学生提供基于测验平均成绩的反馈。整个公式将读取为
=IF(AVERAGE(A1:A3) >85; "Congratulations! You are ready to advance to the next module"; "Failed. Please review the material again. If necessary, contact your instructor for help")
根据平均成绩,学生将收到祝贺或失败的消息。
请注意,平均值的嵌套公式不需要它自己的等号。等式开头的那个等号足以满足这两个公式。
如果您是电子表格新手,那么将函数视为脚本语言是最好的理解方式。我们使用简单的示例来进行更清晰的解释,但是,通过函数嵌套,Calc 公式可以迅速变得复杂。
请参阅更具体的章节:公式.
使用 DataPilot 的基础始终是包含原始数据格式数据的列表。这样的列表相当于数据库表。该表由行(数据集)和列(数据字段)组成。字段名称位于列表上方的第一行。
稍后我们将解释数据源可以是外部文件或数据库。最简单的用例是您的数据包含在 Calc 电子表格中。对于这样的列表,Calc 提供了不依赖 DataPilot 的排序功能。
为了处理列表中的数据,程序必须知道表格在电子表格中的哪个区域。Calc 表格可以位于工作表中的任何位置,任何位置。同样,一个电子表格也可能包含多个无关的表格。
Calc 会自动识别您的列表。它使用以下逻辑
从您选择的单元格(必须位于您的列表中)开始,Calc 检查周围所有 4 个方向(左、右、上、下)的单元格。如果程序发现空行或空列,或者如果它到达电子表格的左侧或上侧边界,则会识别出边界。
这意味着,只有当您的列表中没有空行或空列时,所描述的功能才能正常工作。避免空行(例如用于格式设置)。您可以使用单元格格式设置您的列表。
如果您在开始排序、筛选或调用 DataPilot 之前选择了多个单元格,则自动列表识别将被关闭。Calc 假设列表与您选择的单元格完全匹配。这在极少数情况下可能有用。
一个比较大的错误来源是您可能错误地声明了一个列表,然后对列表进行了排序。如果您选择了多个单元格(例如,一整列),那么排序会将应该放在一行中的数据混合在一起。
除了这些形式方面外,表格的逻辑结构对于使用 DataPilot 非常重要。
在输入数据时,不要添加大纲、组或摘要。当我们考虑在销售列表示例中可能做错了什么时,这一点就会变得很清楚。这将为您提供一个糟糕想法的列表,您可以在不了解电子表格中处理列表的可能性时,经常在电子表格用户中找到这些想法。
第一个糟糕的想法:您可以创建多个工作表。例如,您可以为每组商品创建一个工作表。然后,分析只能在每个组内进行。对多个组进行分析将是一件非常麻烦的事情。
第二个糟糕的想法:在营业额列表中,您可以为每个员工创建一列金额,而不是仅为金额创建一列。然后,金额必须输入到相应的列中。使用 DataPilot 进行分析将不再可能。相反,DataPilot 的一个结果是,如果您将所有内容都输入到一列中,则可以获取每个员工的结果。
第三个糟糕的想法:您可以按时间顺序输入金额。在每个月结束时,您可以做一个总计。在这种情况下,无法对列表进行不同标准的排序,也无法使用 DataPilot。包含总计的行将被 DataPilot 视为您输入的任何其他金额。获取月度结果是 DataPilot 的一项非常快速和简单的功能。
您可以使用数据 > DataPilot > 开始启动 DataPilot。如果要分析的列表位于电子表格表格中,请选择该列表中的一个单元格。Calc 会自动识别并选择该列表以供 DataPilot 使用。
熟悉函数和公式后,下一步是学习如何自动化流程并对数据进行有用的分析。
Calc 包含多个工具来帮助您操作函数和公式,从复制和重用数据的功能,到自动创建小计,到改变信息以帮助您找到所需的答案。这些工具分为工具和数据菜单。
如果您是电子表格新手,这些工具一开始可能会让人不知所措。但是,如果您记住它们都依赖于来自包含您正在处理数据的单元格或单元格范围的输入,那么它们就会变得更简单。
您始终可以手动输入单元格或范围,但在许多情况下,您也可以使用字段旁边的收缩/最大化图标,在使用鼠标选择单元格时暂时更改工具窗口的大小。有时,您可能需要尝试将哪些数据放入一个字段,但是,一旦您发现,剩下的只是设置一系列选项,其中许多选项在任何给定情况下都可以忽略。只要记住每个工具的基本目的,您使用 Calc 的函数工具时应该不会遇到太大麻烦。
您不需要学习它们,特别是如果您只是简单地使用电子表格,但是,当您对数据的操作变得更加复杂时,它们可以节省计算时间,尤其是在您开始处理假设情况时。同样重要的是,它们可以让您保存工作并与他人分享工作,或者在稍后的会话中与自己分享工作。
SUBTOTAL 是一个函数,当您使用函数向导(插入 > 函数)时,它在数学类别下列出。由于其有用性,该函数具有一个可从数据 > 小计访问的图形界面。
顾名思义,SUBTOTAL 对排列在数组中的数据进行汇总,即一组具有列和/或行标签的单元格。使用小计对话框,您可以选择数组,然后选择要应用于它们的统计函数。为了提高效率,您可以选择最多三个数组组,并对其应用函数。单击确定时,Calc 会使用结果和结果 2 单元格样式在选定的数组中添加小计和总计。
要将小计值插入工作表中
- 确保列有标签。
- 选择要计算小计的单元格范围,然后选择数据 > 小计。
- 在小计对话框的按组分组框中,选择要添加小计的列。如果所选列的内容发生变化,则小计将自动重新计算。
- 在为框计算小计中,选择包含要进行小计的值的列。
- 在使用函数框中,选择要用于计算小计的函数。
- 单击确定。
如果您使用多个组,那么您还可以根据在对话框的选项页面上做出的选择来排列小计,包括升序和降序,或者使用工具 > 选项 > OpenOffice.org Calc > 排序列表中定义的预定义自定义排序。
方案是一种测试“假设”问题的工具。使用工具 > 方案在同一个单元格中输入可变内容,即方案。每个方案都有一个名称,可以分别进行编辑和格式设置,并可以从导航器和方案标题栏中的下拉列表中选择。当您打印电子表格时,只会打印当前活动方案的内容。
通过添加场景,您可以快速更改公式的参数并查看新结果。例如,如果您想计算投资的不同利率,您可以为每个利率添加一个场景,并快速查看结果。如果您还有另一个计算您年收入的公式,并且包含利率公式的结果作为参数,它也会更新。如果所有收入来源都使用场景,您可以有效地构建一个复杂的收入模型。
要创建场景,请选择为场景提供数据的全部单元格。
- 选择包含将在不同场景之间更改的值的单元格。要选择多个单元格,请在单击每个单元格时按住Ctrl键。
- 选择工具 > 场景。
- 在“创建场景”对话框中,为新场景输入一个名称。最好使用一个明确标识场景的名称,而不是图示中显示的默认名称。此名称将显示在导航器中,以及工作表本身场景标题栏上。
- 可选择在注释框中添加一些信息。示例显示了默认注释。当您单击导航器中的“场景”图标并选择所需场景时,将显示此信息。
- 可选择选中或取消选中“设置”部分中的选项。有关这些选项的更多信息,请参见下文。
- 单击确定关闭对话框。新场景将自动激活。
“创建场景”对话框的下部包含多个选项。在大多数情况下,默认设置(示例中显示为选中)适用。
显示边框
使用边框突出显示表格中的场景。边框的颜色在该选项右侧的字段中指定。边框具有一个显示最后一个场景名称的标题栏。场景边框右侧的按钮为您提供了该区域中所有场景的概述(如果已定义多个场景)。您可以从此列表中选择任何场景,不受限制。
复制回
将您更改的单元格的值复制到活动场景中。如果您未选中此选项,当您更改单元格值时,场景不会更改。复制回设置的行为取决于单元格保护、工作表保护以及防止更改设置。
复制整个工作表
将整个工作表复制到一个额外的场景工作表中。
防止更改
防止对活动场景进行更改。
- 只有在未选中防止更改选项且工作表未受保护的情况下,您才能更改场景属性。
- 只有在选中防止更改选项、未选中复制回选项且单元格未受保护的情况下,您才能编辑单元格值。
- 只有在未选中防止更改选项、选中复制回选项且单元格未受保护的情况下,您才能更改场景单元格值并将它们写回到场景中。
将场景添加到电子表格后,您可以使用导航器跳转到特定场景,然后从列表中选择一个场景。您还可以对场景进行颜色编码,以便更轻松地将它们彼此区分开来。
要选择导航器中的场景,请单击导航器中的场景图标。将列出已定义的场景,以及在创建场景时输入的注释。
双击导航器中的场景名称,将该场景应用于当前工作表。
要删除场景,请在导航器中右键单击该名称,然后选择删除。
要编辑场景(包括其名称和注释),请在导航器中右键单击该名称,然后选择属性。“编辑属性”对话框与“创建场景”对话框相同。
要了解场景中的哪些值影响其他值,请选择工具 > 探查器 > 追踪依赖项。箭头指向直接依赖于当前单元格的单元格。
工具 > 目标求解颠倒了公式的通常顺序。通常,您运行公式以在输入某些参数时获得结果。相比之下,在目标求解中,您使用完成的公式来查看需要在参数中输入什么值才能获得所需的结果。
举个简单的例子,假设一家公司的首席财务官正在为下一年的每个季度制定销售预测。她知道公司全年总收入必须达到多少才能满足股东。由于已经签署了合同,她也对公司前三个季度的收入有了很好的了解。但是,第四季度没有确定的收入。那么,公司在第四季度需要赚多少钱才能实现目标呢?为了回答这个问题,首席财务官输入了其他三个季度的预计收益以及全年的预计收益。然后,她在第四季度销售额的单元格上运行目标求解,并得到了答案。
目标求解的其他用途可能更复杂,但方法保持不变。要运行目标求解,参数的值中至少要有一个是引用单元格或区域。在单个目标求解中,只能更改一个参数。在获得目标求解的结果后,您可以将引用单元格中的原始值替换为结果,或者将结果记录在其他地方以供以后使用,可能作为场景。
借助目标求解,您可以计算一个值,该值作为公式的一部分,会导致您为公式指定的結果。因此,您定义了具有多个固定值和一个变量值以及公式结果的公式。
要计算年利息 (I),请创建一个包含本金 (C)、年数 (n) 和利率 (i) 值的表格。公式为 I = C*n*i。
假设利率 i 为 7.5%,年数 n (1) 将保持不变。但是,您想知道为了实现特定收益 I,投资本金 C 需要修改多少。在本例中,计算如果您想要获得 15,000 美元的年收益,需要多少本金 C。
将本金 C(任意值,如 100,000 美元)、年数 n (1) 和利率 i (7.5%) 的每个值分别输入一个单元格中。在另一个单元格中输入用于计算利息 I 的公式。不要使用 C、n 和 i,而是使用包含相应值的单元格的引用。在本例中,这些是 B1、B2 和 B3。
工具 > 求解器相当于目标求解的更详细形式。区别在于求解器处理具有多个未知变量的方程。它专门设计用于根据您定义的一组规则来最小化或最大化结果。
这些规则中的每一个都设置了公式中参数是否应该大于、小于或等于您输入的数字。如果您希望参数保持不变,则应输入一条规则,即包含该参数的单元格应等于其当前条目。对于您希望更改的参数,您需要添加两条规则来定义可能的取值范围:限制条件。例如,您可以设置约束,即一个变量或单元格不能大于另一个变量,或不能大于给定值。您还可以定义约束,即一个或多个变量必须是整数(没有小数的值),或二进制值(其中只允许 0 和 1)。
设置完规则后,您可以通过单击求解按钮来调整参数和结果。
- 将光标置于公式单元格(包含利息 I 的单元格)中,然后选择工具 > 目标求解。
- 在目标求解对话框中,公式单元格字段中已输入了正确的单元格。
- 将光标置于变量单元格字段中。在工作表中,单击包含要更改的值的单元格,在本例中,它是包含本金值 C 的单元格。
- 在目标值字段中输入公式的所需结果。在本例中,值为 15000。下图显示了单元格和字段。
- 单击确定。将出现一个对话框,告知您目标求解已成功。单击是将结果输入到包含变量值的单元格中。结果显示如下。
您可以使用多种方法来跟踪您或其他人对文档所做的更改。
- 使用更改标记来显示添加或删除的材料以及更改的格式。 稍后,您或其他人可以查看并接受或拒绝每个更改。
- 对文档的副本进行更改(存储在不同的文件夹中,使用不同的名称,或两者兼而有之),然后使用 Calc 来比较文件并显示更改。
- 保存作为原始文件的一部分存储的版本。
审阅者可以在文档中留下笔记,或对特定更改进行评论。
当您将文档发送给其他人进行审阅或编辑时,您可能希望先对其进行准备,以便编辑者或审阅者不必记住打开修订标记。 在您保护文档后,任何用户都必须输入正确的密码才能关闭该功能或接受或拒绝更改。
- 打开文档,并确保编辑>更改>记录菜单项旁边有一个复选标记,表示更改记录处于活动状态。
- (可选)单击编辑>更改>保护记录。 在保护记录对话框中,输入密码(两次)并单击确定。
在共享文档时,重要的是跟踪文档的不同副本。 这可以在文件名或文件标题中完成。 如果您没有在电子表格的属性中提供文件标题,则电子表格的文件名将显示在标题栏中。 要设置电子表格的标题,请选择文件>属性>说明。
您必须先保护工作表。要保护单元格,请转到格式>单元格>单元格保护。
宏是保存的命令或击键序列,这些序列存储起来供以后使用。 一个简单的宏示例是“输入”您的地址的宏。 OpenOffice.org (OOo) 宏语言非常灵活,允许自动化简单和复杂的任务。 宏对于重复执行相同的任务特别有用。 宏可以使用多种语言,但默认语言是 BASIC。[1] 本节简要讨论与使用 Calc 进行宏编程相关的常见问题。
以下步骤将创建一个执行特殊粘贴(使用乘法)的宏。
- 打开一个新的电子表格。
- 在工作表中输入数字。
- 选择包含数字 3 的单元格 A3,并将值复制到剪贴板。
- 选择范围 A1:C3。
- 使用工具>宏>录制宏启动宏录制器。 记录宏对话框将显示一个停止录制按钮。
- 使用编辑>特殊粘贴打开特殊粘贴对话框。
- 将操作设置为乘法,然后单击确定。 单元格现在将乘以 3。
- 单击停止录制停止宏录制器并保存宏。
- 选择当前文档。 对于此示例,当前 Calc 文档为无标题。 单击文档旁边的 + 以查看包含的库。 在 OOo 3.0 版本之前,新文档是使用标准库创建的; 这不再是事实。 在 OOo 3.0 版本中,标准库只有在保存文档或需要库时才会创建。 如果需要,创建一个新的库来包含宏(但这并非必需)。
- 单击新建模块在标准库中创建一个模块。 如果没有库存在,则会自动创建并使用标准库。
- 单击确定创建一个名为 Module1 的模块。
- 选择新创建的 Module1,输入宏名称PasteMultiply并单击保存。 创建的宏保存在无标题 2 文档的标准库的 Module1 中(参见清单 1)。
清单 1. 使用乘法进行特殊粘贴。
sub PasteMultiply
rem --------------------------------------------------------------
rem define variables
dim document as object
dim dispatcher as object
rem --------------------------------------------------------------
rem get access to the document
document <nowiki>=</nowiki> ThisComponent.CurrentController.Frame
dispatcher <nowiki>=</nowiki> createUnoService("com.sun.star.frame.DispatchHelper")
rem --------------------------------------------------------------
dim args1(5) as new com.sun.star.beans.PropertyValue
args1(0).Name <nowiki>=</nowiki> "Flags"
args1(0).Value <nowiki>=</nowiki> "A"
args1(1).Name <nowiki>=</nowiki> "FormulaCommand"
args1(1).Value <nowiki>=</nowiki> 3
args1(2).Name <nowiki>=</nowiki> "SkipEmptyCells"
args1(2).Value <nowiki>=</nowiki> false
args1(3).Name <nowiki>=</nowiki> "Transpose"
args1(3).Value <nowiki>=</nowiki> false
args1(4).Name <nowiki>=</nowiki> "AsLink"
args1(4).Value <nowiki>=</nowiki> false
args1(5).Name <nowiki>=</nowiki> "MoveMode"
args1(5).Value <nowiki>=</nowiki> 4
dispatcher.executeDispatch(document, ".uno:InsertContents", "", 0, args1())
end sub
Calc 可以将宏作为 Calc 函数调用。 使用以下步骤创建一个简单的宏
- 创建一个名为 CalcTestMacros.ods 的新 Calc 文档。
- 使用工具>宏>组织宏>OpenOffice.org Basic打开 OpenOffice.org Basic 宏对话框。 宏来源框列出了可用的宏库容器。 我的宏包含您编写或添加到 OOo 的宏。 OpenOffice.org 宏包含 OOo 附带的宏,不应更改。 所有其他库容器都是当前打开的 OOo 文档。
- 单击组织器打开 OpenOffice.org Basic 宏组织器对话框。
- 单击库选项卡。
- 选择包含宏的文档。
- 单击新建打开新建库对话框。
- 输入描述性库名称(例如 AuthorsCalcMacros)并单击确定创建库。 新库名称将显示在库列表中,但对话框可能仅显示部分名称。
- 选择 AuthorsCalcMacros 并单击编辑编辑库。 OOo 会自动创建一个名为 Module1 的模块和一个名为 Main 的宏。
- 修改代码使其与清单 2 中的代码相同。 重要的添加是创建 NumberFive 函数,该函数返回数字五。 语句 Option Explicit 强制在使用变量之前声明所有变量。 如果省略 Option Explicit,则会在首次使用时自动将变量定义为 Variant 类型。
清单 2. 返回五的函数。
REM ***** BASIC *****
Option Explicit
Sub Main
End Sub
Function NumberFive()
NumberFive = 5
End Function