我得到了n
包含产品的类别m
。此列表未排序,例如:
现在这就是我基本上想要对这个列表做的事情:
下拉:动态存储第一列的每个唯一值的列表的数据验证(= 我将无法选择 Category_5,因为它还不存在)。
下拉列表:根据第一个下拉列表中选择的类别提供所有产品的列表。
是否有任何非 VBA 解决方案?
我得到了n
包含产品的类别m
。此列表未排序,例如:
现在这就是我基本上想要对这个列表做的事情:
下拉:动态存储第一列的每个唯一值的列表的数据验证(= 我将无法选择 Category_5,因为它还不存在)。
下拉列表:根据第一个下拉列表中选择的类别提供所有产品的列表。
是否有任何非 VBA 解决方案?
电子表格布局示例:
A2:A13
- 类别列表,项目不唯一 B2:B13
- 产品列表 Cell D2
down - 下拉列表 1 源,唯一项目,动态 Cell F2
down - 下拉列表 2 项增量编号 1..(公式中的计算较少) Cell G2
down - 下拉列表 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
子句更新公式。
要使其在 Excel 中没有 VBA 的情况下工作,您需要某种方法来重置第 2 列中数据验证的有效条目范围,并且由于源只能是列表或范围,您必须编写一些代码来更改它关联的第 1 列值更改时的信息。
如果您不想走 VBA 路线,那么这些活动对于像 Access(或者可能是 InfoPath)这样更适合您的需求的数据库来说是生计。