楼主一定是Excel高手。具体操作一定很熟了。现将思路写在下面,具体操作就不说了。该方法在Excel中实际用过,很好用。供参考:
一、建立一阶动态下拉选项方法(建立表2的方法):
(1)用名称动态地定义表1数据区为“源数据”名称。此处需要用offset函数、用counta函数计算实际数据记录数,实现动态数据区的定义。
(2)建立一个用于运算的表单(不希望看到可以隐藏),在运算表单上建立数据透视表(以下简称透视表1),以名称“源数据”为数据源,“名称”字段必选。
(3)用名称动态地定义数据透视表1中“名称”数据区为“可选名称”名称。去掉数据透视表的各种汇总选项,只保留表1中显示的原始数据。
(4)将表2中“名称”列单元格设置数据有效性,采用“序列”,来源是名称“可选名称”
(5)在Excel文件中,使用“Visual Basic 编辑器”在表2的代码区编写一段程序,内容是当表2被选为当前活动表单时,刷新透视表1的数据。
(6)至此,大功告成。当选中表2时,数据透视表1的“名称”数据会被更新,表2中“名称”字段的条件格式会限制为最新的名称列表。
二、建立二阶动态下拉选项方法(建立表3的方法):
(1)用以上“一”的方法步骤1-4建立“名称”的数据透视表1和“可选名称”名称。将表3中“名称”列单元格设置数据有效性,采用“序列”,来源是名称“可选名称”
(2)用以上“一”的方法步骤1-4建立“型号”的数据透视表2和“可选型号”名称。将表2中“型号”列单元格设置数据有效性,采用“序列”,来源是名称“可选型号”
(3)数据透视表2中增加页字段“名称”。目标是实现当页字段选择某个名称时,只有该名称对应的型号会在数据透视表2的“可选型号”名称数据区显示。
(4)在Excel文件中,使用“Visual Basic 编辑器”在表3的代码区编写程序,内容是当表2被选为当前活动表单是,刷新透视表1和数据透视表2的数据(此处,可将数据透视表2的源数据区设为另一个数据透视表,并选择数据透视表1,则可以实现两个数据透视表的同步刷新)。
(5)在Excel文件中,使用“Visual Basic 编辑器”在表3的代码区编写程序,内容是当表3中“型号”列区域被选为当前活动表单时(表3的Worksheet_SelectionChange函数),定义数据透视表2的页字段名称为该活动单元格同行上名称字段的值,并刷新数据透视表2。
(6)至此,大功告成。当选中表3时,数据透视表会被更新为最新数据。表3中“名称”字段的条件格式会限制为最新的名称列表。当活动单元格选中“型号”列数据区时,数据透视表2的页字段会变为活动单元格所在行上的名称,并更新为该名称对应的型号。表3中“型号”字段的条件格式会限制为最新的型号列表。
按照二的思路可实现多阶动态下拉选项的建立。
若对你有帮助,就选我吧。谢谢!