我终于弄清楚了如何使用数据验证和INDIRECT函数在Excel中构建一组动态级联列表。但是,我遇到了一个问题。
我想设置电子表格,以便每当对数据验证列表进行更改时,所有后续列表都设置为默认值。例如:
假设我有List1,List2,List3和List4。每个列表的值取决于在列表之前所做的选择。启动电子表格时,我希望所有列表都默认为“ ALL”。当用户在List1中选择一个值时,List2将使用一组有效的选项进行更新。我想将List2默认为这些选项之一。但是,虽然我可以使用正确的选择选项集填充List2,但无法将期望的默认值分配给它。
同样,如果用户在List1,List2和List3中进行选择,然后返回并更改List1,我希望将List2-List4的默认值恢复为“ ALL”。
我该怎么做呢?
3
这是VBA worksheet_change事件触发器的一项工作。我现在没有时间提供详细信息(如果您仍然需要帮助,我会在以后提供),但这是您应该指导研究的地方。
—
Excellll 2011年
您现在可能已经解决了这个问题,或者已经放弃了。我同意Excellll的观点,认为工作表更改事件可能是最简单的。但是,使用“数据验证”的“列表”选项,源可以是诸如的表达式
—
托尼·达利摩
=IF(A1="List1",C1:C5,D1:D4)
。我已经使用从列表中选择的单元格A1的值进行了测试,它确实可以按照您的方式工作。
您还在遇到这个问题吗?
—
Tamara Wijsman'4
仅供参考,我针对此问题采用的nonVBA方法是对后续单元格应用条件格式,以检查其所保存的当前值是否与当前INDIRECT()引用范围内的值匹配。如果不是,则该单元格变成红色,或者该值消失(匹配字体/背景),因此用户知道必须更新/重新选择该单元格的值。
—
杰里·博卡雷
为了说明我上面提到的VBA方法和CF方法,这里有一个示例文件 DependentLists3.xls
—
Jerry Beaucaire 2012年