2012-02-27 182 views
0

如何在多个单元格中使用单个OFFSET()的结果?避免重复的偏移量计算

我有一个工作表,有很多行。对于每一行,我都感兴趣的是一组连续的列。我感兴趣的列的范围取决于其他地方设置的一些单元格;我可以使用OFFSET()函数来定义范围。

对于每一行,我需要在同一个数组引用上调用几个数组函数(SUM,AVERAGE等)。可以通过在每种情况下调用OFFSET来完成... SUM(OFFSET(args)),AVERAGE(OFFSET(args));但我发现错误,因为我试图使所有OFFSET调用与数组的最新定义保持同步。

有没有办法,我可以把

B1: =SUM(OFFSET(args)) 
C1: =MAX(OFFSET(args)) 

A1: =OFFSET(args) 
B1: =SUM(A1) 
C1: =MAX(A1) 

或等效的,这样我就可以改变基准的定义在一个地方,它适用于所有的方法行中的函数?

+0

是不同的列(或可能不同)的每一行,或者你一直在查看相同的列? – 2012-02-27 22:05:41

回答

3

读你的例子它发生在我这是一个完美的时间来聘请一个命名公式。 CTRL-F3打开名称向导,创建一个名称,如MyRange并在REFERSTO:部分中,输入OFFSET()您在A1中放入的公式。一定要使其成为绝对参考公式。

然后,你应该能够总结你

A1创建的结果范围:= SUM(MyRange)

B1:= MAX(MyRange)

+0

+1简单有效 – brettdj 2012-02-28 03:37:41

+0

同意。我的回答太复杂了。这很容易。 – 2012-02-28 06:10:44

+0

试图确保我遵循这个解决方案 - 你是否建议一个命名公式每行?该解决方案是否可扩展 – VoiceOfUnreason 2012-02-28 15:57:13

0

您可以使用Address函数来构建范围地址,然后使用Indirect来引用该范围。例如,在A1中假设您输入:=ADDRESS(5,2,1,1)&":"&ADDRESS(5,3,1,1)。这会给你一个$ B $ 5:$ C $ 5的地址。现在,您可以使用一个公式,例如=SUM(INDIRECT(A1))来获取该范围内的值的总和。

您没有提供足够的详细信息,因此我不知道您使用的Offset是否适合此计划。如果您可以计算开始和结束的行和列,那么您可以用AddressIndirect替换Offset。你可以以某种方式工作,但我没有足够的信息来帮助解决这个问题。

0

您可以使用OFFSET数组输入公式为每一行生成正确的一组列,从源表右侧的一致列开始(如果需要,也可以在另一张表上),并向右移动。然后,您可以在单元格B1,C1等所有其他公式中使用相同的范围。

如果您有时需要选择不同数量的列,则需要添加一些错误处理以防止可能的#N/A错误从污染你的计算。这可以通过IF与ISERROR或ERROR.TYPE结合来完成。