我有一个电子表格,由十三张表格组成:一份年度摘要和十二张支持表格。这十二张支持表中的每一张都有子部分,每个子部分都有一个小计。汇总表需要提取每个月每个小节的小计。以随机间隔,行将插入子节中,这将更改小计的值,以及该小计在图纸中的绝对位置。
子问题1:创建每个部分的小计。定义为在当前填充的范围内使用=SUM的单元格。假定已解决。
子问题2:命名包含子问题结果的单元格,以便在主工作表中不使用绝对位置。通过命名包含"=SUM";公式,并给它们起";RedSubtotal"BlueSubtotal";,范围到特定的工作表。换言之,在多个工作表上使用相同的字符串/名称,只要它们都在其宿主工作表的范围内,就不应该出现冲突。假设已经解决了,但我想知道。
子问题3:在汇总(年(表上,从月表中获取命名值。为了避免一堆详尽的打字,由于表格的名称与它们所代表的月份相同,并且摘要表格的左列有这些名称,因此尝试了以下操作:
(主表单元格A2恰好具有值"March",在此上下文中不包括引号。(
然后,主薄片单元格B2被设置为这个精确的字符序列:
=INDIRECT($A2 & ".RedSubtotal")
预计这将评估为以下精确的内部字符串:
March.RedSubtotal
反过来,我认为应该在内部做到这一点:
- 找到名为";三月";并输入该上下文
- 在该上下文中,定位名为"的符号;RedSubtotom"并对其进行评估
- 发现RedSubtotal的计算结果为单元格$H$32,请从3月份获取数据$H 32美元
- 发现了那个三月$H$32的计算结果为=SUM(H28:H31(,在March工作表的上下文中执行该和——也就是说,添加使用March而非Main的数据指定的单元格范围——并返回结果(整数(
- 显示在主工作表单元格B2中返回的整数
得到的结果是"#REF"错误,但还有一个更基本的错误可能会说明问题。
如果我将测试单元设置为手动输入的字节序列:
=March.RedSubtotal
我得到了预期的结果。
如果我改为尝试这个完全手动输入的字节序列:
=INDIRECT("March.RedSubtotal")
我得到一个#REF错误。
我觉得这是高度可疑的。有人知道这里发生了什么吗?
我知道文件格式精神分裂症的"点对点"白痴,所以请耐心听我说,明确你建议的顺序,具体是什么上下文/设置/名词/什么。在这一点上,我最不需要的就是一场格式战,我只是想找到一种在不硬编码单元号的情况下按预期解决问题的方法。
INDIRECT采用R1C1或A1格式的字符串。它不接受命名单元格范围字符串。
你可以做一件事;名称";。在该表上添加以下内容:
Name Location
~~~~ ~~~~~~~~
March.RedSubtotal =CELL("address";$March.$H$32)
March.BlueSubtotal =CELL("address";$March.$I$32)
也可以从"位置"列中的"名称"列中获取图纸名称。
=MID(B2;2;SEARCH(".";B2)-2)&".RedSubtotal"
将该表定义为称为";名称";。则主薄片单元格B2的公式为:
=INDIRECT(VLOOKUP(A2&".RedSubtotal";Names;2))
这使得主表上的公式相对简单。此外,如果在三月工作表上插入新行,则名称工作表上的CELL
公式将进行调整。
如果你不喜欢这个解决方案,因为它需要引用Names表中的每一张表,那么问问自己这个问题:你想抽象掉这个问题的哪一部分?一种不同的抽象方法是在每个月的工作表上创建一个Names表。但是,您需要指定要使用的表。
最后,您可能会发现简单地使用主工作表中的直接引用是最简单的。所以对于B2:
=March.$H$32
插入新行时,此引用将进行调整。最大的缺点是它有点难以阅读,需要导航到那个位置才能看到它指的是什么。然而,因为它很简单,所以应该很容易维护。