【问题标题】:Excel VBA: sorting a table featuring cells with drop-down listsExcel VBA:对具有下拉列表的单元格的表格进行排序
【发布时间】:2016-06-10 07:16:30
【问题描述】:
假设我有一个 Excel 表格,其中有一列(例如“B”),其中每个单元格都有一个不同的下拉列表进行验证。我的应用程序是这样的,“B”中的不同单元格可能在其相应的下拉列表中包含不同的项目。我想使用不同的列作为键对我的表进行排序,例如包含日期的列“A”,按升序排列。
我的问题是 Excel 的排序功能(显然)不包括验证列表。因此,排序后,“B”中的每个单元格最有可能以错误的下拉列表结束。有人可以建议一种简单的方法来实现 VBA 中的排序,使其包含下拉列表吗?我知道我可以尝试先对表格进行排序,然后使用下拉列表填充“B”,但如果可能的话,我想避免使用该选项。
【问题讨论】:
标签:
vba
excel
sorting
dropdown
【解决方案1】:
你是对的,Sorting 似乎并没有改变验证规则。
一种解决方法是将您的验证规则重写为对所有单元格都相同。这可以通过以下方式实现:
-
将您的验证列表排列在一个块中,以 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
然后将验证规则写为(列表)(对于第 2 行)=INDEX($F$2:$J$4,,MATCH($A2,$F$1:$J$1,0)) 并复制下来
这使用列A 中的值作为1 行中的查找来确定要用作验证列表的块。