我的问题的一个简化版本是,在另一张名为“ Sheet2
I have data that I want to average”的工作表上,我有想要求平均值的数据:
=AVERAGE(Sheet2!$A$1:Sheet2!$A$100)
根据上述代码的使用位置,我需要将列替换A
为另一个字母,例如 column D
。为此,我创建了一个函数:
=MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)
这将输出D
。
我的问题是,不必写:
=AVERAGE(Sheet2!$D$1:Sheet2!$D$100)
我想要使用:
=AVERAGE(Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$1:Sheet2!$MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)$100)
但 Excel 不接受这一点。如何使用 旁边的函数Sheet2!
?
答案1
您可以使用 INDIRECT :
=AVERAGE(INDIRECT ("Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$1:Sheet2!$" & MID("ABCDEFGHIJKLMNOPQRSTUVWXYZ",4,1)&"$100"))
答案2
OFFSET 和 INDIRECT 是不稳定的,我们可以使用 INDEX
=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,4))
告诉0
INDEX 返回所有行,并且4
是第 4 列。因此,第 4 列中从 1 到 100 的所有行都将被平均。
根据您的评论:
=AVERAGE(INDEX(Sheet2!$A$1:$Z$100,0,(COLUMN(A:A)-1)*3))
答案3
以下是一种方法:
=AVERAGE(OFFSET(Sheet2!$A:$A,0,(COLUMN()-1)*3))
请注意,这OFFSET
是不稳定的,会增加工作簿中的计算负荷