Excel Sort的多key稳定排序算法,你了解的有多少方法?

在线体验各类最新模型,更有模型 免费Token 额度领取!
立即体验
简介: <p>  一般说,由Excel中的单元格区域数据对象构成的二维数组,可以直接使用工作表排序方法。</p><p>  不仅速度快,而且无需读入、写出操作。</p><p>  但是,默认工作表排序方法一次只能使用3个key、所以如果有较多key需要排序时,</p><p>  可以使用VBA循环代码,一次排1列,逆序循环排序后得到结果。</p><p>  PS:注意必须逆序操

  一般说,由Excel中的单元格区域数据对象构成的二维数组,可以直接使用工作表排序方法。

  不仅速度快,而且无需读入、写出操作。

  但是,默认工作表排序方法一次只能使用3个key、所以如果有较多key需要排序时,

  可以使用VBA循环代码,一次排1列,逆序循环排序后得到结果。

  PS:注意必须逆序操作,即、权重最小的列第1个排序,而权重最大的列必须最后一个排序。这个和我们通常的习惯是相反的,需要注意。

  示例代码如下:

  Sub test1() Dim ar, sr, sr2, i&, j&, tms#

  '假设待排序原始数据是在A1开始的多行、7列区域中 sr=Array(1, 3, 5, 7) '需要排序的列的权重顺序 sr2=Array(1, 2, 2, 1) '需要排序的列的升降顺序(1为升序、2为降序) Application.ScreenUpdating=False '禁止刷屏 For j=UBound(sr) To 0 Step -1 '逆序循环 [a1].Sort [a1].Offset(, sr(j) - 1), sr2(j) '每次排序1列 Next Application.ScreenUpdating=True End Sub

  但是,如果是VBA过程中生成的VBA内存二维数组需要排序,那么用工作表排序方法就比较麻烦,需要先把二维数组写入工作表,然后排序,然后再读入VBA……

  另外,如果是超过65536行甚至几十万、几百万的数据需要排序,

  那工作表方法就不能用了,读写数据就需大量时间。

  因此,虽然不是很常用,但还是需要一种直接对VBA内存数组进行排序的算法。

  VBA排序算法有很多,但基本上都是一维数组排序。

  即使简单改写一下能用于二维数组,但对于稳定的多key排序,就无法解决。

  因为,稳定排序的冒泡算法速度非常之慢,而速度较快的快速排序是不稳定排序算法,

  所以多key排序的结果就会出错。

  小伙伴,大家一起学习Excel VBA知识,一起进步。同时欢迎大家帮忙转发并关注,谢谢大家的支持!

目录
相关文章
|
10月前
|
存储 编解码 算法
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
【多光谱滤波器阵列设计的最优球体填充】使用MSFA设计方法进行各种重建算法时,图像质量可以提高至多2 dB,并在光谱相似性方面实现了显著提升(Matlab代码实现)
300 6
|
10月前
|
机器学习/深度学习 算法 调度
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
14种智能算法优化BP神经网络(14种方法)实现数据预测分类研究(Matlab代码实现)
661 0
|
11月前
|
机器学习/深度学习 数据采集 传感器
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
具有多种最大功率点跟踪(MPPT)方法的光伏发电系统(P&O-增量法-人工神经网络-模糊逻辑控制-粒子群优化)之使用粒子群算法的最大功率点追踪(MPPT)(Simulink仿真实现)
685 0
|
9月前
|
机器学习/深度学习 数据采集 负载均衡
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
结合多种启发式解码方法的混合多目标进化算法,用于解决带工人约束的混合流水车间调度问题(Matlab代码实现)
414 0
|
9月前
|
机器学习/深度学习 算法 物联网
基于遗传方法的动态多目标优化算法
基于遗传方法的动态多目标优化算法
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
1842 6
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
396 3
|
机器学习/深度学习 人工智能 算法
机器学习算法的优化与改进:提升模型性能的策略与方法
机器学习算法的优化与改进:提升模型性能的策略与方法
2623 13
机器学习算法的优化与改进:提升模型性能的策略与方法
|
存储 算法 安全
SnowflakeIdGenerator-雪花算法id生成方法
SnowflakeIdGenerator-雪花算法id生成方法
630 1

热门文章

最新文章