我有一个数据库,其中相关数据位于多个工作表的相同行中,每个其他列中都包含数据。我一直在尝试使用AVERAGE / SUM和OFFSET的3D范围,但我似乎无法弄明白。我在OFFSET部分遇到#VALUE错误。这是我一直在使用的设置。
=AVERAGE(OFFSET('Sheet 1:Sheet 4'!A1,0,COLUMN(A1)*2-1))
工作表名称中有空格,因此上面公式中单词Sheet和数字之间的空格是有意的。我只用平均值/求和函数尝试了3D范围,它工作正常。 3D范围与OFFSET功能不兼容吗?
答案 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函数,该函数返回实际平均值。