2011-06-03 41 views
8

我希望能夠根據行/列變量在Excel中動態指定範圍。如何指定一個變量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的Mac,所以Excel的VBA /基於宏觀的解決方案不會爲我工作。)

回答

9

我有同樣的需要 - 看起來像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) 

你可以,如果你想要的偏移量爲零,或者+到REF下來,-到REF了

+0

'OFFSET' [也是volatile](http://stackoverflow.com/a/6233828/11683)。 – GSerg 2013-05-09 07:59:28

1

不知道你想要什麼。
你的意思是?

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)) 
+0

謝謝你的幫助,GSerg。不幸的是,我使用Microsoft Excel 2011 for Mac,它不支持Excel VBA宏。我想我正在尋找一個純粹的Excel解決方案。 – Anirvan 2011-06-03 23:56:13

+0

@Airirvan然後嘗試公式。 – GSerg 2011-06-03 23:57:36

+0

這很奇怪我爲Excel 2011 for Mac開發了宏,與Windows相比有一些怪癖,但大部分情況都是一樣的。如果您不能在Excel 2011 for mac中使用此功能,我會感到驚訝。 – 2013-05-03 17:34:04

1

這取決於「已知」的行和列編號的方式引用
例如,如果他們是在片材上的細胞的值:

 A   B 
9 Row  1 
10 ColStart 1 
11 ColEnd  4 

使用的INDRECT功能建立範圍參考

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

儘可能避免'INDIRECT'。它是不穩定的,即每次細胞改變時都要重新計算。 – GSerg 2011-06-04 00:21:42