在組合方塊輸入範圍屬性中使用 Excel 表格列

在組合方塊輸入範圍屬性中使用 Excel 表格列

我在 StackOverflow 中詢問了這個問題,然後被重定向到這裡。對於裁員表示歉意。

我有一個 Excel 工作表,Sheet1 上有一個組合框,該框透過 Sheet2 上的動態命名範圍的輸入範圍屬性進行填入。它工作正常,不需要 VBA。

我在Sheet2上的資料實際上是在Excel表格中(所有資料都在XLS檔案中,沒有外部資料來源)。為了清楚起見,我想對組合框的輸入範圍使用結構化表引用,但似乎找不到有效的語法,例如 myTable[[#Data],[myColumn3]]

我找不到任何跡象表明組合框將接受結構化表引用,儘管我不明白為什麼它不會。

因此,問題分為兩部分:1. 是否可以在組合框輸入範圍屬性中使用表格列參考(不使用 VBA);2. 如何使用?

答案1

我意識到這是一個相當老的問題,但萬一有人偶然發現它,就像我只是想解決同樣的問題一樣......像ScottieB 一樣,我也無法讓dav 的答案為我工作。這是我在 Excel 2013 中解決這個問題的方法。

  1. 為組合框建立垂直選項清單。不在表格中(尚未),沒有標題(尚未,但為標題留出空間),只是一列您需要的下拉清單。

  2. 使用常規 Sheet1!$A$1:$A$2 表示法為清單建立/定義名稱。

  3. 使用您剛剛為其輸入範圍建立的名稱插入組合方塊表單控制項。

到目前為止,一切都很好。組合框將起作用,但添加到垂直清單底部(甚至緊鄰指定範圍下方)的新選項將不會添加到下拉清單中;下拉清單所基於的命名範圍不會動態擴充。

現在來說說好的方面。

  1. 返回垂直清單(確保清除在命名範圍周圍添加的所有內容,以便它與您在步驟 2 中離開時一樣)並在其上方添加標題。任何文字都可以,它只是一個標籤來標識您的選擇清單。

(或不這樣做!如果您允許的話,Excel 無論如何都會在下一步為您添加一個。)

  1. 選擇標題後,使用 Ctrl+T 或插入 |桌子。接受 Excel 找到的範圍,並確保選取「我的表格有標題」框,然後按一下「確定」。如果您願意,可以更改表格的名稱:沒關係。

(注意:如果您沒有新增標題,請不要勾選「我的表格有標題」框,讓 Excel 為您建立標題。)

現在 - 顯然是因為原始命名範圍現在是表定義的一部分 - 在垂直列表的底部添加新行不僅會自動擴展表定義,還會自動擴展原始命名範圍,因此將出現新選項在組合框的選項列表中。魔法!

答案2

如果您還沒有建立表格,Nick 關於 XL 2013 的回答很好。

然而,它比那更簡單。您定義一個指向表格列的名稱。然後建立另一個指向第一個名稱的名稱。您可以在輸入範圍中使用第二個名稱,效果很好。

答案3

在 Excel 2010 中,您可以執行此操作,但它需要兩個步驟。

  1. 使用表格結構化參考建立命名範圍(例如 myrange=mytable[myColumn3])。
  2. 使用命名範圍作為控制項的輸入範圍。

而且,正如您所期望的,控製字段會隨著列表的更改而更新。我不知道為什麼不能直接在控制項中使用引用,但有很多關於 Excel 的內容我仍然不明白。

編輯:不要忘記從名稱管理器中的表引用中取出@符號,否則您將只能獲得驗證集的相應行的值(例如[myColumn3]而不是[@myColumn3])。

相關內容