2011-05-27 120 views
1

我在第一行有5個單元格:A1是1,B1是2,C1是3,D1是4,E1是5.現在我想選擇奇數並將它們命名爲「list_a_odd」,所以我保存CONTROL並選擇A1,C1和E1,然後在名稱框中輸入「list_a_odd」,然後按ENTER鍵。現在在A2中,如果我鍵入「= SUM(list_a_odd)」,它會給我9的結果,這是正確的和預期的。但是如果我輸入「= list_a_odd」,它會給我一個錯誤「#VALUE!」。但是,如果我選擇所有5個單元格(A1到E1)並將其命名爲「list_a」,並且在A2中放置了「= list_a」,它將在單元格中顯示「1」,並且可以將A2到E2顯示list_a中的所有5個數字。所以這在引用單元格中的非連續命名區域時看起來只是一個問題。這是一個Excel錯誤?Excel 2007:我如何引用非連續的命名範圍?

+0

@Tony Wang:你的第一段似乎有一個錯字導致了不一致。 '現在我想選擇奇數並將它們命名爲「list_odd」,因此我按住CONTROL並選擇A1,C1和E1,然後在名稱框中鍵入「list_a_odd」,然後按Enter。現在在A2中,如果我鍵入「= SUM(list_odd)」,'。你根據你的帖子命名範圍'list_a_odd',但是你將'list_odd'傳遞給Excel。 – Jubbles 2011-05-27 18:43:49

+0

@Jubbles - 感謝您的提醒。我只是改變了它。這只是我的文章中的錯字,在我的Excel表格中,我的名字一致。 – 2011-05-27 18:46:50

回答

4

您所描述的list_a行爲是隱含交集範圍的一個示例。 list_a指的是一個連續範圍A1:E1,這是一個期望單個單元格的公式,當放置在AE列範圍內時,使用此範圍參考計算出交點並返回該單元格。
也就是說,C2 =A1:E1=list_a_odd中的公式實際上僅將C1修改爲公式。

正如你所說,list_a_odd是一個不連續多區域範圍。隱式相交不適用於不連續範圍。
一些(但不是全部)函數適用於不連續範圍,包括SUM,這就是爲什麼=SUM(list_a_odd)按預期工作的原因,就像=SUM(A1,C1,E1)也可以工作。

EDIT

返回表示不連續的範圍內,我會用一個用戶定義的函數以與陣列式組合的連續範圍。

在UDF中,使用Range.Areas屬性循環遍歷不連續範圍中的每個子範圍(請記住,Areas中的每個項目可以是單個單元格或單獨一個範圍)。構建一個值數組以返回到工作表上的數組公式。

確切的細節將取決於您的具體要求以及您希望如何製作UDF。去吧,如果你需要更多幫助,請再次發帖

+0

感謝您的解釋。我想要做的就是定義一個不連續的多單元格區域,然後將該區域以連續的方式放置在另一個表單上的特定行中。有什麼辦法可以實現嗎? – 2011-05-28 01:58:41

+0

感謝提示。但我從未在VBA中做過任何編程,我的解決方法是將不連續的單元格映射到一系列連續的單元格,併爲連續範圍命名。 – 2011-05-29 03:06:17