2013-04-26 74 views
5

好的,所以我現在有一個下拉列表從單獨的工作表上的範圍填充。EXCEL VBA - 基於單元格範圍和字符串創建動態下拉列表

我希望能夠通過在每個值文本中添加具有來自其他單元格的文本值的值來減少下拉列表中的值。

例如: 單元格A1說「表」 單元格A2的是,在從所述範圍 的範圍具有「表」,「大表」的值拉下拉,「糞便」

目前下拉菜單會帶來所有的價值。在這種情況下,我希望它帶上'table'和'large table',因爲它們都有'table'。

我的文件的例子可以在這裏 http://www.filedropper.com/example_1

發現請幫助..我在撕我的頭髮!

感謝 邁克

+1

你的代碼在哪裏?到目前爲止,你有什麼? – Juliusz 2013-04-26 13:20:27

+0

請檢查http://stackoverflow.com/questions/how-to-ask和我的個人最愛:http://mattgemmell.com/2008/12/08/what-have-you-tried – 2013-04-26 13:23:17

+0

@K_B我認爲這有點不公平,因爲我已經在這方面尋找其他問題,並且所有看起來相關的問題都不是我正在尋找的。我無法看到在這裏上傳文件的任何選項,所以我在我的問題中寫了一個例子。如果你能告訴我如何在這裏上傳Excel電子表格,那麼我可以爲你做。 – 2013-04-26 13:40:26

回答

1

這裏是這樣做沒有VBA的一種方式:

(所有指令被下帶物品清單上完成除非另有說明): enter image description here

  1. 搜索提供的文本。在C2中輸入=NOT(ISERROR(SEARCH('Choose Items'!$A$2,A2)))
  2. 計數點擊複製下來D2:=IF(C2,1,0),在D3:=IF(C3,D2+1,D2) - 複製下來
  3. 創建動態列表:在F2:F9,將數字1-8。在G2中,使用此公式:=IFERROR(INDEX($A$2:$A$9,MATCH(F2,$D$2:$D$9,0)),IF(F2=1,"No match",""))並複製下來。
  4. 創建動態命名的範圍 - 在名稱管理器(公式 - >名經理),插入一個新的名字ItemsDynamic並提供=OFFSET(Items!$G$2:$G$9,0,0,MAX(Items!$D$2:$D$9,1),1)的公式。
  5. 使用新ItemsDynamic爲您的下拉列表的來源字段有效性

完成!檢查this file的解決方案。

2

這是一個更簡單的答案。

首先使用公式(對於C2)將列「C」中工作表中的項目組合在一個幫助列中,然後填寫。

=IFERROR(RIGHT($A2,LEN($A2)-FIND(" ",$A2)),$A2) 

現在在片「選擇項」,對單元格B2,請使用以下的驗證列表的源 -

=OFFSET(Items!$A$1,MATCH('Choose Items'!$A2,Items!$C$2:$C$10,0),,COUNTIF(Items!$C$2:$C$10,'Choose Items'!$A2),) 

您可以填寫到驗證擴展到列的其它行「 B'

如果工作表'Items'中的數據需要擴展到10以上的行,則適當地更改offset函數的匹配範圍和countif函數以包含整個數據(在列中分組後'C'如前所述)。

確保工作表'Items'中的列表在助手列(升序或降序)上排序,在這種情況下,該列是'C'列。

相關問題