假设我有一个 Excel 表格,其中包含一列(例如“B”),其中每个单元格都有一个不同的用于验证的下拉列表。我的应用程序是这样的,“B”中的不同单元格可能在其相应的下拉列表中包含不同的项目。我想使用不同的列作为键对表进行排序,例如包含日期的列“A”,按升序排列。
我的问题是 Excel 的排序函数(显然)不包括验证列表。因此,排序后,“B”中的每个单元格很可能会得到错误的下拉列表。有人可以建议一种简单的方法在 VBA 中实现排序,使其包含下拉列表吗?我知道我可以尝试先对表格进行排序,然后用下拉列表填充“B”,但如果可能的话,我想避免该选项。
最佳答案
你是对的,排序似乎不会改变验证规则。
一种解决方法是重写验证规则,使所有单元格都相同。这可以通过以下方式实现:
将验证列表排列在一个 block 中,以
Key
值开头,例如使用示例数据F G H I J 1 1 2 3 4 5 2 1a 2a 3a 4a 5a 3 1b 2b 3b 4b 5b 4 1c 2c 3c 4c 5c
然后将验证规则编写为 (List)(第 2 行)
=INDEX($F$2:$J$4,,MATCH($A2,$F$1:$J$1,0) )
并向下复制
这使用列 A
中的值作为行 1
中的查找来确定用作验证列表的 block 。
关于vba - Excel VBA : sorting a table featuring cells with drop-down lists,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37742155/