使用具有3D范围的OFFSET(多张纸的范围)

时间:2017-08-22 01:56:44

标签: excel excel-formula sum average offset

我有一个数据库,其中相关数据位于多个工作表的相同行中,每个其他列中都包含数据。我一直在尝试使用AVERAGE / SUM和OFFSET的3D范围,但我似乎无法弄明白。我在OFFSET部分遇到#VALUE错误。这是我一直在使用的设置。

=AVERAGE(OFFSET('Sheet 1:Sheet 4'!A1,0,COLUMN(A1)*2-1))

工作表名称中有空格,因此上面公式中单词Sheet和数字之间的空格是有意的。我只用平均值/求和函数尝试了3D范围,它工作正常。 3D范围与OFFSET功能不兼容吗?

1 个答案:

答案 0 :(得分:1)

...试

=AVERAGE(N(OFFSET(INDIRECT("'"&{"Sheet1","Sheet2"}&"'!A1"),0,COLUMN(A1)*2-1)))

=AVERAGE(N(OFFSET(INDIRECT("'"&$G$2:$G$3&"'!A1"),0,COLUMN(A1)*2-1)))

...其中G2:G3包含工作表名称。请注意,第二个公式需要使用CONTROL+SHIFT+ENTER确认,而不仅仅是ENTER

希望这有帮助!

第一次编辑

虽然仍然需要数组公式,但您可以避免使用CONTROL + SHIFT + ENTER确认公式,并且可以避免必须在一系列单元格中列出工作表名称。

1)首先将名称SheetNames定义如下......

Refers to:  ={"Instrument Partners","Supply Partners","Repair Partners","Wholesale Partners"}

2)然后尝试......

=AVERAGE(INDEX(N(OFFSET(INDIRECT("'"&SheetNames&"'!A1"),0,COLUMN(A1)*2-2)),0))

...只需要通过ENTER确认。

第二次编辑

"'"&SheetNames&"'!A1"返回以下文本值数组...

"'Instrument Partners'!A1"
"'Supply Partners'!A1"
etc...

这个文本值数组传递给INDIRECT,后者返回以下引用数组......

'Instrument Partners'!A1
'Supply Partners'!A1
etc...

反过来,这个引用数组被传递给OFFSET,它也返回一个基于行和列偏移量的引用数组......

OFFSET('Instrument Partners'!A1,0,COLUMN(A1)*2-2) --> 'Instrument Partners'!A1
OFFSET('Supply Partners'!A1,0,COLUMN(A1)*2-2) --> 'Supply Partners'!A1
etc...

然后我们通过将这个引用数组传递给N()函数来检索值...

N('Instrument Partners'!A1) --> returns actual value from the cell reference
N('Supply Partners'!A1) --> returns actual value from the cell reference
etc...

然后我们将这个值数组传递给INDEX函数,该函数返回一个值数组,并允许使用ENTER确认公式,而不是CONTROL + SHIFT + ENTER。

最后,将值数组传递给AVERAGE函数,该函数返回实际平均值。