将 OFFSET 与 3D 范围一起使用(跨多个工作表的范围)

Using OFFSET with a 3D range (range across multiple sheets)

我有一个数据库,其中的相关数据在多个 sheet 的同一行中,每隔一列都有数据。我一直在尝试将 3D 范围与 AVERAGE/SUM 和 OFFSET 一起使用,但我似乎无法弄清楚。我在 OFFSET 部分收到#VALUE 错误。这是我一直在使用的设置。

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

sheet 名称中确实有 space,因此我上面公式中单词 Sheet 和数字之间的 space 是故意的。我已经尝试了仅使用 average/sum 函数的 3D 范围,并且效果很好。 3D 范围是否与 OFFSET 函数不兼容?

尝试...

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

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

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

希望对您有所帮助!

第一次编辑

虽然数组公式仍然是必需的,但您可以避免使用 CONTROL+SHIFT+ENTER 确认公式,并且您可以避免在单元格区域中列出您的 sheet 姓名。

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" returns 以下文本值数组...

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

此文本值数组传递给 INDIRECT,returns 以下引用数组...

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

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

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 函数,该函数 returns 一个值数组并允许使用 ENTER 确认公式,而不是 CONTROL+SHIFT+ENTER。

最后,值数组被传递给 AVERAGE 函数,returns 实际平均值。