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

简介: <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知识,一起进步。同时欢迎大家帮忙转发并关注,谢谢大家的支持!

目录
相关文章
|
15天前
|
机器学习/深度学习 算法 数据挖掘
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构
K-means聚类算法是机器学习中常用的一种聚类方法,通过将数据集划分为K个簇来简化数据结构。本文介绍了K-means算法的基本原理,包括初始化、数据点分配与簇中心更新等步骤,以及如何在Python中实现该算法,最后讨论了其优缺点及应用场景。
58 4
|
2月前
|
存储 算法 Java
解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用
在Java中,Set接口以其独特的“无重复”特性脱颖而出。本文通过解析HashSet的工作原理,揭示Set如何利用哈希算法和equals()方法确保元素唯一性,并通过示例代码展示了其“无重复”特性的具体应用。
50 3
|
13天前
|
存储 算法 安全
SnowflakeIdGenerator-雪花算法id生成方法
SnowflakeIdGenerator-雪花算法id生成方法
18 1
|
6月前
|
数据采集 机器学习/深度学习 算法
机器学习方法之决策树算法
决策树算法是一种常用的机器学习方法,可以应用于分类和回归任务。通过递归地将数据集划分为更小的子集,从而形成一棵树状的结构模型。每个内部节点代表一个特征的判断,每个分支代表这个特征的某个取值或范围,每个叶节点则表示预测结果。
179 1
|
17天前
|
JSON 算法 数据挖掘
基于图论算法有向图PageRank与无向图Louvain算法构建指令的方式方法 用于支撑qwen agent中的统计相关组件
利用图序列进行数据解读,主要包括节点序列分析、边序列分析以及结合节点和边序列的综合分析。节点序列分析涉及节点度分析(如入度、出度、度中心性)、节点属性分析(如品牌、价格等属性的分布与聚类)、节点标签分析(如不同标签的分布及标签间的关联)。边序列分析则关注边的权重分析(如关联强度)、边的类型分析(如管理、协作等关系)及路径分析(如最短路径计算)。结合节点和边序列的分析,如子图挖掘和图的动态分析,可以帮助深入理解图的结构和功能。例如,通过子图挖掘可以发现具有特定结构的子图,而图的动态分析则能揭示图随时间的变化趋势。这些分析方法结合使用,能够从多个角度全面解读图谱数据,为决策提供有力支持。
|
2月前
|
算法 索引
HashMap扩容时的rehash方法中(e.hash & oldCap) == 0算法推导
HashMap在扩容时,会创建一个新数组,并将旧数组中的数据迁移过去。通过(e.hash & oldCap)是否等于0,数据被巧妙地分为两类:一类保持原有索引位置,另一类索引位置增加旧数组长度。此过程确保了数据均匀分布,提高了查询效率。
44 2
|
2月前
|
数据处理 Python
Python 高级技巧:深入解析读取 Excel 文件的多种方法
在数据分析中,从 Excel 文件读取数据是常见需求。本文介绍了使用 Python 的三个库:`pandas`、`openpyxl` 和 `xlrd` 来高效处理 Excel 文件的方法。`pandas` 提供了简洁的接口,而 `openpyxl` 和 `xlrd` 则针对不同版本的 Excel 文件格式提供了详细的数据读取和处理功能。此外,还介绍了如何处理复杂格式(如合并单元格)和进行性能优化(如分块读取)。通过这些技巧,可以轻松应对各种 Excel 数据处理任务。
238 16
|
2月前
|
搜索推荐 Shell
解析排序算法:十大排序方法的工作原理与性能比较
解析排序算法:十大排序方法的工作原理与性能比较
62 9
|
2月前
|
存储 算法 Java
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
前缀(波兰)表达式、中缀表达式和后缀(逆波兰)表达式的基本概念、计算机求值方法,以及如何将中缀表达式转换为后缀表达式,并提供了相应的Java代码实现和测试结果。
93 0
数据结构与算法学习八:前缀(波兰)表达式、中缀表达式、后缀(逆波兰)表达式的学习,中缀转后缀的两个方法,逆波兰计算器的实现
|
2月前
|
机器学习/深度学习 人工智能 开发框架
【AI系统】AI 学习方法与算法现状
在人工智能的历史长河中,我们见证了从规则驱动系统到现代机器学习模型的转变。AI的学习方法基于深度神经网络,通过前向传播、反向传播和梯度更新不断优化权重,实现从训练到推理的过程。当前,AI算法如CNN、RNN、GNN和GAN等在各自领域取得突破,推动技术进步的同时也带来了更大的挑战,要求算法工程师与系统设计师紧密合作,共同拓展AI技术的边界。
103 1