2012-12-11 40 views
2

我得到n類別舉行m產品。這個列表是不排序,例如像這樣:Excel中的動態數據驗證(非VBA!)

現在,這裏就是我基本上要與此列表做:

  1. 下拉:數據驗證其動態存儲每個獨特的列表第一列的值(=我將無法選擇Category_5,因爲它尚不存在)。

  2. 下拉菜單:提供基於第一個下拉菜單中所選類別的所有產品的列表。

對此有任何非VBA的解決方案?

回答

2

示例電子表格佈局:

  • A2:A13 - 分類列表,該項目是不是唯一的
  • B2:B13 - 產品列表
  • Cell D2下 - 下拉列表1源,獨特的物品,動態
  • Cell F2下拉式 - 下拉列表2項增量編號1 ..(在公式中計算較少)
  • Cell G2向下 - 下拉列表2源,動態
  • Cell I2 - 下拉電池1
  • Cell J2 - 下拉電池2

細胞D2:陣列式(Ctrl鍵 - - 從輸入公式窗口輸入,曲線括號由Excel插入,而不是由用戶插入),向下複製:

{=INDEX($A$2:$A$13;MATCH(0;COUNTIF($D$1:D1;$A$2:$A$13);0))} 

給出了一個唯一的類別列表。

細胞G2:陣列式,按照前一節中的說明:

{=INDEX($B:$B;SMALL(IF($A$2:$A$13=$I$2;ROW($A$2:$A$13);"");$F2))} 

給出下在細胞I2選擇的類別的的產品的列表。

該列表未排序:更好地按類別和產品對初始列表進行排序。
無錯誤處理:應使用IF ISERROR子句更新公式。

Dynamic_dropdown_lists.xls

+0

太棒了!幾乎認爲,我需要在VB中實現它。謝謝 :) –

0

爲了使它在Excel中無需使用VBA,您需要某種方式來重置第2列中用於數據驗證的有效條目範圍,並且源代碼只能是您必須編碼的列表或範圍當關聯的列1值發生變化時可以更改該信息。

如果您不想參加VBA路線,那麼這些活動就是面向類似Access(或InfoPath)的數據庫的黃油,這樣可以更好地滿足您的需求。