【问题标题】:Extract formula from Excel Data Table (What-If Analysis)从 Excel 数据表中提取公式(假设分析)
【发布时间】:2015-09-16 11:01:29
【问题描述】:

我面临在 R 中重写一个 Excel 项目。我看到一个表格,其中显示了一个单元格 {= TABLE (F2, C2)}。我了解如何创建这样的表(假设分析、数据表...)。

由于我必须理解这一点才能在 R 中重写,我如何才能找到位于该单元格后面的 原始公式

示例:我创建了一个数据表,如 here 所示,表格看起来像 this

就我而言,我不知道工作表是如何创建的,我想知道初始公式。现在显示为{=TABLE(,C4)}。 (在示例中我知道答案,它在单元格 (D10) 中,但数据表中此单元格的引用在哪里?)

【问题讨论】:

  • 在 VBA 中,您可以使用范围对象和公式属性来获取单元格中的公式...因此您可以通过循环遍历表中的所有范围开始,并输出公式.. .
  • @OurManInBananas 感谢您的建议,但是当我尝试输出公式时,我再次只看到“TABLE(F2, C2)”。不幸的是我没有excel经验,提取这么非直接引用是真的吗?
  • 你能给我们看一个你想要的单元格中的公式的例子吗?
  • 我怀疑 {} 表示这是一个“数组公式”并且 NAME 是一个“名称 [d 范围]”。在 VBA 中,您可以使用 Worksheet.Names 和 Workbook.Names 属性访问名称列表。对于每个名称,您可以使用 Name.RefersTo 属性查看它所指的内容。
  • @user20637 "TABLE" 没有命名为常量,它是特殊词,所以我无法从名称管理器访问它

标签: r excel excel-formula vba


【解决方案1】:

我使用的是 Excel 2007,但没有理由相信其他版本会有所不同。

@Stanislav 拒绝了我关于 TABLE 是名称的评论建议是正确的;这是一个EXCEL函数。但这是一个非常奇怪的功能:-}

  • 本地帮助中没有关于 TABLE 函数的任何帮助,它没有列在“工作表函数列表(按字母顺序)”中。
  • 不能手动输入或编辑TABLE函数;错误“该函数无效”。
  • 复制/粘贴包含 TABLE 函数的单元格会粘贴其值,而不是公式,即使您指定选择性粘贴 > 公式也是如此
  • 您不能在包含 TABLE 函数的单元格的正上方/左侧插入行/列;错误“无法更改数据表的一部分”。
  • 使用公式调整@pnuts > 公式审核包含 TABLE 函数的单元格不显示先例,也没有单元格将它们显示为依赖项。尽管在我使用 Range.DirectDependents 属性的 VBA 工作表审核工具中发现“公式范围”取决于包含公式的“边距”单元格,但不是那些包含值的单元格(有关这些术语的解释,请参见下文)。李>

我找不到任何我认为是 TABLE() 的体面的文档。我找到了很多关于如何生成和使用该函数的插图,但没有明确说明参数和结果。我找到的最好的是https://support.office.com/en-us/article/Calculate-multiple-results-by-using-a-data-table-e95e2487-6ca6-4413-ad12-77542a5ea50b。如果有人能指出更好的文档,我会很高兴。

我推断出这里描述的行为:

TABLE(Rowinp,Colinp) 是连续单元格数组中的数组公式。我将该连续数组称为数据表的“公式范围”。 公式范围上方/左侧的单元格也是数据表的一部分,即使它们不包含 TABLE() 函数并且可以编辑;我将这些单元格称为数据表的“边距”。

Rowinp 和 Colinp 必须为空白或引用单个单元格。 Rowinp 和 Colinp 必须不同(或错误“输入单元格引用无效”),它们不能都是空白。

公式范围内的值是通过从边距中获取公式并将对 Rowinp 和/或 Colinp 的引用替换为边距中的值来计算的。

存在三种互斥的可能,对应Rowinp是否为空白。

  1. TABLE(Rowinp, ) Colinp 空白。公式是在同一行的左边距中,用同一列上边距的值替换 Rowinp 的实例。
  2. TABLE( , Colinp) Rowinp 空白。公式是在同一列的上边距中,将 Colinp 实例替换为同一行左边距中的值。
  3. TABLE(Rowinp, Colinp) 既不空白。公式是在左边距和上边距交叉处的单元格中,用同一列上边距的值替换 Rowinp 的实例,用同一行左边距的值替换 Colinp 的实例。李>

我认为这应该可以让您计算出公式范围的每个单元格中的有效公式是什么。

但如果得知上述任何一个错误,我不会感到惊讶:-0
我欢迎指点任何更权威的东西。

【讨论】:

  • 谢谢,真的很有用,尤其是 "TABLE(Rowinp, Colinp) 都不为空。公式是在左边和上边距交叉处的单元格中,用值替换了 Rowinp 的实例从同一列的上边距和 Colinp 的实例替换为同一行左边距的值。"
  • @StanislavAbs 如果满足你的需求,你能接受答案吗?
【解决方案2】:

我认为在您的示例中,F2C2 实际上只是函数 (TABLE) 的参数地址,该函数可能位于任何位置,相关公式位于表格的左上角单元格中。

所以我建议转到C2,FORMULAS > Formula Auditing 并单击 Trace Dependents,重复 F2 并查看箭头会聚的位置。

【讨论】:

  • 感谢您的建议。但就我而言,它不起作用。这些单元格(F2 和 C2)包含两个常用参数。它用于各种公式。
猜你喜欢
  • 2021-06-05
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2021-10-24
  • 1970-01-01
  • 2015-11-20
相关资源
最近更新 更多