如何指定变量Excel范围?

时间:2011-06-03 23:27:42

标签: excel worksheet-function excel-2011

我希望能够根据行/列变量在Excel中动态指定范围。

假设我的文件内容看起来像这样:

   A   B   C   D   E
1  10  11  12  13  14
2  51  52  53  54  55

如果我想对第1行第2-4列(即11 + 12 + 13)中的项目求和,我该如何指定?

如果我是手工做,我会输入:

=SUM(B1:D1)

...但是我如何在运行时以编程方式生成该范围定义,只知道所需的行(1)和列号(2-4)?

=SUM(????)

提前感谢您的帮助!

(我使用的是Microsoft Excel 2011 for Mac,因此Excel VBA /基于宏的解决方案对我来说无效。)

3 个答案:

答案 0 :(得分:10)

我有同样的需求 - 看起来OFFSET功能会让你这样做。

所以对于上述内容:

=SUM(OFFSET(A1,0,1,1,3))

将其分解:

OFFSET(reference cell,
       row offset from ref cell to start the range,
       col offset to start the range, height of range you want,
       width of range you want)

如果您愿意,可以将偏移设为零,或+拒绝,-以便

答案 1 :(得分:2)

不确定你想要什么。
你是说这个吗?

dim parent_range as range
dim child_range as range

set parent_range = me.range("a1:e2")
set child_range = range(parent_range.rows(1).cells(2), parent_range.rows(1).cells(4))

msgbox "=sum(" & child_range.address(false, false, xla1) & ")"

或者您是否希望将其作为公式?

=SUM(INDEX($A$1:$E$2,1,2):INDEX($A$1:$E$2,1,4))

答案 2 :(得分:2)

这取决于“已知”行和列号的引用方式 例如,如果它们是工作表中单元格中的值:

     A          B
 9   Row        1
10   ColStart   1
11   ColEnd     4

使用INDRECT函数构建范围引用

=SUM(INDIRECT("R"&B9&"C"&B10&":R"&B9&"C"&B11,FALSE))