我有一张大表,想按如下方式排序:
- 按 F 列排序
- 如果 F 列中的值介于 5000 和 6000 之间,则按 B 列中的值对这些行进行排序
- 如果 F 列中的值介于 6000 和 8000 之间,则按 C 列中的值对这些行进行排序
我的解决方法是使用单独的列通过 IF 公式为每一行分配值并仅对此行进行排序。
可以做得更快更优雅吗?
答案1
我是最后一个直接建议人们使用 VBA 而不是使用已存在的单元格端公式的人。
不是贬低 VBA!它显然是任何不简单、不易做的事情的黄金标准,尤其是那些可以避免保留的事情。
但在这种情况下,我认为作者或用户交互无法通过 Excel 提供的公式和功能解决问题,而且在某种程度上还很“优雅”,因此无法以任何有意义的方式取代您现在所做的事情。
即使提供可行的SORT()
函数公式也只是替换当前方法并使用相同的辅助列。乍一看,它可能看起来更优雅,但与现在的方法没有本质区别。
另一方面,VBA 可以非常简单地做到这一点。第一种方法可能是让 VBA 使用 F 列对整个表格或范围进行完全排序。然后让 VBA 查找满足第一个条件的行块(然后按 B 列排序)并再次排序,但只对这些行进行排序。对另一个条件重复上述操作(按 C 列排序)。
第二级方法是设置按键组合来启动宏,或者放置一个按钮,用户可以单击来启动它。电影(实际上是书,我确定,但我只看过电影)中就有“小步走”这个词。
需要对第三批进行分类吗?非常简单。
请注意,这与执行三列排序键排序完全不同。这就是 VBA 非常适合它的原因。
虽然我不是为你编写代码的人。但上述内容对于任何你要求或参与编写代码的人来说都是简单而完整的指南。