2012-10-03 28 views
0

我有一列數據會隨着時間的推移添加更多值。我想將此列的值用於其他工作表上的列表驗證,以便下拉選項反映列的當前內容。我試圖創建一個名爲範圍ListColumn用下面的公式:使用此命名範圍進行列表驗證有什麼問題?

=ADDRESS(3,12,1,1,"DataSource")&":"&ADDRESS(COUNTA('DataSource'!$L:$L),12,1,1,"DataSource") 

當我嘗試添加驗證的單元格,選擇允許:「清單」,並在公式框中輸入=ListColumn,我收到此錯誤信息:

The list source must be a delimited list, or a reference to a single row or column. 

我試圖在INDIRECT()包裹整個公式,而沒有產生名稱管理器屏幕上,當我試圖添加驗證上的錯誤,我得到這個錯誤信息:

The Source currently evaluates to an error. Do you want to continue? 

我不確定這裏有什麼問題。兩個ADDRESS()調用的第二個參數是相同的,所以範圍地址應該引用單個列。我如何設置我正在尋找的動態列表驗證?

編輯:調試這產生一些奇怪的行爲。當我嘗試使用Range("ListColumn").Select來選擇ListColumn時,我總是收到運行時錯誤。消息是對象'_Global'的方法'範圍'失敗。「

輸入=ListColumn返回:'DataSource'!$L$3:'DataSource'!$L$65,這是預期值。

此外,當我輸入公式=COUNTA(ListColumn)時,它返回「1」,但是當我輸入公式=COUNTA('DataSource'!$L$3:'DataSource'!$L$65)時,它返回正確的值「63」。 =COUNTA(INDIRECT(ListColumn))也返回「1」。

+0

傻queston ...當你選擇ListColumn,它是一個單一的行或列? –

+0

@DanielCook,.Select不起作用,請參閱上面的我的編輯。 – sigil

回答

2

我相信這個問題可能會包含DataSource作爲第二個ADDRESS塊中的文本表名稱。我得到了完全相同的行爲,你做執行上述步驟的時候,但似乎與此有關的工作:

=INDIRECT(ADDRESS(3,12,1,1,"DataSource")&":"&ADDRESS(COUNTA(DataSource!$L:$L),12,1,1)) 

然後你可以做你在上面做了什麼,並在下拉菜單中使用它。我最好的假設是,由於您已經在地址的第一部分中定義了工作表,因此您無需在第二部分中提供它(如果您這樣做會導致錯誤)。如果你從程序的角度思考它,這是有道理的(我認爲:)),因爲很難/不可能在多張紙上引用範圍,因此語法可能不允許第二張紙在冒號後面指定(即使它是相同的)。這僅僅是猜測,但(可能是錯的),所以希望解決工程:)

enter image description here enter image description here

+0

就是這樣,謝謝! – sigil

+0

不用擔心,很高興幫助! – RocketDonkey