首页> 中国专利> 改进的电子表格和用于更新电子表格的方法

改进的电子表格和用于更新电子表格的方法

摘要

一种用于改善电子表格以管理和控制方案的计算机软件程序。该程序为用户提供了记录对电子表格中单元格的选定值所做的特定更改的方法。每个记录的项目都可以通过图形用户界面(GUI)进行拖动和重新排序,以构建方案脚本。可以执行脚本,从而用记录的项目更新电子表格。该方法允许逐步回放复杂方案,对复杂方案进行修改、重新排序、更正和重放,同时生成用户定义的输出报告图表,详细说明每个步骤的变化。该方法提供了适用于独立第三方审查的,对电子表格进行的所有值更改的详细信息跟踪。多个用户可以并行记录不同的方案组件,然后合并以生成完整的解决方案。该方法具有可扩展性,适用于需要数千个单元格值更新的方案。

著录项

  • 公开/公告号CN113168497A

    专利类型发明专利

  • 公开/公告日2021-07-23

    原文格式PDF

  • 申请/专利权人 决策场景私人有限公司;

    申请/专利号CN201980077073.1

  • 发明设计人 M·W·劳滕巴赫;

    申请日2019-11-28

  • 分类号G06F40/18(20200101);G06F40/242(20200101);G06F3/0482(20130101);

  • 代理机构11713 北京世峰知识产权代理有限公司;

  • 代理人卓霖;许向彤

  • 地址 澳大利亚昆士兰

  • 入库时间 2023-06-19 11:55:48

说明书

技术领域

本发明总体上涉及一种电子表格程序,该电子表格程序用于创建、执行和审查方案以及自动生成差异报告。特别地,本发明涉及通过电子表格来处理和呈现信息。

背景技术

本说明书中对任何现有技术的引用不视为且不应视为对现有技术构成公知常识的一部分的承认或任何形式的暗示。

电子表格在组织机构中被广泛使用来评估当前决策的未来影响。通常,组织机构会开发复杂的假设方案,并使用不同版本的输入假设更新其电子表格模型,然后计算对未来绩效的影响。

电子表格之所以流行是因为,根据设计,它们非常适应新情况并且易于即时更新。这些优势大部分源自其先进的GUI、广泛的公式和工具集,以及值和公式之间没有任何强制分隔(允许将已知值快速替换为用于预报的预测公式,或者相反,可以用实际值覆盖公式)。

前述方法的缺点包括难以再现和记录用户所做的改变。在评估、审查和审计模型结果时,这些问题尤其成问题。电子表格本身不包含任何固有的显式方法来记录更改,而用户有责任准确地跟踪并记录所有更改。

因此,对于必须管理决策者所需要的多种假设方案的用户而言,电子表格环境并不是特别好。电子表格开发人员已尝试使用其他工具来解决这些问题。尽管这些工具有多种实现方式,但最好的工具通常允许用户在同一电子表格内维护方案的版本数据,而无需复杂的数据切换算法。这些工具虽然有用,但不足以管理当今所需的更改量,并且不支持任何逐步分析。

这些工具的困难在于它们在一个实例中更新所有版本,使得不可能将特定输出归因于任何特定输入假设。这些工具也不提供更改的任何逐步的报告,也没有提供将更改序列排序或对更改添加精确标签或描述的手段,也没有提供任何单个的步进机制供用户在发生模型中的中间更改时审查模型中的中间更改。

非常大的项目可能需要:为每个方案更新成千上万的输入值,修改模型中的关键公式,并调用可视基础(visual basic)程序来迭代地求解无法或很难明确定义的算法。

在典型的评估周期中,用户将核对特定方案的输入数据,更新当前模型,并手动记录每个输入或每个输入序列以及相应输出的更改的影响。使用成千上万的输入,用户必须选择要更新的数据块。许多模型都是基于时间的,然后用户通常会按一个序列更新特定项目的所有时间元素(即:未来十年中工厂和机器的资本成本)。

该手动过程是耗时的,容易出错的,并且可能导致不可再现性的问题。可以通过多个用户利用数据同时更新活动模型来缩短处理时间,但是这将计划、协调和记录所做的更改而需要的大量时间所抵消。

一旦完成,结果将由高级管理层审查其完整性和准确性。审查团队可以请求对某些输入假设进行修改,或者请求新方案,该新方案将现有方案中的现有版本与新输入相结合的新方案。

用户可能面临两个困难。首先,当意外的结果现在需要详细研究步骤更改以了解驱动结果的原因时,更新的输入块可能缺少审查过程所需的粒度级别。其次,用户可能需要在不干扰其余输入假设的情况下更新某些特定项目。

最后,用户将需要产生新的更新的分析包以供审查。由于是人工过程,因此用户有两种选择:从一开始就重做评估周期,这将保持评估的完整性,或者,可替代地,仅计算新更改的影响并相应地调整分析包。后一种方法以先前完成的工作为基础,因此速度更快,但容易受到人为错误的影响,如果分析结果与最终模型结果不一致,则可能会失败。

这些困难可能变得更加复杂,因为每种方案可能需要几个分析周期,并且可能需要数十种方案。

电子表格财务模型提供支持关键业务决策所需的估值,并且因此受到由于上述原因而难以进行的评核和审计。

本发明的优选实施例提供了一种用于审计目的的改进的电子电子表格。

发明内容

根据本发明的一个方面,提供了一种电子电子表格更新方法,包括:

导航电子表格以定位要更新的数据;

使用定位的数据为模型执行更新的方案;以及

生成与执行的更新方案有关的报告。

有利地,可以保存更新的方案模型和相关联的生成的报告,并且随后在评估、审查或审计模型结果时易于再次访问。可以以高级脚本的形式提供对模型所做的所有更改的记录,并且可以保存所有必要的数据,以使审计员能够完全复制用户所做的准确的电子表格更新。审计员可以仔细检查输入和输出之前和之后进行比较的每个步骤。审计员还可以通过在高级脚本中包含其他自定义报告来补充他或她的分析。

执行步骤可以包括按顺序的次序执行方案脚本,从而允许将每个步骤更改的影响自动包括在用户指定的报告中。

执行步骤可以包括暂停方案脚本的顺序执行,以使用户有机会在每个步骤更改之后检查工作表。

该方法可以进一步允许用户通过重新排序脚本项来改变方案脚本执行的处理顺序。

该方法可以进一步允许用户构建方案脚本并且从一组预定义的报告命令中进行选择,这些预定义的报告命令以表格和/或图形形式在由方案脚本进行更改之前和之后自动比较用户定义的范围。

该方法可以进一步允许用户在方案脚本执行期间包括自定义的报告。用户可以在电子表格中创建自定义范围名称,其中包括要报告的数据和文本。可以将自定义范围名称添加到报告命令。可以在方案脚本执行期间生成报告,并可以以与自定义范围名称相同的格式在由方案脚本进行更改之前和之后自动比较用户定义的范围。

该方法可以进一步允许用户使用现有范围名称或者通过将新范围名称创建到适合构建方案脚本的一组版本数据对象中,从电子表格创建和保存新版本数据对象。

该方法可以进一步允许用户通过使用鼠标的拖放动作来操纵和排序从电子表格创建的版本数据对象,插入/添加控制命令和/或复制现有脚本项目来构建方案脚本。

该方法还可以通过允许用户通过使用版本对象收集窗口中的上下文菜单的键功能按下或鼠标单击直接导航到源单元格和目标单元格,来允许管理、重新标记、删除和/或检查版本数据对象。

该方法可以进一步存储方案脚本和被计划或实施以供审查的确切的单元格更改。有利地,这有助于使用分配的功能键自动回索(recall)单元格地址并将数据和包含数据的工作表显示到计算机显示器上,从而定位和查看数据。

该方法可以进一步允许保存的方案和版本更改重新运行,以供其他用户进行独立检查。

该方法可以进一步允许用户创建和保存现有电子表格模型的数据的新版本,该数据的新版本能够在选定范围的单元格内包括常数和公式(包含范围作为变量)或者包括常数或公式。有利地,包括公式允许脚本保留所有更改的完整记录,包括对公式的更改,以供后续审查。包括公式很困难,因为必须重新配置这些公式,然后才能将其另存为新版本。由于电子表格的固有设计以及复制公式的相对论规则,因此在创建版本时无法使用简单的复制方法。首先重新配置公式,然后保存公式,以便从版本直接、快速地复制回到模型,这生成正确的公式。

该方法可以进一步允许用户构建方案脚本,该方案脚本可以包括调用用户定义的VBA计算机程序的命令,这对于后续审查很有利,因为脚本保留了所有更改的完整记录,包括由VBA应用程序执行的复杂子例程。

该方法可以进一步包括验证运行,该验证运行检查方案所需的必要组件和对象是否可用并被加载到计算机存储器中,而不更新任何电子表格。有利的是,验证运行是一种快速有效的方法,可以在完成大型脚本执行运行之前识别出缺少的组件或任何步骤故障。

导航步骤还可包括:通过从名称词典中提取范围名称并使用单元格位置作为匹配键,允许用户基于由用户选择的电子表格单元格来检测范围名称。该方法可以允许根据用户的要求预先创建名称词典。有利的是,用户可以在工作表中快速、即时地找到命名范围,而没有从以字母顺序按类别列出名称的备用工具搜索名称的麻烦。

该方法可以进一步允许用户以类似于子例程调用的方式来构建方案脚本,该方案脚本可以包括调用用户先前构建并保存的其他方案脚本的命令。这对于分离需要重复执行的任务是有利的。常见的要求可能是主构建方案脚本重复将电子表格模型重置为其初始基准值。每当在评估新方案之前需要初始基准值时,都可以调用包含具有初始值的版本的单独的子例程脚本。

该方法可以进一步允许保存的子例程方案脚本调用其他方案脚本(嵌套调用)。这对于分离需要重复执行且具有复杂数据更新路径的任务是有利的。至关重要的是,为了保护用户,检测并禁止了可能导致圆形性条件(这将导致无限处理循环)的嵌套调用。

该方法可以进一步允许用户在工作区内构建多个方案脚本,该方案脚本可以保存到单独的存储区中。

该方法可以进一步允许位于方案存储区中的先前完成的方案对用户可见、可检查且包括构建工作区中方案的所有特征,但添加和/或重新排序命令的限制除外。有利地,保存到存储区的方案可供其他方案使用,称为方案子例程。

该方法可以进一步允许位于方案存储区中的先前完成的方案在构建工作区和方案存储区之间来回移动和/或复制。有利的是,用户可以移动、复制和修改保存的方案,以将其重新用于新方案中。

该方法可以进一步允许用户包括报告命令,以生成报告,以用于完整记录所执行的方案、每个步骤变化及其对所选模型输出的影响。

该方法可以进一步允许由不同的用户在模型的副本上分别且同时且开发方案,然后将其组合成一个合并的方案脚本。有利地,这减少了完成新方案更新的时间,因为几个用户可以同时开发其方案脚本和版本的不同部分。

该方法可以进一步使方案脚本能够反转复制方向,从而允许用模型中的新值来更新现有版本的版本值。有利地,反向复制允许将数据提供给建模团队提供数据其他群组使用带有反转复制命令的方案脚本自动更新其输出模板。然后,建模团队可以使用提供给他们的方案脚本和版本文件自动更新其模型。

该方法可以进一步包括使用现有工作表作为模板来创建工作表差异集合,该集合包括工作表的副本以及差异工作表,工作表的副本具有保存为常数的值,差异工作表具有在每个单元格中的公式,该公式计算现有表和副本工作表单元格之间的改变。除了单元格中的数值,副本工作表和差异工作表的外观与现有工作表的外观相同。

该方法还可以通过使副本工作表中的单元格的数值等于现有工作表中的单元格的数值并重新计算电子表格,来重置工作表差异以评估为零。

该方法可以进一步包括使方案脚本能够如用户所指定的那样在电子表格模型中创建和更新副本工作表和差异工作表,并将这些工作表的副本插入到报告工作表中以进行分析。有利地,这允许用户以熟悉的用户定义格式捕获每个选定步骤之间差异的快照。作为该实施例的示例,用户可以选择自定义构建的摘要工作表,或者可替换地使用现有工作表来生成快照报告。在执行方案脚本后,快照报告将显示一系列数据更改,因为新输入将流过(flow through)摘要工作表。用户可能希望选择模型中的几个或所有工作表,以获得详细的分步快照报告(取决于可用的计算机存储器、电子表格应用程序限制和计算时间约束)。这提供了非常详细的检查工具,用于审查和评估模型中每个更改是否正确级联。

该方法可以进一步包括对版本对象集合、方案构建区和方案存储区中的任何一个或多个,使用三列布局来管理方案开发和执行。有利的是,用于创建或编辑方案脚本的所有对象和控件都组合在一个可见的GUI中,该GUI包含快速的鼠标拖放动作来移动对象以及上下文相关菜单命令。

该方法可以进一步用唯一的键标识符在版本集合和方案脚本中定义版本对象和命令对象。所有新的或复制的对象优选地用新的唯一键来创建。优选地,对象是通过它们的唯一的键标识符而不是它们的标签来检索的。有利地,用户可以使用标签重命名版本和方案对象,这些标签可以更好地描述由方案脚本生成的报告中步骤更改的性质。

该方法可以进一步允许单个方案脚本的范围以更新多个电子表格文件。有利的是,用户不需要针对每个电子表格文件的单独方案脚本,而是该方法可以访问在同一应用程序实例中打开的任何电子表格文件并与之交互。

该方法可以进一步基于模型名称中的最小公共文本字符串来确定要在方案脚本中使用的等效模型。对于习惯于通过将后缀或前缀标识符添加到名称词干来重命名新近更新的文件的用户而言,这是有利的。等效算法自动将所需文件名与打开文件的名称词干匹配,并在方案脚本中使用这些匹配的文件,而无需重命名方案和版本对象。反馈指示符告知用户所述匹配成功。

该实施例可以照原样应用于任何Microsoft Excel电子表格。该实施例可以根据需要并在用户的控制下向用户的电子表格添加任何其他对象。

本发明的实施例可以包括以Microsoft VB.NET编写的Microsoft Excel VSTO加载项。加载项可以是由用户安装到其Microsoft Excel应用程序中的编译代码(要求安装当前版本的Microsoft Excel)。一旦加载,可以在Excel中安装新的菜单功能区,从而允许用户访问根据本发明的实施例的改进的电子表格。本发明不限于任何特定应用或任何特定环境或任何特定类型的形式或图形用户界面。相反,本领域技术人员将发现,本发明的系统和方法可以有利地应用于包括数据库管理系统等在内的各种电子表格系统和应用软件。

在本发明的范围内,本文描述的任何特征可以与本文描述的任何一个或多个其他特征以任何组合进行组合。

附图说明

本发明的优选特征、实施例和变型可以从下面的详细说明中看出,该详细说明为本领域技术人员提供了足够的信息来执行本发明。该详细描述不应被视为以任何方式限制前述发明内容的范围。详细说明将参考以下多个附图:

图1是本发明实施例的Excel功能区菜单的位图屏幕快照,显示了应用程序级别命令。

图2是方案管理器表单的位图屏幕快照,它是该软件的主要GUI。

图3是方案管理器表单中“File(文件)”选项卡的位图屏幕快照,“File”选项卡用于打开和创建方案文件。

图4是方案管理器表单中“Version(版本)”选项卡的位图屏幕快照,“Version”选项卡用于为方案构建过程创建和加载版本对象。

图5是方案管理器表单中“Scenario(方案)”选项卡的位图屏幕快照,“Scenario”选项卡用于创建和管理方案脚本。

图6是用于将命令和报告添加到方案脚本的“Scenario”选项卡上下文菜单的位图屏幕快照。

图7是用于从方案脚本中选择要调用的方案的“Scenario”选项卡上下文菜单的位图屏幕快照。

图8是用于从方案脚本中选择要调用的VBA例程的“Scenario”选项卡上下文菜单的位图屏幕快照。

图9是用于为版本更改选择替代电子表格的“Scenario”选项卡上下文菜单的位图屏幕快照。

图10是用于选择工作表以进行快照报告的“Scenario”选项卡上下文菜单的位图屏幕快照。

图11是用于选择对方案脚本的其他报告命令的“Scenario”选项卡上下文菜单的位图屏幕快照。

图12是用于管理版本对象集合的“Scenario”选项卡上下文菜单的位图屏幕快照。

图13是方案管理器表单中的“Modify(修改)”选项卡的位图屏幕快照,“Modify”选项卡用于更改电子表格和版本对象中现有范围的大小。

图14是方案管理器表单中“Merge(合并)”选项卡的位图屏幕快照,“Merge”选项卡用于将方案电子表格和单独开发的文件组合到一个方案中。

图15是方案管理器表单中“Rename(重命名)”选项卡的位图屏幕快照,“Rename”选项卡用于更改版本对象中的模型电子表格的名称。

图16是版本管理选项的位图屏幕快照。

图17是备份管理选项的位图屏幕快照。

图18是“Names Navigation(名称导航)”表单的位图屏幕快照,用于在工作表中定位和显示范围名称。

图19是“Names Navigation(名称导航)”表单上下文菜单的位图屏幕快照,该菜单用于在工作表中的范围名称旁边标记标签,并在范围名称单元格周围绘制一个框。

图20是示例电子表格模型的位图屏幕快照,显示了标签标记和范围名称单元格周围的框。

图21是示例方案电子表格模型的位图屏幕快照,显示了水平配置中的复制值。

图22是示例方案电子表格模型的位图屏幕快照,显示了垂直配置中的复制值。

图23是示例错误列表的位图屏幕快照,该示例错误列表是在创建版本时生成的,其中包含有关错误的来源和性质的信息。

图24是示例错误列表的位图屏幕快照,该示例错误列表是在执行方案时生成的,其中包含有关错误的来源和性质的信息。

图25是示例报告的位图屏幕快照,其中列出了完整的方案脚本。

图26是单个版本的示例报告的位图屏幕快照,显示了之前和之后的值。

图27A是用于组合版本的示例报告的位图屏幕快照的顶部区段,显示了每个版本和所选范围的之前和之后值。

图27B是用于组合版本的示例报告的位图屏幕快照的底部区段,显示了每个版本和所选范围的之前和之后值。

图28是瀑布图的示例报告的位图屏幕快照,显示了用户选择的值的更改。

图29A是示出初始值的示例版本更改报告的区段的位图屏幕快照。

图29B是初始值的示例版本更改报告的区段的位图屏幕快照。

图29C是示出移动和最终值的示例版本更改报告的区段的位图屏幕快照。

图29D是以图表形式示出移动和最终值的示例版本更改报告的区段的位图屏幕快照。

图30是示例报告的位图屏幕快照,示出了快照报告的差异工作表,请注意没有差异的单元格用短划线示出。

图31是文件夹结构的位图屏幕快照,例示了软件文件的相对位置和扩展名。

图32是Modifier(修饰符)键(Ctrl,Shift,Alt)的弹出菜单的位图屏幕快照,该弹出菜单与鼠标拖放一起使用,以将报告参数添加到方案报告命令中。

具体实施方式

系统软件

以下描述将集中于本发明的当前优选的电子表格实施例,其体现于MicrosoftWindows环境中的Office工具的Microsoft Excel应用程序、Microsoft VB.NET和Microsoft Visual Studio中。

然而,本发明不限于任何特定的应用或任何特定的环境。相反,本领域技术人员将发现,本发明的系统和方法可以有利地应用于包括数据库管理系统等在内的各种电子表格系统和应用软件。此外,本发明可以在包括苹果Mac PC等的各种不同平台上实现。因此,以下示例性实施例的描述是出于说明的目的,而不是限制。

在Microsoft Excel电子表格术语中,电子表格文件称为工作簿,而工作簿文件中的选项卡式部分称为工作表。除了参考工作簿文件之外,本发明的实施例还创建并参考其自己的方案文件和跟踪文件。在此,方案工作簿是指保存数据的不同版本的位置,模型工作簿是指保存有分析人员开发的电子表格模型的位置。

Windows界面

电子表格软件可通过3个主要的图形用户界面(GUI)来访问:功能区菜单栏(图1),用于方案管理器的多选项卡窗口表单(图2)和“Names Navigation(名称导航)”表单(图18)。在用户交互过程中,将显示其他表单或显示框,以确认用户命令或提供反馈或错误消息。

功能区菜单栏由特定于本发明的本实施例的元素组成,具有若干用户命令选择,每个用户命令选择都可以调用其他子菜单(或附加子菜单,additional submenus)。这些命令驱动本发明与电子表格应用程序之间的交互,并提供命令以加载方案管理器和名称导航窗口表单(项目101)。

功能区菜单可以包括用于启动两个窗口表单的按钮:方案管理器和范围名称导航工具(项目101)。该菜单可能还包括用于更新范围名称索引查找文件的选项和工具(项目102)、将活动文件复制到备份文件夹的备份工具(项目103)、用于保存打开的工作簿的保存工具(项目104)、工作表保护和取消保护工具(项目105)、生成用于分析的差异工作表的工具(项目106)以及工作簿/工作表快速导航工具(项目107)。

本发明的优选实施例的主要GUI是方案窗口表单。该表单包括7个选项卡(图2)以及表单顶部和底部的两个状态通知行(项目208和209)。前三个选项卡:“Files(文件)”(项目201),“Version(版本)”(项目202)和“Scenarios(方案)”(项目203)用于激活、创建和编辑方案,接下来的三个选项卡是高级工具:“Modify(修改)”(范围名称大小,项目204),“Merge(合并)”(方案文件,项目205)和“Rename(重命名)”(方案文件中的工作簿名称参考,项目206)。最后一个选项卡包括选项和设置(项目207)。

Windows表单包括用于选择和调用屏幕对象(即:控制按钮)的屏幕光标或指针。响应于来自定点设备的用户移动信号,光标在屏幕上移动到所需的屏幕位置。在光标移动期间或之后,用户可以生成用于选择和操作对象的用户事件信号(即,鼠标单击和拖放)。

在优选实施例中,使用鼠标设备,使用选项卡键在对象或键快捷方式之间切换,来控制屏幕光标。更优选地,屏幕光标控制设备是两按钮鼠标设备(左右鼠标按钮),具有用于在树状视图或列表视图中上下移动项目列表的滚轮(通常在中间)。

VSTO加载项

该软件应用程序是使用Microsoft Visual Studio.NET(VB.NET)和Microsoft的Visual Studio Tools for Office(VSTO)开发工具加载项(项目模板)编写的,使用Microsoft Visual Studio作为集成开发环境(IDE)用VB.NET语言开发代码。

VB.NET是一种多范例的,面向对象的编程语言,在Microsoft开发的.NET框架上实现,该框架主要在Microsoft Windows操作系统上运行。

Visual Studio Tools for Office(VSTO)开发工具加载项用于通过.NET框架公开Microsoft Office开发工具的功能。这样就可以用VB.NET编写Office应用程序的扩展,并可以从Office应用程序访问功能和用户界面构造。

Microsoft Visual Studio IDE用于创建本发明的代码并将该代码编译为Microsoft Office Excel的应用程序级加载项。然后,将应用程序加载项分发给用户并安装到他们的计算机上。一旦安装并在用户启动Microsoft Excel之后,Excel功能区菜单栏现在将包括方案管理器菜单项(图1)。

界面说明

用户通过三个图形用户界面(GUI)与软件进行交互:功能区菜单栏(图1),用于方案管理器的多选项卡窗口表单(图2)和“Names Navigation(名称导航)”表单(图18)。

功能区菜单栏用于启动两个表单并访问特定于方案管理器的各种工具。

大多数电子表格软件应用程序中的关键结构是单元格的命名范围。范围是指工作表中(在工作簿文件中)单元格的选择,命名范围是指已保存为唯一的用户定义名称的选定单元格的地址(项目2001)。命名范围保存在创建它的工作簿中。

尽管在电子表格应用程序之间特定的命名规则可能有所不同,但是在某些电子表格应用程序中,名称可能是全局的(作用于整个工作簿中的任何单元格)和/或局部的(作用于特定的工作表)。因此,可以在每个工作表中使用相同的名称来标记全局范围名称和一个局部范围名称。

范围名称是访问特定单元格集合的便捷捷径。此外,由范围名称指定的单元格地址预计将随着工作簿结构的修改而动态更新。具体地说,如果在范围名称中引用的单元格上方添加了新行,则名称中位于插入点以下的单元格地址的行分量将增加一行。类似的操作适用于行删除(减少一行)和列插入或删除。该动态更新由电子表格软件应用程序执行。

方案管理器表单提供用户控件以创建和保存命名范围(项目402),审查版本和单元格内容(项目504),从保存的范围名称构建方案脚本(项目509),管理已经在方案中选择为版本的范围名称的修改(图13),合并包括已保存方案数据的方案脚本(图14),在现有版本和命令对象中重命名活动工作簿(图15)并管理版本数据和对象的文件存储(图3)。

在开发方案中,用户可能希望在现有工作簿中使用现有范围名称。通常,电子表格应用程序中有内置工具可帮助用户定位其命名范围。基本方法是使用范围名称管理器工具从所有名称列表中定位范围的名称,然后通过选择或单击目标名称,内置工具将刷新显示以突出显示所选范围名称所引用的单元格。

“Names Navigation(名称导航)”表单是专用的应用工具,可帮助用户查找其范围名称(图18)。“Names Navigation(名称导航)”表单列出了所有范围名称(项目1810),但具有增强功能。创建名称和地址的完整列表后,它将保存到文件中以供重新使用。这减少了等待时间,尤其是在命名范围的数量非常大的情况下,这是因为该列表仅在将新名称添加到工作簿时才会定期更新。其他增强功能包括:通过使用较大的显示区域(扩展到完整的监视器大小),更轻松地导航和选择项目;可以在范围名称周围放置/删除彩色框/标签,以便在电子表格中轻松识别的能力(项目1901和2001),以及搜索特定的文本字符串的名称过滤器(项目1805和1807)。

在方案管理器中可用的替代方法是自动列出那些包含用户使用其鼠标光标选择的特定工作表单元格的范围名称(项目407)。这种对用户来说更直观的方法需要在工作会话之前或期间生成的索引文件(项目102:“Update(更新)”按钮)。一旦创建索引文件,就使用用户创建的任何新范围名称进行更新,前提是这些名称是使用方案管理器表单创建的(项目402)。在任何涉及添加或创建行或列的电子表格重组之后,索引文件都需要更新。创建索引文件不会添加或以任何方式修改用户的源工作簿。

因此,用户可以选择从列表中选择范围的名称来找到要更新的所需单元格(项目1810),或者通过选择特定的单元格来找到现有的名称(项目407)。索引文件不会被用于也不需要被用于创建版本对象或运行方案脚本。其仅仅是快速查找属于范围名称的那些单元格的一种导航辅助。

菜单功能区

一旦将软件安装到用户计算机上(必须还安装了当前版本的Microsoft Excel),新的菜单功能区就会可用,从而使用户可以使用功能更强大的电子表格进行访问。

本发明的菜单功能区包括7个选项卡,标记为:“Run(运行)”、“Names Index(名称索引)”、“Backup(备份)”、“Save(保存)”、“Sheets(工作表)”、“Snapshot(快照)”和“Workbooks(工作簿)”(图1)。

运行

“Scenarios(方案)”(项目101)启动用于开发和管理方案的方案管理器表单(图2),并且Names启动用于查找和选择命名范围的“Names Navigation(名称导航)”表单(图18)。

名称索引

“Update(更新)”(项目102)创建新的名称索引文件。名称索引文件提供了一种查找范围名称的替代方法。“Names Navigation(名称导航)”表单列出了所有范围名称,允许用户查找和选择范围。使用名称索引文件,用户可以在工作表以及软件列表中选择单元格,该软件列表仅列出那些由用户创建、且包含其范围内的所选单元格(项目407)的名称。

验证是检查名称索引文件中是否包含所有范围名称的快速方法。当范围名称的数量非常大(超过一千)时,验证是一种更快的检测不一致的方法。如果验证检测到新名称丢失或与名称索引文件中保存的属性不同,则使用更新。

备份

“Backup(备份)”(项目103)是帮助用户存档其工作的工具。如果调用,则所有打开的excel工作簿和所有活动方案文件都将被复制到新的带有日期戳的文件夹中。文件夹的名称可以由用户设置,并自动添加日期戳。

保存

“Save All(全部保存)”(项目104)是一种快捷工具,用于保存所有当前打开的工作簿。“Save As(另存为)”以新名称(软件提示)保存当前活动的工作簿,并使用新的工作簿名称更新当前活动的方案文件中的所有版本和命令对象。

工作表

版本数据使用受保护的默认设置保存到工作表中。这样可以确保用户在审查其数据时不会无意间更改受保护的工作表。“Protect(保护)”(项目105)按钮将锁定工作表并阻止编辑。“Unprotect(取消保护)”按钮解除保护,以允许高级用户对其数据进行更改。

快照

快照工具(项目106)允许用户创建差异工作表以可视化对模型中的活动工作表进行更改的影响。活动工作表是差异可视化的源工作表,并保留原始模型公式。活动工作表不受快照算法的影响。

快照是具有与活动工作表完全相同的布局的工作表,但是每个公式单元格显示活动工作表中的等效单元格与更改之前创建并保存在工作表副本中的单元格值的副本之间的差异。等效单元格是位于相同位置(单元格地址)但在不同工作表上的所有单元格。为了提高清晰度,零值单元格(表示无变化)被抑制并显示为破折号。活动工作表中空白或包含文本的那些单元格将其原始值保留在差异工作表中(图30)。

在模型更改之前的单元格的值由快照功能区命令(项目106:“New(新建)”按钮)生成为活动工作表的相同工作表副本,并插入到活动工作表之后。具有数字公式的所有单元格都将转换为反映其当前值的常数。快照完成后,工作簿将包含两个其他工作表:更改之前的活动工作表的副本,其中所有公式都被其数值替换;另一个差异工作表,其中所有公式都被代表了复制的值与当前活动值之间的差的公式替换。

工具栏命令(项目106)用于创建新的副本和差异工作表,重置副本值以反映当前活动工作表值(有效地将所有差异重置为零),删除副本和差异工作表,通过删除并重新创建工作表来重新构建副本和差异工作表(通常在完成对活动工作表的结构更改之后使用此选项)。

快照既可以用作独立功能,也可以包含在方案脚本生成的报告中。执行脚本后,将创建差异工作表(如果尚不存在),通过重置副本工作表进行更新,并且将针对用户指定的步骤自动生成快照报告。

工作簿

“Workbooks(工作簿)”(项目107)包含工作簿和工作表浏览工具的集合,这些工作表导航工具用作选择当前打开的任何工作簿或任何打开的工作簿中的任何工作表的快捷方式。

方案管理器表单

方案管理器表单(图2)是用于创建,编辑和运行方案的主要GUI。该表单包含7个选项卡:“Files(文件)”(用于选择和加载活动方案),“Versions(版本)”(用于创建备用版本数据对象),“Scenario(方案)”(用于编辑和运行方案),“Modify(修改)”(用于更改现有方案中的现有版本对象范围的大小),“Merge(合并)”(用于合并单独创建的方案),“Rename(重命名)”(用于更改现有方案中的目标方案工作簿名称)和“Options(选项)”(其他选项卡的附加参数和设置)。

文件名

该软件创建三个特定文件来维护和保存用户的方案。这些文件可按其扩展名区分:scen(称为SCEN文件),nndx(称为NNDX文件)和nmod(称为NMOD文件)(分别为项目3103、3104和3107)。该软件还生成标准的Excel工作簿,用于保存版本值和各种工作簿报告。

这些特定文件的目的如下:

SCEN文件包含由用户创建的版本和方案属性的词典。将为每个方案工作簿创建一个SCEN文件,并以与方案工作簿相同的文件名将其保存在同一目录中。

NNDX文件包含用于从选定单元格的地址快速查找范围名称的范围名称索引的参数,以及名称导航工具所使用的已保存名称的参数。将针对每个具有方案的工作簿创建一个NNDX文件,或者使用名称导航工具对其进行了分析。NNDX文件可以根据需要方便地更新和重新创建。

NMOD文件包含用于修改所选名称的范围的参数。将针对每个具有修改范围的工作簿创建一个NMOD文件。NMOD用于更新在用户还需要更新的模型更改之前创建的较早的方案文件。

NNDX和NMOD文件都与保存其参数的工作簿保存在同一目录中,并具有相同的文件名。

文件选项卡

文件选项卡(图3)用于打开和加载可用方案。每个方案始终由两个具有相同名称的文件组成:Excel工作簿(扩展名为xlsx,项目3106)和方案文件(SCEN文件,项目3107),它们由软件生成和更新。这些文件保存在相同的方案目录中(项目3105)。用户使用“BrowseFile(浏览文件)”或“Browse Folder(浏览文件夹)”按钮查找方案文件(项目302)。点击任一项目将打开标准窗口的文件对话框表单,用户可以浏览该文件对话框表单以查找要上载的文件夹或文件。所选文件夹中的所有方案文件都显示在列表视图中(项目303),用户可以通过单击列表视图控件中的方案文件名来更改其选择。所选方案是活动方案,并在底部状态栏中显示为活动方案(项目209)。

版本选项卡

版本选项卡(图4)允许用户将新的数据集(版本对象)保存到方案文件中。保存后,用户即可操纵这些对象以在“Scenario(方案)”选项卡中创建方案脚本。

用户导航到他们希望更新或简单地保存的单元格(使用原始数据)。一旦选择了第一个单元格,包含该单元格的范围名称就会在版本范围名称列表视图中列出(项目407)。

用户可以选择现有范围名称(项目407),并用新数据更新选择或创建新范围。在后一种情况下,用户更新选定的单元格并使用其鼠标选择要保存的连续单元格块,并在文本框中输入新的范围名称(项目405)。

在更新单元格数据并选择适当的范围之后,用户可以为该范围输入新名称(项目405)或使用现有名称(项目407),为方案脚本输入版本名称(项目404),输入版本说明(项目409)和范围注释(项目410)。

一旦所有数据、描述符和名称都被更新,则用户通过单击“Add to Scenario(添加到方案)”或“Add to Model(添加到模型)”(项目402)按钮来创建新版本。前一个按钮将单元格数据添加到活动方案工作簿中,而后一个按钮将单元格数据添加到活动模型中的自动生成的工作表中。版本对象属性始终保存到由软件创建的方案文件中(SCEN文件,项目3107)。同时,用新创建的版本更新方案选项卡中的版本对象集合(项目504)。

注意,通过选择单元格来检测范围名称取决于活动工作簿的更新的名称索引文件(NNDX文件,项目3103)。如果没有名称索引文件,则用户可以选择单元格的确切范围:通过使用鼠标选择连续的单元格,或从“Names Navigation(名称导航)”表单的名称列表视图中选择名称(项目1810)。该软件还会在范围名称集合中搜索与所选单元格地址匹配的任何单元格地址,但是将在100毫秒后终止搜索(或在“Version Option(版本选项)”中设置的用户定义的最大时间,项目1601),以防止搜索包含1000个名称的大范围名称集合的过多延迟。

该选项卡还包括用于重命名范围名称的控件(项目411)。使用这些控件,软件将更新模型工作簿和所有活动方案文件中的名称。

方案选项卡

方案选项卡用于创建和运行方案脚本(图5)。方案选项卡从左到右包含三列:用户创建的版本对象的集合(在“Version Tab(版本)”选项卡中)(项目504),带选项卡的构建工作区,可在其中构建、开发和执行几个脚本(项目509),最后是还可以执行的完整脚本的存储区(项目512)。构建工作区中的方案也可以将存储区中的方案称为子例程。存储区中的方案可以调用存储区中的其他方案,但不能调用构建工作区中的方案。

通过选择版本对象并将其从版本对象区域拖到方案构建工作区来开发方案。用户可以通过简单的拖放在构建工作区中重新排序版本或命令。通过选择项目并按键盘上的Delete键,可以删除项目。

除了版本之外,该脚本还可以包括用于控制执行和创建报告的命令。

这些命令被插入到构建工作区中所选项目的下方,并且可以通过单击鼠标右键来访问。该软件将启动命令上下文菜单,用户可以从中选择所需的命令(图6)。

用于控制执行的命令包括:“Calculate(计算)”(强制进行所有工作簿的完整计算,项目603),“Calc On(计算打开)”(将工作簿计算模式设置为打开,项目604和605),“Calc Off(计算关闭)”(将工作簿计算模式设置为关闭,项目606),“End Run(结束运行)”(停止方案脚本执行,项目607),“Activate(激活)”(将版本或命令重置为活动状态),“De-Activate(停用)”(停用并跳过执行版本或命令),“Alternate Target workbook(备用目标工作簿)”(更新其他用户使用版本数据指定的模型,项目610),“Versions Update(版本更新)”(反向复制:将模型中的值复制到版本工作簿,项目611),“Call Scenario(调用方案)”(调用从“Storage area(存储)”区域中选择的方案脚本作为子例程,项目608),并调用“Call VBA Routine(VBA例程)”(启动并执行从任何当前打开的工作簿中选择的VisualBasic应用程序例程,项目609)。

用于创建报告的命令包括:“Log All On(登录全部)”(项目612),对于执行的每个版本,在之前(项目2601),之后(项目2603)和移动中(项目2602)显示版本值,“WaterfallOn(瀑布打开)”(项目613),对于每个执行的版本,以瀑布图的形式显示用户指定的监视值的变化(图28),“Chart On(图表打开)”(项目614),对于每个执行的版本,将之前,之后和移动中对用户所选范围的影响(单行或单列)显示为图表(图29B和29D),“Snap Shot(快照)”(项目615),对于执行的每个版本,均显示在之前,之后和移动中用户选择的工作表的所有单元格值(图30,仅显示差异)。

其他报告命令(图11)包括:“Log All Off(全部注销)”(项目1102),“(瀑布关闭)”(项目1103)和“(图表关闭)”(项目1104),停止记录每个版本的更改,以及“Log Versions(s)(日志版本)”(项目1105),“Waterfall Watch(瀑布监视)”(项目1106)以及“ChartWatch(图表监视)”(项目1109),它们类似于:“Log All On(登录全部)”,“Waterfall On(瀑布打开)”和“Chart On(图表打开)”。最后这三个附加命令允许用户指定将哪些版本分组在一起以产生单值影响,即:对于工厂和机器,可能会有单独的资本支出版本,它们可以一起分组为一个资本项目。“Waterfall New(瀑布新建)”(项目1107)修改了瀑布打开命令,以便在新图表中显示后续版本。“Waterfall Mid-Total(瀑布中间总计)”(项目1108)在瀑布监视图表中添加了一个新的带标签的中间总计条。

“Log Version(s)(日志版本)”报告列出了版本组的之前,之后和移动值(图27A,项目2701)以及所选用户定义和自定义输出范围上的之前,之后和移动值(图27B,项目2702和2703)。

用鼠标光标选择版本将刷新具有所选版本或命令的属性和详细信息的版本信息文本框(项目627)。

用户可以通过按键盘上的“F5”键(激活并在显示屏上显示模型工作簿数据)或键盘上的“F6”键(激活并在显示屏上显示方案工作簿数据)来跟踪源工作簿和选定版本的数据。跟踪源数据需要在excel应用程序中打开相应的工作簿文件。跟踪是查看版本数据、原始模型值以及数据在模型中的位置的便捷,准确的方法。

方案脚本一旦完成,用户就可以通过分别单击构建工作区方案或存储区方案(项目506或511)上方的“Run(运行)”按钮来执行脚本。随着运行的进行,根据版本对象的属性,将版本数据从方案文件范围复制到模型工作簿范围,执行控制命令,报告命令创建填充有适当表和图表的报告工作簿。每个报告工作簿都包含一个主要工作表,其中列出了方案脚本的所有步骤(项目2501)。

随着运行的进行,如果版本或命令步骤执行时没有任何错误,则在其前面放置绿色的勾号;如果错误阻止该步骤成功完成,则在其上标记红色的叉号。如果发生错误,则运行执行终止,然后在新可见的错误选项卡(项目2401)中生成错误报告。如果工作簿文件丢失或范围名称不再存在或已被修改并且与原始大小不同,则会发生错误。

验证运行允许用户执行试运行,由此软件检查方案的所有必需组件和对象是否可用并加载到计算机存储器中。验证运行将继续到脚本末尾,并且在发生错误时不会终止。检测到的所有错误均记录在错误报告选项卡(项目2401)中。验证运行速度很快,因为实际上并未真正复制数据,不计算工作簿并且不生成报告。

单步执行与运行执行类似,不同之处在于,一次处理一个脚本步骤(自动跳过未激活的步骤)。为了完成方案执行,用户继续单击单步控件,直到执行了所有步骤(方案工具栏上的“SST”按钮:项目506和511)或用户决定取消执行。该程序在每次单步点击之间都有效地暂停,用户可以检查并审查打开的工作簿中的数据和结果。单步是了解和核验运行期间每个中间方案脚本步骤的效果的有效工具。程序暂停时,将保存运行的关键参数(打开的工作簿和活动对象的名称),当用户审查后执行下一个步骤时,可以恢复运行环境。

为了保持完整性,构建了方案以应用于特定命名的工作簿模型。用户可以使用菜单功能区上的“Save(保存)”工具更改模型名称(项目104:“Save As(另存为)”按钮)。该工具还将在活动方案的所有版本和命令中更新工作簿名称。或者,用户可以选择工作簿等效控件以自动为方案脚本分配新的模型名称(此控件将尝试查找具有匹配的起始字符的工作簿等效名称)(方案控件中的“WBk Equiv(开始)”按钮:项目502)。该软件基于从名称开头开始的最长匹配字符串,将打开的工作簿名称与方案文件中引用的工作簿进行匹配。如果没有成功匹配任何名称,则会显示一条错误消息。如果未显示任何错误,则说明匹配成功,并且可以通过单击“Match(匹配)”下拉控件(“Scenario Controls(方案控件)”中的“Match(匹配)”按钮:项目502)列出匹配,这将使用户有机会查看该匹配工作簿的适当性。

修改选项卡

名称修改选项卡(图13)用于更改现有方案文件中已引用的现有范围名称的大小。当用户希望减少或增加现有范围名称中的行数或列数,并确保更改也适用于方案工作簿中的版本对象属性和保存的版本数据时,将使用修改工具。应用更改后,新的行或列将插入到以前保存的版本数据中,并用空白填充。删除的行或列将从以前保存的数据中删除。

用户在模型工作簿中选择要调整的单元格(以插入或删除单元格),然后单击“Insert Row(插入行)”,“Insert Row(插入列)”,“Delete Rows(删除行)”或“DeleteColumns(删除列)”控件(在“Modify(修改)”控件中:项目1301)以完成更改。用户必须至少选择所有选定范围的全高(列编辑)或全宽(行编辑)才能启用这些控件。

软件将为修改后的范围名称更新模型工作簿、活动方案范围和属性。所需的更改也以与模型工作簿相同的路径和名称(项目3101和3102)保存到名称修改文件(NMOD文件,项目3104)。如果名称修改文件仍然可访问,则软件将使用它来更新其他方案文件中的相同范围结构。如果尚未调整版本并且版本创建数据早于名称修改日期,则更改将在“Run(运行)”执行期间完成。可以将对模型工作簿的其他范围更改添加到现有的NMOD文件中。

合并选项卡

合并选项卡允许用户将先前的方案脚本和版本数据组合到合并方案文件和数据工作簿中。保存在模型工作簿中的版本数据将包含在合并版本数据工作簿中,而不添加到任何其他模型中。

如果所有工作簿副本的范围名称的结构保持不变并且没有添加新的范围名称,则在模型副本上同时创建版本和方案的用户可以使用合并工具来组合其新方案和输入数据。合并过程假定复制的模型中的所有范围名称均保持一致。

用户使用“Add Scenario File(添加方案文件)”和“Add Model&Scenario File(添加模型和方案文件)”按钮(在“Merge(合并)”控件中:项目1401)选择要合并的文件。如果用户要求将保存在模型工作簿中的版本数据也合并,则选择后者。然后,用户浏览目标目录并输入新的合并方案文件名。一旦捕获了所有详细信息,即可通过单击“Merge Files(合并文件)”按钮(在“合并”控件中:项目1401)来创建合并的文件(SCEN和版本数据工作簿)。如果检测到重复的版本对象(具有相同唯一标识符的版本),则仅将一个副本转置到合并的文件中。

重命名选项卡

重命名选项卡将方案文件(SCEN文件)中的活动工作簿名称引用转换为新的用户定义名称(图15)。重命名选项卡提供与菜单功能区(项目104)中的“Save As(另存为)”功能相同的功能性,并具有一些额外的灵活性。“Save As”功能实质上仅限于转换一个方案文件(当前活动的方案)。重命名选项卡控件允许用户输入任何方案文件的模型工作簿名称,而无需存在具有原始名称的原始工作簿。

重命名选项卡将列出方案文件中引用的工作簿名称(项目1505)。用户从该列表中选择一个名称进行更改。可以从当前打开的工作簿列表中选择目标名称(项目1506),或者由用户在文本框中输入目标名称(项目1501)。完成所有选择后,单击“Apply New Name(应用新名称)”按钮以替换名称。在实施更改之前,将自动创建并保存方案文件的备份。对于方案引用的任何其他模型工作簿名称,可以重复此过程。

范围名称导航表单

范围名称导航表单(图18)是一种工具,可帮助用户查找要更新的现有范围名称的单元格。选项卡已打开,用户在名称列表(项目1810)中选择的名称将在打开的工作簿中突出显示,并且则还将在方案管理器表单的“Version(版本)”选项卡中列出(项目407)。用户可以从该列表中选择要用于下一个版本数据对象的范围名称。

范围名称导航表单基于范围名称地址的工作表在类别中列出了名称(项目1806)。通过选择工作表类别,列出了在该工作表中具有范围地址的名称(来自所选工作簿)。三个附加类别用于列出工作簿中的所有名称、全局名称和局部名称。为了提高效率,将提取的列表保存在工作簿索引名称文件(NNDX文件)中,以避免重建列表的过程可能很慢(如果存在数千个名称)。如果修改了工作簿中的名称或地址,则用户可能希望更新保存的数据(项目1801:“All Names(所有名称)”按钮)。

最后,还可以基于部分文本字符串过滤器来列出名称(过滤器文本:项目1805,过滤后的摘要结果:项目1807)。过滤器包括两个附加的匹配属性:区分大写字母或不区分大写字母,以及全范围或仅名称(全范围包括局部范围名称的工作表名称)。单击过滤后的摘要结果列表中的项目(项目1807)将在名称列表中显示所有匹配的名称(项目1810)。

名称列表窗口中的上下文菜单(单击鼠标右键,图19)可用于从所选范围名称中添加或删除标签。标签被标记为位于范围边界上的蓝色矩形对象(项目2001)。标签是帮助用户定位特定范围名称的附加工具。

方案管理方法

组织机构正在使用电子表格模型来量化新投资决策对其未来运营和绩效的影响。这些模型通常构成更广泛的风险管理过程的一部分,并经过仔细检查和审查。由于未来是不可预测的,因此将使用不同但合理的输入假设重新计算模型。这些不同的方案或“假设”分析为决策者提供了一系列可能性。根据这些结果以及对基本假设可能性的评估,组织可以定义并执行它认为最有可能成功的行动。

以最简单的形式,可以通过使用新的输入假设和公式更新工作簿模型的多个副本来实现方案分析。实际上,由于存在如下挑战,这种过程变得难以操控:要保持这种模型的扩散是最新的,并且相互一致,而必须在所有复制的模型中实现结构或新的基本假设。此方法的一种变体是将相关部分或整个模型的确切单元格内容复制到同一工作簿中的不同工作表中。在工作表之间维护工作表一致性可能更容易一些,具体取决于电子表格软件中可用的内置工具,然后在多个工作簿之间维护工作表一致性。

为了在一个主模型中产生这些“假设”结果,已经开发了特定的建模技术。最简单的方法是在模型内构造一个选项表,并使用标志和布尔逻辑(if语句)系统在不同的假设之间进行切换。然后,用户可以按顺序手动切换每个新的假设,并收集每个更改的结果。这种方法的缺点是不断地添加新的模型结构以适应新的输入假设,修改报告工作表以及为每次更改维护最新文档而需要付出的(在开发时间和测试方面的)精力。此外,连续的结构变化是将新错误引入模型的途径。本发明提供了一种使许多这些过程标准化和自动化的方法。

其他方法,例如在Microsoft Excel中找到的方案管理器加载项,使用户可以定义一小组更改单元格,这些单元格可以包含多个常量值,并且每组值都保存在方案名称下。用户还定义了要包含在输出表中的结果单元格集。然后,用户激活特定方案,然后该方案的数据集将替换选定的单元格集。使用新值重新计算电子表格,并生成结果表,显示激活的方案对每个定义的输出单元格的影响。其他变体通过消除可以更改的32个单元格(每个工作表)的限制以及允许在这些单元格中使用公式(不仅是常量),从而提高了Excel方案管理器的功能。不幸的是,所有这些方法都一步更新了所有版本,没有任何可能调查或批准中间结果。版本或原始源数据无法显式查看,因为它们已保存在存储器中,并且必须首先由用户检索。用户从控制设置中选择要激活的方案,然后选择要显示的版本数据集(一次显示一个方案)。

改进的方案管理器

当前实施例提供了更复杂和强大的方法。与刚刚描述的工具类似,它捕获用户定义的公式或常量数据范围(受存储器和电子表格大小限制),但是将它们保存到专门构建的方案工作簿中,其中版本的源数据仍然可见,以供用户或审阅者检查(利用方案管理器表单中提供的易于查找的导航工具)。

先前的方法在一个实例中更新方案的所有版本,相反,本发明一次一个版本步骤地更新工作簿,并且包括在版本更新之间生成差异报告的能力,从而显示单个版本更改的影响。方案可以链接在一起,因此一个主方案可以调用基本方案,以将模型重置为方案之间的基本值,然后再添加新的单个方案。方案可以调用用户定义的VBA例程(分类为版本步骤),该例程可能包括针对无法在模型中明确定义的计算的复杂的优化或迭代收敛算法。可以在每个步骤之后对方案进行存档、修改、重新排序、审查和暂停,以对所有打开的工作簿进行现场检查。

报告是可自定义的,自动生成的,并且来自任何工作簿的单元格或范围的大量集合都可以包括在工作表报告中。这些报告包括以表格和图形形式(折线图和条形图以及瀑布图;图28、29B和29D)的指定范围和单元格的差异电子表格(包括更改前结果单元格的值,更改后的值以及差异)。这些报告是每个完成的版本更改步骤的演示,并且可以对包含完整方案的这些报告的集合进行完整性审查、验证、批准和归档。

方案管理过程组合了以下步骤:设置存储文件,使用新数据更新模型,捕获新版本,构建版本、命令和报告的有序指令集(脚本),运行脚本,最后审查报告中更改的影响。

运行脚本实质上需要逐步将保存的版本数据复制到工作簿模型,并创建详细描述这些更改对模型中选定范围或单元格值的影响的报告。命令允许用户设置计算模式,调用其他方案,调用VBA应用程序,反转更新方向(从模型到版本)以及在备用目标工作簿上测试脚本。报告命令将插入脚本中,并指定生成哪种类型的报告以及报告中包含哪些版本和范围。

计算机功能的增强和电子表格的广泛功能已导致组织开发大型模型,有时需要跨不同类别的项目更新数千个单元格。此外,这些模型还可能包含数千个命名范围(为许多目的而创建,而不仅仅是为方案创建)。该实施例允许用户使用大数据块创建新版本,管理数百个版本,以及使用“Names Navigation(名称导航)”工具(项目1810)或通过在工作表中选择一个单元格并对于那些包含(相交)所选单元格地址的那些名称结合更新的名词索引文件(项目102)检查“Version(版本)”选项卡(项目407)来快速查找任何现有的命名范围。方案合并功能允许多个用户贡献自己的版本或方案片段,这些版本或方案片段以后可以组合在一起以形成一个完整的方案。

方案管理会话

为了完成方案,用户选择并打开他或她希望用于他或她的方案的所有工作簿模型。打开工作簿后,用户选择第一个工作簿进行更新。用户从该软件的菜单功能区中单击“Scenarios(方案)”按钮(项目101)以启动方案管理器表单(图2)。

创建方案文件

用户必须定义将用于保存他或她的方案的文件的名称和位置。用户通过选择“Files(文件)”选项卡(项目301),然后单击“Browse Folder(浏览文件夹)”按钮(在“File”控件中:项目302)来定义这些文件,这两个动作将启动Windows文件夹对话框提示。用户可以从该对话框中选择或创建一个新文件夹。如果所选文件夹包含先前创建的方案,则这些将在列表视图窗口中列出(项目303)。方案是具有相同名称的两个文件的组合:电子表格(工作簿)和方案文件(SCEN文件)均由应用程序创建。只有两个文件都在同一文件夹中的方案才有效并被列出。

用户可以通过在“Enter file name(输入文件名)...”(项目308)文本框中输入方案名称,然后单击“Create Workbook(创建工作簿)”按钮(在“文件”控件:项目302),来选择(单击)任何所列出的方案或创建新的方案。还将创建一个具有相同名称的脚本文件(SCEN文件)。该选项卡还列出了所选方案的摘要信息:方案已经引用的版本、方案和工作簿(项目304、305、306和307)。

一旦选择了文件,用户就准备好来创建版本和基线值。在选择另一个文件之前,所选文件是活动方案。

创建版本和基线

要创建版本数据,用户选择“版本”选项卡(项目401),并通过单击菜单功能区上的“Validate(验证)”(项目102)或单击“更新”来重新创建名称索引文件,来检查名词索引文件是最新的。名称索引文件(NNDX文件)确保在“版本”选项卡(项目407)中自动列出包含所选单元格的范围名称。该软件还提出了带有日期和时间戳的默认范围名称(用于新创建的范围名称)(项目407)。这些新的建议名称通过使用红色作为文本颜色在选项卡中突出显示。

用户将他或她的模型导航到他或她希望更新的部分,并单击该单元格或选择要更改的单元格范围。如果所选单元格是范围名称的一部分,则该名称将显示在“VersionRange Name(版本范围名称)”窗口中(项目407)。应用程序将为选定的单元格建议一个新名称(红色文本)。用户可以选择这些名称中的任何一个,并且所选范围的描述将出现在“Current Selection(当前选择)”窗口中(项目408)。用户现在准备在他或她希望更新的单元格中输入新数据或公式。

用户可以更新数据或使用现有值来创建一组基线版本。数据更新完成后,用户选择要与版本一起保存的范围。用户可以使用从名称列表中选择的现有范围(项目407),也可以通过以下方式定义新的范围名称:使用鼠标选择一组连续的单元格并输入新的范围名称(项目405)或使用建议的名称(红色文字)。

然后,用户更新版本描述符:版本名称,版本描述和名称描述(分别为项目404、409和410)。创建版本后,还可以编辑版本名称和描述(在方案选项卡中)。版本名称用作报告和图表中的版本标签。

用户现在可以通过单击“Current Selection(添加到方案)”或“Add to Model(添加到模型)”按钮来创建版本(在“版本”控件中:项目402)。前者将数据保存到方案工作簿中,而后者则保存到新插入的版本数据工作表中的模型工作簿中。如果数据包含公式,则最好将数据添加到模型中,因为这样就消除了用户始终记住保持要求打开两个工作簿(模型和方案版本)以保持公式完整性,同时完成对模型的结构更改(插入/删除行/列)的需求。此要求是Excel电子表格的功能。或者,某些用户可能更喜欢通过将其模型之外的大的版本数据块保存到专门为此目的而创建的方案工作簿中,来最大程度地减小模型大小。

一旦创建了版本,就更新并保存脚本文件(SCEN文件)。根据所勾选的复选框(版本设置:项目403),在添加每个新版本之后,可以保存方案和模型工作簿。

“版本”选项卡还列出了当前使用相同范围名称的活动版本(项目406),并包括一个编辑器,用于更改开放模型工作簿和活动方案文件中现有范围名称的名称(项目411)。

在创建了所有必需的版本对象之后,用户准备构建他或她的方案脚本。

创建方案和脚本

为了组装方案脚本,用户选择“脚本”选项卡(图5)并将最近创建的版本对象(在左侧列,项目504)拖放到脚本构建工作区(在中间一栏,项目509)。放置在构建工作区中的项目可以通过鼠标光标拖放进行重新排序,使用Delete键删除,然后在拖放项目的同时按住Ctrl修改键进行复制。

方案构建工作区中的上下文菜单(单击鼠标右键,项目601)用于在所选项目下方添加和插入命令或报告。

用户可以在脚本中插入计算点,以指定运行何时必须重新计算所有打开的工作簿。当模型很大并且计算时间很长时,这很有用。如果用户仅需要最终结果,则在脚本运行期间,开始处的“Calc Off(计算关闭)”将停止所有工作簿计算,而方案脚本末尾的“Calculate(计算)”命令将确保完成最终计算。也可以在用户要求的特定步骤之后插入“计算”命令。在脚本步骤之后插入的“Calc On(计算打开)”命令会将运行恢复为完全计算模式,然后在每次更新版本对象后重新计算工作簿。请注意,报告需要进行计算才能正常运行,并且将进行计算,而与用户设置无关,除非将其禁用。

两个命令用于执行附加指令:“Call Scenario(调用方案)”和“Call VBA Routine(调用VBA例程)”。“Call Scenario”允许用户通过从方案构建窗口调用的上下文菜单从方案存储区(最右边的列,项目512)中选择并插入预先存在的方案脚本(项目701)。允许嵌套方案调用:方案存储区中的方案脚本可以调用方案存储区中的其他脚本。调用方案对于必须重复执行的脚本(即:基本案例脚本,其被执行,以便在继续进行下一个方案之前将所有模型值重置为起点)或根据特定主题保存并执行脚本(即:仅与某个地区的资本成本有关的脚本)是有用的。

“Call VBA(调用VBA)”命令适用于在不可能或很难实现明确解决方案时需要迭代目标搜索计算步骤的用户。该脚本可以调用任何VBA代码,并且在VBA执行方案脚本时暂停。VBA代码由用户开发,可通过“Context Menu(上下文菜单)”命令“Call VBA(调用VBA)”进行访问,然后用户选择代码所在的打开的工作簿(项目801),最后选择VBA程序(项目802)。

两个命令:“Alternate Target Workbook(替代目标工作簿)”(项目610)和“版本更新(Version Update)”(项目611)用于控制版本数据复制的方向。

“Alternate Target Workbook”命令适用于测试模型工作簿副本上的方案脚本。用户可以不修改主工作簿,而是将替代工作簿命令插入到脚本中,以便将目标用于复制的版本对象。用户从上下文菜单中选择命令,然后从打开的工作簿列表中选择新的工作簿目标(项目901)。从这一步,对任何模型工作簿的所有引用都将重定向到备用目标工作簿。重定向保持活动状态,直到下一个“Alternate Target None/Off(备用目标无/关闭)”命令为止(“无”选项是建议打开的工作簿列表中的第一项)。“Alternate Target Workbook”命令允许用户在不更改主模型的情况下“玩”各种脚本版本和命令。

“Version Update(版本更新)”命令用作反转数据复制方向的工具。不是将版本从方案工作簿默认复制到模型工作簿,而是将数据从模型复制到方案工作簿。该命令使用来自模型工作簿的新数据有效地更新现有版本。不复制公式,仅复制公式的常量值。此命令旨在作为一种方法,使数据提供者可以使用其电子表格中的数据轻松更新现有方案工作簿,以分发给分析师,然后由分析师使用方案脚本来更新其模型。

“De-Activate(取消激活)”命令(项目618)和“Activate(激活)”(项目617)命令也可用于管理方案脚本是否执行这些命令。选择一个命令或版本,然后单击“De-Activate”命令将在方案构建工作区中取消强调(灰色显示)该命令或版本,并且在执行过程中,程序将跳过这些命令或版本。“Activate”命令用于重新建立命令或版本的执行。

用户可以使用几种报告命令,它们涵盖了两种报告方法。通用报告,报告每个版本步骤,直到指示停止为止;以及特定报告,这些报告在特定步骤之后生成,并包括所选连续步骤的影响之和。通用报告可以快速简便地设置,但可能包含过多的详细信息以进行分发或进行高级审查。特定的报告可以更好地控制,并允许将相似类别的版本(即:所有主要的资本支出)组合在一起,作为一个报告步骤。通过在版本步骤之后插入这些报告命令,用户可以显式调用特定的报告,并且用户可以在报告中包括任何先前版本更改的影响。用户还可以在工作簿中定义要包含在报告中的选定范围作为输出,以显示版本更改对其他从属单元格的影响。

报告和图表使用版本名称进行标记,并且可以使用“Edit Name(编辑名称)”命令(项目619)对这些报告和图表进行更改,该“Edit Name”命令将版本名称设置为文本编辑模式。允许使用重复的版本名称,因为版本对象可以通过其唯一的内部标识符在内部进行识别。

辅助用户开发其脚本的附加命令包括:“End Run(结束运行)”(项目607),在脚本内的特定位置停止执行。这使用户可以检查所有打开的工作簿的状态以及创建工作簿报告直到“End Run”命令为止的进度。在“End Run”命令后无法恢复执行。单步命令(“Runbuild”工具栏中的“SST”按钮,项目506)可用于暂停,检查中间结果以及恢复执行。

用于创建报告的命令包括:“Log All On(打开登录全部)”(项目612),针对执行的每个版本,显示之前(项目2601),之后(项目2603)和移动(项目2602)的版本值;“WaterfallOn(打开瀑布)”(项目613),针对每个执行的版本,以瀑布图的形式显示用户指定的监视值的变化(图28);“Chart On(打开图表)”(项目614),针对每个执行的版本,显示对更改之前(图29A,项目2901为数据,以及图29B,项目2902为图表)、更改和移动之后(图29C,项目2903和2904为数据,以及图29D,项目2905和2906为图表)的所选用户范围的第一行或第一列的影响;“Snap shot快照()”(项目615),针对执行的每个版本,显示在移动之前,之后和移动(图30仅针对差异)的用户选择的工作表(项目1001)的所有单元格值。

附加报告命令(图11)包括:“Log All Off(关闭登录全部)”(项目1102),“Waterfall Off(关闭瀑布)”(项目1103)和“Chart Off(关闭图表)”(项目1104),停止记录每个版本的更改,以及“Log Versions(日志版本)”(项目1105),“Waterfall Watch(瀑布监视)”(项目1106),以及“Chart Watch(图表监视)”(项目1109),它们类似于:“打开登录全部(Log All On)”,“打开瀑布(Waterfall On)”和“打开图表(Chart On)”。最后三个附加命令使用户可以指定将哪些版本组合在一起以产生综合影响。“新瀑布(Waterfall New)”(项目1107)修改了打开瀑布命令,以便在新图表中显示后续版本的更改。“Waterfall Mid-Total(瀑布中总)”(项目1108)在瀑布监视图表中添加了一个新的带标签的中间总栏。

当用户修改方案脚本并导航通过方案表单时,方案和版本更改将自动保存。退出表单还将保存所有未保存的更改。

指定报告范围

报告命令还需要附加参数,以指定应在报告中显示哪个补充范围数据值。所有报告都需要输入范围(已更改的输入单元格),但可选的补充数据可能包括时间线(与数据序列匹配的日期序列)和输出范围(用户希望在输入更改时监视的相关单元格)。

报告使用版本对象范围作为所有报告版本的输入范围,但“Log version(s)(日志版本)”分组报告和“Call VBA Routine(调用VBA例程)”命令(行为类似于伪版本)除外。

对于“Log version(s)”分组报告(项目1105),要包括的第一项目必须由用户指定。该报告将包括从指定版本到紧接在“Log version(s)”分组报告命令之前的版本的每个输入版本更改步骤。用户通过使用鼠标选择“Log version(s)”报告上方的版本(在构建工作区窗口:项目509中)并同时按住Alt修饰键(项目3204)并将该项目拖放到“Log version(s)”报告项目中来定义开始输入版本。

“Call VBA Routine(调用VBA例程)”命令(项目609)未明确指示执行VBA代码时更改的单元格范围。为了使这些变化的单元格包含在报告中,用户必须指定要包含在报告中的版本对象范围。用户通过用鼠标选择一个版本(在版本对象收集窗口(项目504)或构建工作区窗口(项目509)中)并同时按住Alt修饰键(项目3205)并将该项目拖放到“Call VBARoutine”命令上来定义输入版本。

时间线(与数据系列匹配的日期序列)单元格范围可以添加到“Log All On(打开登录全部)”,“Log Version(日志版本)”,“Log Versions(s)(日志版本(复数))”,“ChartWatch(图表监视)”和“Chart On(图表开启)”报告中。专门为报告创建一个时间线版本对象,其方式与其他任何版本对象相同。一个条件是列/行必须与输入单元格范围对齐,即:将第一个输入和输出数据单元格制成表格并与第一个时间线数据单元格对齐。时间线版本由用户通过以下方式定义:用户使用鼠标选择一个版本(在版本对象收集窗口(项目504)),同时按住Ctrl修饰键(项目3202)并将该项目拖放到相关的报告命令上。

可以将输出单元格范围(用户希望监视的单元格)添加到“Log Version(日志版本)”,“Log Versions(s)(日志版本(复数))”,“Waterfall Watch(瀑布监视)”和“ChartWatch(图表监视)”报告中。输出版本对象可以是专门为报表创建的任何单元格区域,也可以是任何现有版本对象。用户通过使用鼠标选择一个版本(在版本对象收集窗口(项目504)),同时按住Shift修改键(项目3203)并将该项目拖放到相关的报告命令上,来定义输出版本。可以添加几个版本。每个“Waterfall Watch(瀑布监视)”报告将仅绘制输出范围内的第一个数字单元格。

运行、单步执行和验证方案

一旦脚本完成,就可以执行脚本了。可以执行在构建工作区或方案存储区(分别为项目509和512)中列出的方案。有三种执行方案的方法:运行(执行每个步骤,计算模型,并根据脚本生成报告),单步执行(一次执行一个步骤,然后停止执行直到用户触发下一步),以及验证(这确保打开了所需的工作簿并且存在范围名称,但没有完成数据复制,没有计算并且没有完成报告)

在完成每个步骤之后,在步骤说明的左侧添加勾号或叉号。勾号表示该步骤已完成,叉号表示该步骤失败。向下的箭头表示该步骤在被取消激活时被忽略并跳过。这些指示符在每次运行之前被删除,或者可以由用户手动清除(项目506和511,按钮:“Clear(清除)”)。

可以通过取消选中“Reports(报告)”复选框(在“方案控件:项目502”中)来中止报告的创建。

方案运行

运行脚本(项目506和511,按钮:“Run(运行)”)是执行脚本指令的标准方法:复制所有版本,在每个步骤之后计算工作簿(除非用户明确中止了计算)并且报告命令生成指定的报告。如果检测到错误,执行将停止,然后在方案执行错误列表选项卡(项目2401)中列出该错误。

方案单步执行

单步执行方案(项目506和511,按钮:“SST”)类似于运行方案,只是仅执行一个步骤。用户必须再次单击“SST”按钮才能执行下一步。在步骤之间,方案被暂停,用户可以检查任何打开的工作簿中任何单元格的内容。如果用户需要调查或调试特定的版本步骤,则此方法很有用。

对于每个步骤:复制版本或执行命令,根据需要计算工作簿(除非用户中止计算),并创建指定的报告。如果检测到错误,则执行将停止,并且该错误在方案执行错误列表选项卡(项目2401)中列出。

方案验证

验证方案(项目506和511,按钮:“Validate(验证)”)类似于运行方案,除了不复制数据,不计算且不创建报告。验证是一种检查所有工作簿和范围名称是否存在并且可访问的快速方法。即使检测到错误,执行也会继续到方案的结尾。在方案执行错误列表选项卡(项目2401)中列出了所有导致的验证错误(如果有),以供用户修复。

导航到数据:转到模型和版本工作簿数据单元格范围。

用户可使用导航工具(或浏览工具,Navigation tools)来促进查找模型中目标范围和要复制到模型中的版本范围的源单元格。显示器将显示目标或源工作簿(假设它们是打开的)以及用户在版本对象集合(项目504)、构建工作区(项目509)或方案存储区(项目512)中选择的版本范围(通过鼠标单击版本),然后按“F5”或“F6”键或使用上下文菜单(在三个窗口中的任何一个中鼠标右键单击),然后单击“Goto Model(转到模型)”或“GotoVersion(转到版本)”。该命令仅适用于版本对象,如果关闭工作簿,则将忽略该命令。

导航工具可以在方案开发期间和单步执行期间使用。此工具对于在方案更新之前和之后快速审查版本和模型单元格的单元格内容并在它们之间进行切换非常有用。

错误选项卡

在版本创建或方案执行期间,软件检测动作是否成功完成。如果无法访问所需的对象(文件未打开,范围名称丢失或对象锁定),则这两种方法都会产生错误。

公式的版本创建还包括相等性检查,以确保方案工作簿中保存的变换后公式计算出与源单元格中原始公式相同的值。

该软件包括通用错误捕获,并且将生成详细描述问题性质的错误消息。

错误列表显示在两个新选项卡中(列出错误时可见)。一个选项卡(“New VersionError Listing(新版本错误清单)”:项目2301)用于创建新版本时发生的错误(项目402,版本控件:“Add to Scenario(添加到方案)”和“Add to Model(添加到模型)”),另一个选项卡(“Scenario Execution Error Listing(方案执行错误列表)”:项目2401)用于在方案运行,验证或单步执行期间发生的错误(在控制工具栏中:项目506和511)。

通过单击“Clear Tab(清除选项卡)”按钮(项目2308和项目2408),可以隐藏错误选项卡。后续错误将覆盖先前的错误列表。

新版本错误列表

图23中的“New Version Error Listing(新版本错误列表)”显示了方案工作簿中保存的变换后公式与源单元格中的原始公式计算出不同的值(错误被强制进行测试)时的树视图列表。

该列表以版本名称(项目2302)为标题,并且在版本名称、错误的类型(项目2303)、错误的诊断(项目2304)、错误的来源(项目2305)以及相关的软件采取默认操作(即:将公式替换为当前值,项目2306)的下方。对于在错误中产生的每个单元格重复错误消息(项目2307)。

方案执行错误列表

图24中的“Scenario Execution Error Listing(方案执行错误列表)”显示了在方案工作簿中找不到源版本范围时的树视图列表。

该清单以方案名称(项目2402)为标题,在方案名称,即版本名称(项目2403)、错误类型(项目2404)、错误诊断和建议的补救措施(项目2405),以及应该在其中找到缺失范围名称的范围(项目2406)的下方。对每个导致错误的范围名称(项目2407)重复此错误消息。

方案存储

可以将已完成的方案转移到方案存储区(“Scenario(方案)”选项卡的右侧列:项目512)。可以将从构建工作区(项目509)中选择的方案拖到存储区,或使用“Copy(复制)”按钮(在构建工具栏中:项目505)进行复制。可以将保存在存储区中的方案拖回到构建区中。作为新方案(作为替换方案或新选项卡)或插入到现有方案中(同时按下Ctrl修饰键进行拖放)。

在方案名称下以树视图列表中显示存储的方案。其他方案只能调用存储区中的方案。修改仅限于重命名方案,删除步骤以及激活或停用步骤。

构建工作区包含可以在其中开发和完全修改单个方案的选项卡(项目507)。构建区中的方案不能由其他方案调用。

文件和备份

方案在用户创建和编辑时会自动保存。使用菜单功能区中的“Backup(备份)”工具栏命令(项目103)或方案选项卡上的“Backup(备份)”按钮(在“方案(Scenario)”控件:项目502中),可以将活动版本保存为备份。用户可以在可选的选项卡(项目1701)中的备份选项卡中设置备份位置。

编辑和删除-版本对象集合

可以通过选择版本,按Delete键或使用上下文菜单(项目1202)并在确认提示中选择“Ok(确定)”来删除版本对象(项目1201)。选择项目时,同时按下Ctrl修饰键可以进行多项选择。只能删除任何方案都未使用的版本。上下文菜单命令包括“Delete All Unused(删除所有未使用)”按钮(项目1203),该按钮将突出显示所有未使用的版本并提示用户确认删除。“Clean(清洁)”命令(项目1204)在打开的方案工作簿中找到所有不具有匹配范围名称的版本,并提示用户确认删除。如果工作簿中缺少范围名称,则该版本不可用。

在删除期间,删除版本对象,从方案文件(SCEN文件)中删除版本条目,并从包含版本数据的方案excel工作簿中删除范围名称和数据(如果存在)。

方案构建工作和存储区

方案命令和版本对象(项目509和512)可以通过选择对象,按Delete键或使用上下文菜单(项目620)并在确认提示中选择“Ok”来删除。选择项目时,同时按下Ctrl修饰键可以进行多项选择。

通过选择对象,按Delete键或使用上下文菜单并在确认提示中选择“Ok”,可以删除存储区中的方案选项卡和方案。

然后,从方案文件(SCEN文件)中删除了方案命令或版本对象,但是在方案工作簿中未修改任何适用的范围名称和单元格数据。

内部操作

本发明包括五个集成模块。两个主要模块用于记录、脚本构建和执行,以及三个工具用于数据合并、名称修改和工作簿重命名。

软件中使用的基本对象是带有嵌套键的VB.Net词典对象(包括排序列表:“SortedList(排序列表)”)。词典对象是通用的、快速的、可序列化的,并且可以快速保存到文件中。这两个主要模块创建和构建了这些词典,并使用词典内容来更新模型数据和GUI。这三个工具通过合并现有词典的内容,更改词典值中的范围名称规范以及词典中的重命名项目来修改现有词典。

数据记录

在更新模型的相关单元格之后,用户选择并突出显示用于数据记录的相关范围(图20)。用户输入新的版本名称和描述,然后单击“Add to Scenario(添加到方案)”(在“版本控制”中:项目402)。然后将所选单元格内容(无样式)复制到活动方案工作簿中的空白区域中,以供以后回索(或再次调用,recall)。为了管理存储空间:水平范围始终从第一列开始,然后从第一空行开始保存到“水平”工作表中(项目2101)。垂直范围始终从第一行和第一空列开始保存到不同的“垂直”工作表中(项目2201)。已为保存的单元格范围分配唯一的全局范围名称。

公式由软件保存和重新配置,以包括明确在公式中引用的每个范围的完整地址(在重新配置的地址中指定了工作簿和工作表名称)。重新配置后,这些公式可以作为方案脚本执行期间的公式正确复制回模型。

所选范围和复制范围的属性(范围名称、单元格地址、工作簿、工作表、创建日期和作者)被保存在词典对象中,并成为模型数据的版本。版本词典键是特定于刚创建的版本的唯一生成的标识符。版本词典将保存到活动方案文件(SCEN文件,项目3107)中。以后将使用这些属性来定位用于方案脚本执行的数据。

还维护了包含版本标识符以及范围名称、版本名称和创建日期的排序键的辅助词典和列表。这些辅助词典用于在构建方案时快速检索数据并用于生成排序的树视图列表(项目504)。

方案脚本构建

记录了版本之后,用户选择“Scenario(方案)”选项卡(图5)来构建方案。用户使用拖放操作,从“Versions Object Collection(版本对象集合)”树视图列表中选择要更新的版本(项目504),然后用鼠标将版本拖动到构建工作区树视图中(项目509)。在构建工作区树视图中,可以移动(拖放)版本以反映用户所需的计算顺序。在构建工作区树视图中,从顶部项目到底部项目执行方案。

当将版本拖到构建工作区时,软件将在列表中标识所选的版本,提取其唯一标识符,并将版本对象从“版本”词典复制到构建方案词典。构建工作区可能在其自己的选项卡下包含正在开发的多个方案(项目507)。当版本对象被拖动和移动时,软件会维护带有嵌套键的构建方案词典。该词典包含用户选择和移动的所有版本对象,其中方案唯一标识符为主键(每个选项卡都是方案),版本唯一标识符为辅助嵌套键,最后是版本对象为词典值。

除了开发具有版本对象的方案脚本之外,用户还可以包括用于控制脚本执行的特定命令,例如调用方案或创建报告。这些命令通过上下文菜单(在构建方案窗口中,鼠标右键单击:项目602至616)以树形视图插入到当前选定的项目下方。插入后,可以根据用户要求拖动和移动/复制这些命令。同样,对于版本对象,将命令对象及其所有属性添加到构建方案词典中。

该软件还维护辅助词典,以跟踪包含内的选项卡和构建方案的顺序以及构建方案中版本和命令的顺序。

可以将完成的构建方案复制(拖放或在构建工具栏上单击“Copy(复制)”:项目505)到方案存储区(项目512)。同样,对于构建工作区方案对象,将这些方案及其所有属性和对象(版本和命令)添加到具有嵌套键的单独方案词典和用于跟踪对象顺序的单独方案辅助词典中。

这些方案可以被执行,并且可以由构建方案中的命令作为子例程来调用。被调用方案可能包括嵌套的调用。由于添加了被调用命令,因此该软件将维护所有被调用方案和调用方案的词典。在运行之前以及在脚本编辑期间,如果已检测到潜在的循环性,该软件将进行检查并禁用方案执行控件,或禁止编辑。在两次调用被调用方案而没有首先返回到原始调用方案的情况下,将检测到循环性。循环性是会产生无限处理循环的条件。

当用户通过将版本拖动和复制到构建区来构建脚本时,可以插入附加命令(项目603至616;项目1102至1109)。在构建方案窗口中,通过右键单击打开带有命令的上下文菜单,并将所选命令插入到当前所选版本或命令的下方。

然后,软件创建具有所有相关属性的命令对象,并将它们添加到与版本相同的构建工作区方案词典中。该词典包含用户插入的所有命令对象,这些对象具有唯一的标识符作为辅助嵌套键,而命令对象则作为词典值。该软件还维护辅助词典,以跟踪构建方案中的命令顺序。

可用命令包括报告命令(项目612至616,以及1102至1109)。这些命令可能需要有关在报告中显示哪些输入和输出值的附加信息。报告所需的输入和输出范围是从“Versions Object Collection(版本对象集合)”列表中或从报告命令上方的版本中选择的。按下修饰键(Ctrl、Alt和Shift)将所选版本进行拖放(项目3201)。代码使用修饰符来区分要用作时间线的版本、输入监视或输出监视。然后将这些版本添加到适用的嵌套子词典中的构建方案词典中的命令对象。报告命令对象旨在包含用于定义时间线、输入范围和/或输出范围的版本。

还可以使用拖放操作来移动或复制构建区中的单个版本和命令(要复制Ctrl修饰键,必须同时按住)。重新排序后,软件将更新辅助词典,这些词典将跟踪构建方案中项目的顺序。复制会在构建方案词典中创建其他版本或命令对象。

方案脚本执行

脚本执行分为三种类型:“Run(运行)”、“Single Step(单步执行)”和“Validation(验证)”。运行是标准的执行方法,具有工作簿计算以及根据方案脚本应用所有命令和版本更改的功能。单步执行类似于“运行”,但用户一次只能执行一个步骤,并且验证是方案脚本的完整运行,无需计算或报告,对于在运行之前检查所有必需对象是否打开或存在非常有用。

在执行运行之前,软件创建可执行方案脚本(以排序列表词典对象的形式),该脚本包括主脚本以及对其他脚本的所有嵌入式调用。扫描可执行方案脚本,以查找跨方案的任何循环调用。如果方案被第二次调用而第一方案调用没有将代码处理指针返回到初始调用方案,则检测到循环性。如果检测到循环性,则将其包含在自动生成的错误报告选项卡中(图24),并停止执行。

在运行执行期间,可执行脚本列表中的每个项目都从树视图构建方案列表的顶部项目到底部项目执行。该软件使用选项卡标识符作为键,以正确的序列处理辅助词典中的版本和命令,以找到所选构建工作区方案选项卡的项目的排序列表。排序列表包含每个版本/命令对象的唯一标识符,该唯一标识符与选项卡标识符一起用于从活动选项卡的构建方案词典中查找实际的版本/命令对象。该软件检查该对象是版本还是命令。对于版本,将从版本对象中提取源数据和目标位置的范围名称。然后将源数据复制到目标位置。将值复制为值,将公式复制为公式。如上所述,根据命令的功能执行命令。

单步执行类似于运行执行,只是一次仅执行一个步骤。一旦执行了单个步骤,方案执行就会停止,这使用户可以检查打开的工作簿中的更改。在停止之前,该软件会记录当前环境:打开的工作簿,选定的工作表以及每个打开的工作簿的选定单元格。用户通过单击“SST”按钮(在“Run builds(运行构建)”工具栏中:项目506)来调用下一步的执行。但是,在执行下一步之前,将重新应用所有保存的环境因素:重新打开用户关闭的工作簿,重新选择所选的工作表和单元格。

验证不产生结果也不进行任何计算,并且通常在运行之前调用以检查所需的所有对象、文件和工作簿是否已打开和/或可访问。验证检测到的任何问题都包含在自动生成的错误报告选项卡中(图24)。

报告前瞻

报告经常比较版本更新之前和更新之后的单元格集合的状态。因此,版本步骤必须在更新之前和报告命令之前捕获数据。报告命令在调用报告命令时(即,在较早的版本更新之后)发布指定范围的值,因此,在首次调用版本对象时以及紧接复制新版本值之前,必须捕获原始数据。

这可以通过向版本对象添加其他指令(以信息的形式)来实现。该软件使用可执行方案脚本(在运行执行之前)来逐步执行方案以检测任何报告命令,然后反转步骤方向以查找报告命令所调用的版本对象,并通过将版本标记为可报告版本并将适用的报告命令标识、输入、输出和时间线版本对象加载到可报告版本对象中来标记这些版本。当执行这些可报告版本对象时,在运行中,将使用附加的标记信息来捕获原始报告数据(即版本更新之前的单元格值),然后将其合并到报告中并用于计算数据值移动。

词典和列表对象

“Primary Dictionary(主词典)”、“Sorted List(排序列表)”和列表对象是用于维护软件所需数据的那些对象并保存到应用程序文件中(图31)。该软件还利用辅助词典、排序列表和列表对象进行临时存储,以跟踪和提高处理效率。

这些主要对象用于存储和操纵:版本对象、方案对象(用于构建区和存储区)、名称索引对象、名称修改对象和导航名称对象(由范围名称导航表单使用)。

版本对象

由软件创建和维护的主要版本对象是键入到唯一版本标识符的版本对象的词典、版本使用的工作簿名称的词典、按版本名称排序的唯一版本标识符的词典、按范围名称排序的唯一版本标识符的词典,以及按日期和时间排序的唯一版本标识符的词典。

方案构建区对象

由软件创建和维护的主要方案构建区对象是每个方案(选项卡)的版本和命令对象的词典、执行序列中版本和命令唯一标识符的排序列表,方案选项卡的列表、方案使用的工作簿名称的词典以及所有命令唯一标识符的词典。使用两个附加的词典来跟踪在构建区和存储区中与方案之间的调用。一个词典列出了其他构建方案使用调用的构建方案唯一标识符作为索引键调用的存储区方案唯一标识符值,而另一词典则跟踪相反的情况。使用被调用存储区方案唯一标识符作为索引键的调用构建方案唯一标识符值。

方案存储区对象

由软件创建和维护的已保存对象的主要方案存储区是存储区中每个方案的版本和命令对象的词典、执行序列中版本和命令唯一标识符的排序列表、方案列表、方案使用的工作簿名称的词典,以及所有命令唯一标识符的词典。使用两个附加词典来跟踪存储区中与方案之间的调用。一个词典列出其他方案使用调用方案唯一标识符作为索引键所调用的方案唯一标识符值,而另一本词典则跟踪相反的情况;使用被调用方案唯一标识符作为索引键的调用方案唯一标识符值。

名称索引对象

由软件创建和维护的主要名称索引对象是使用单元格位置作为查找关键字的名称词典。

名称修改对象

由软件创建和维护的主要名称修改对象是使用范围名称作为查找关键字的修改词典(要插入/删除的行/列的数量和位置)。

导航名称对象

由软件为导航名称(或浏览名称,navigate names)表单创建和维护的主要导航名称对象是使用工作表、文本过滤器和特殊集合键(全部、全局和本地)作为查找关键字并使用范围名称属性作为值的每个打开的工作簿的名称属性的词典。

示例

在使用本发明的示例中,用户从菜单功能区(项目101)启动方案管理器窗口,并选择“Files(文件)”选项卡(项目201)以创建新的方案文件或选择现有的方案文件。版本数据和要创建的方案保存在这些方案文件中。

接下来,用户选择“Version(版本)”选项卡(项目202),并打开或选择要使用新的输入假设(版本)进行更新的工作簿。在工作簿中,用户可以选择现有的连续单元的命名范围或创建新的范围名称。

范围名称导航表单(图18)帮助用户在工作簿中找到用户希望更新的范围名称。导航工具列出了工作簿和工作表中的所有范围名称,可以过滤名称标签,并且可以在所选范围名称的单元格周围添加框对象,以方便查找特定范围。该工具是通过名称索引查找文件自动检测所选单元格名称的软件的补充或替代(此文件由用户使用菜单功能区中的“Update(更新)”命令创建:项目102)。这为用户提供了两种查找现有范围名称的方法:通过单击单元格或从排序或已过滤列表中选择范围名称,在工作簿中的工作表中扫描范围名称。选择一个单元格后,将在“Version(版本)”选项卡中显示包含所选单元格的所有范围名称(项目407)。用户可以选择现有范围名称之一,也可以基于当前范围选择或新范围选择来创建新范围名称。

如果尚未保存所选范围内的现有值,则用户可能需要将初始条件保存为基本案例版本。在对单元格值进行任何更新之前,用户输入版本名称(项目404),新的或现有的范围名称(项目405)和注释(项目409),然后单击“Add to Scenario(添加到方案)”按钮(项目402)创建新的范围名称,并将版本数据保存到方案工作簿中,并将范围属性保存到方案文件中。这两个公式(作为公式)和常量都将被复制。保存这些初始值后,用户将使用新的输入重复此过程,然后继续更新其他假设并根据需要创建其他命名范围。现有范围名称可用于创建具有新数据输入的新版本。仅允许使用具有连续单元格的范围名称。

一旦所有数据都已更新,用户将转到“Scenario“方案””选项卡(项目203),其中包含三个列表视图列:版本对象集合,方案构建工作区和方案存储区(分别为项目504、509和512)。从左至右,第一列(版本)列出了所有版本,包括刚刚创建的版本,中间一列(构建)包含用户正在构建的方案,最后一列包含已完成方案的副本。类似于子例程调用的任何其他方案都可以调用方案存储区列中列出的方案。对方案的调用用于重复性任务或管理主方案。

用户然后将版本从版本对象列拖放到构建列以创建新的方案脚本。用户可以通过调用上下文菜单来插入其他命令:在构建方案工作区窗口中右键单击任何项目(项目601)。可用的脚本元素包括命令:“Calculate(计算)”,“Calc On(计算打开)”,“Calc Off(计算关闭)”,“End Run(结束运行)”,“Call Scenario(调用方案)”,“Alternate Target Workbook(备用目标工作簿)”,报告命令:“Log(日志)”,“Waterfall(瀑布)”,“Chart(图表)”,“SnapShot(快照)”和脚本控件:用于版本或命令的“Activate(激活)”和“De-Activate(取消激活)”。可以通过选择版本或命令并单击Delete键(以删除),拖放对象(以移动)以及通过按住Ctrl修饰键的方式拖放(以复制)来删除,复制和重新排序这些脚本元素。方案和版本文本名称可以由用户编辑。

脚本完成后,用户通过每个版本或命令运行完整脚本(项目506,“运行”按钮)或单步执行(项目506,“SST”按钮)。单步执行允许用户在执行每个步骤时检查工作表单元格的详细信息。随着运行的进行,脚本中每个版本对象的数据都会从方案工作簿复制到原始工作簿。复制的数据将替换指定名称范围内的当前数据。公式将按照原始公式进行复制。将根据报告命令创建并填充报告工作簿。取消激活的命令将被跳过,所有其他命令都将被执行,“结束运行”将停止执行,所有剩余步骤将被忽略。

运行之后,用户可以检查工作簿报告工作表(有关某些示例,请参见:图25、26、27A、27B、28、29A、29B、29C、29D和30)和原始工作簿。运行期间,所有报告和方案文件都保存到默认或用户指定的文件夹中。用户可以使用菜单功能区上的“Backup(备份)”工具将所有打开的工作簿和方案文件保存到用户定义的备份文件夹中,以供以后审查或审核。

用户可以重复此过程,以基于来自不同工作簿的数据的版本来创建其他方案。可以在构建工作区内的不同选项卡中维护开发或测试中的其他方案。可以将完成的方案脚本作为备份副本复制到方案存储区窗口中,也可以创建可调用的方案库。

本领域技术人员将理解,在不脱离本发明的范围的情况下,可以做出许多实施例和变型。

根据法规,已经用或多或少地针对结构或方法特征的语言描述了本发明。应该理解,本发明不限于所示出或描述的特定特征,因为本文所述的手段包括使本发明生效的优选形式。

在整个说明书中对“一个实施例”或“实施例”的引用是指结合该实施例描述的特定特征、结构或特性包括在本发明的至少一个实施例中。因此,在整个说明书中各处出现的短语“在一个实施例中”或“在实施例中”不一定都指的是同一实施例。此外,可以以任何合适的方式以一种或多种组合来组合特定特征、结构或特性。

去获取专利,查看全文>

相似文献

  • 专利
  • 中文文献
  • 外文文献
获取专利

客服邮箱:kefu@zhangqiaokeyan.com

京公网安备:11010802029741号 ICP备案号:京ICP备15016152号-6 六维联合信息科技 (北京) 有限公司©版权所有
  • 客服微信

  • 服务号