vba - Excel VBA : sorting a table featuring cells with drop-down lists

标签 vba excel sorting dropdown

假设我有一个 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/

相关文章:

vba - 将数据从行转置为列的 Excel VBA 代码

excel - Excel Range 中的一维数组

Angularjs : sorting shows different result in chrome and firefox browser

vba - 从多列中查找值的位置

json - curl URL 并在 Excel 单元格中发布结果?

excel - For Each 循环中的 Copy PasteSpecial 不规则退出

c# - 如何将Excel工作表中的数据导入到C#中的数据表中?

c - C语言获取数组元素升序

ios - 对 NSDictionary 的 NSArray 进行排序...未完全正常工作

vba - 在 VBA 中复制数组引用