Excel中的动态数据验证(非VBA!)

时间:2012-12-11 20:13:09

标签: excel dynamic validation

我获得了n类别,其中包含m个产品。此列表未排序,例如:

现在这是我基本上想要对此列表做的事情:

  1. 下拉列表:数据验证,动态存储第一列的每个唯一值的列表(=我将无法选择Category_5,因为它尚不存在)。

  2. 下拉列表:根据第一个下拉列表中的所选类别提供所有产品的列表。

  3. 是否有任何非VBA解决方案?

2 个答案:

答案 0 :(得分:2)

示例电子表格布局:

  • A2:A13 - 类别列表,项目不是唯一的
  • B2:B13 - 产品清单
  • Cell D2向下 - 下拉列表1来源,唯一项目,动态
  • Cell F2 down - 下拉列表2项增量编号1 ..(公式中的计算量减少)
  • Cell G2 down - 下拉列表2来源,动态
  • Cell I2 - 下拉单元格1
  • Cell J2 - 下拉单元格2

单元格D2:数组公式( Ctrl - Shift - 输入从公式窗口输入,曲线括号插入向下复制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

答案 1 :(得分:0)

要使它在Excel中没有VBA的情况下工作,您需要某种方法来重置第2列中数据验证的有效条目范围,因为源只能是列表或范围,您必须编写某些内容在关联的第1列值更改时更改该信息。

如果你不想去VBA路线,那么这些活动就是面包&像Access(或可能是InfoPath)这样的数据库,可以更好地满足您的需求。