2

我得到了n包含产品的类别m。此列表未排序,例如:

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

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

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

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

4

2 回答 2

2

电子表格布局示例:

  • A2:A13 - 类别列表,项目不唯一
  • B2:B13 - 产品列表
  • Cell D2down - 下拉列表 1 源,唯一项目,动态
  • Cell F2down - 下拉列表 2 项增量编号 1..(公式中的计算较少)
  • Cell G2down - 下拉列表 2 源,动态
  • Cell I2 - 下拉单元格 1
  • Cell J2 - 下拉单元格 2

单元格D2:数组公式(Ctrl- Shift-Enter从公式窗口输入,大括号由 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

于 2012-12-12T00:45:02.130 回答
0

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

如果您不想走 VBA 路线,那么这些活动对于像 Access(或者可能是 InfoPath)这样更适合您的需求的数据库来说是生计。

于 2012-12-11T20:36:42.550 回答