全民一起VBA实战篇 专题2 第五回 多键排序无非多次循环,独特功能还需独自开发

本文主要是介绍全民一起VBA实战篇 专题2 第五回 多键排序无非多次循环,独特功能还需独自开发,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!

 

相关知识点:

多关键字排序原理:现对次要的列排序,再排序优先的倒序(从最次要开始)进行依次排序,就能实现

Worksheets.Sort 工作表排序,自学

例1 足球赛积分表排序,四个排序列

     本来的优先级是总积分、获胜次数、净胜球、进球数

        实现排序就得倒序进球数、净胜球、获胜次数、总积分按照这个顺序排序,最关键的最后排

Sub demo2()

       Dim r as range

       Set r=range(“a3:e10”)

       r.sort key1:=cells(1,5),order1:=xldescending

       r.sort key1:=cells(1,4),order1:=xldescending

       r.sort key1:=cells(1,3),order1:=xldescending

       r.sort key1:=cells(1,2),order1:=xldescending

 

End Sub

简单重复,规则明确用程序优化一下:

Sub demo()

       Dim r as range, k as long

       Set r=range(“a3:e10”)

       For k=5 to 2 step -1

              r.sort key1:=cells(1,k),order1:=xlDescending

       Next k

End Sub

例2 如果关键字不是顺序排列的用数组解决

Sub demo3()

       Dim r as range, k as long, a()

       a=arry(3,5,2,6)

       Set r=range(“a3:f10”)

       For k=3 to 0 step -1

              r.sort key1:=cells(1,a(k)),order1:=xlDescending

       Next k

End Sub

 

 

例3 已经按照GDP排序了,重新按照人均GDP进行排序(有隔行)

 

 

Sub sortbyaveGDP()

       Dim i as long, j as long, k, r as range

       For i =3 To 14

              If  Not cells(i,4).Mergecells Then ‘如果第i行是合并单元格,则不处理

                     For j=i+1 To 15

                            If  Not cells(j,4).Mergecells Then ‘如果第j行是合并单元格,则不处理

                                   If cells(j,4)>cells(i,4 ) Then\

                                   ‘以下代码交换i行和j行的三列数据,也可以使用循环结构对其简化

                                          k=cells(i,2):cells(j,2)=cells(j,2):cells(j,2)=k

                                          k=cells(i,3):cells(j,3)=cells(j,3):cells(j,3)=k

                                          k=cells(i,4):cells(j,4)=cells(j,4):cells(j,4)=k

                                   End If

                            End If

                     Next j

              End If

       Next i

End Sub

这篇关于全民一起VBA实战篇 专题2 第五回 多键排序无非多次循环,独特功能还需独自开发的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!



http://www.chinasem.cn/article/633152

相关文章

C# foreach 循环中获取索引的实现方式

《C#foreach循环中获取索引的实现方式》:本文主要介绍C#foreach循环中获取索引的实现方式,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧... 目录一、手动维护索引变量二、LINQ Select + 元组解构三、扩展方法封装索引四、使用 for 循环替代

Android实现两台手机屏幕共享和远程控制功能

《Android实现两台手机屏幕共享和远程控制功能》在远程协助、在线教学、技术支持等多种场景下,实时获得另一部移动设备的屏幕画面,并对其进行操作,具有极高的应用价值,本项目旨在实现两台Android手... 目录一、项目概述二、相关知识2.1 MediaProjection API2.2 Socket 网络

Redis消息队列实现异步秒杀功能

《Redis消息队列实现异步秒杀功能》在高并发场景下,为了提高秒杀业务的性能,可将部分工作交给Redis处理,并通过异步方式执行,Redis提供了多种数据结构来实现消息队列,总结三种,本文详细介绍Re... 目录1 Redis消息队列1.1 List 结构1.2 Pub/Sub 模式1.3 Stream 结

MySQL索引的优化之LIKE模糊查询功能实现

《MySQL索引的优化之LIKE模糊查询功能实现》:本文主要介绍MySQL索引的优化之LIKE模糊查询功能实现,本文通过示例代码给大家介绍的非常详细,感兴趣的朋友一起看看吧... 目录一、前缀匹配优化二、后缀匹配优化三、中间匹配优化四、覆盖索引优化五、减少查询范围六、避免通配符开头七、使用外部搜索引擎八、分

Android实现悬浮按钮功能

《Android实现悬浮按钮功能》在很多场景中,我们希望在应用或系统任意界面上都能看到一个小的“悬浮按钮”(FloatingButton),用来快速启动工具、展示未读信息或快捷操作,所以本文给大家介绍... 目录一、项目概述二、相关技术知识三、实现思路四、整合代码4.1 Java 代码(MainActivi

Spring Boot循环依赖原理、解决方案与最佳实践(全解析)

《SpringBoot循环依赖原理、解决方案与最佳实践(全解析)》循环依赖指两个或多个Bean相互直接或间接引用,形成闭环依赖关系,:本文主要介绍SpringBoot循环依赖原理、解决方案与最... 目录一、循环依赖的本质与危害1.1 什么是循环依赖?1.2 核心危害二、Spring的三级缓存机制2.1 三

SpringBoot集成Milvus实现数据增删改查功能

《SpringBoot集成Milvus实现数据增删改查功能》milvus支持的语言比较多,支持python,Java,Go,node等开发语言,本文主要介绍如何使用Java语言,采用springboo... 目录1、Milvus基本概念2、添加maven依赖3、配置yml文件4、创建MilvusClient

使用Python开发一个带EPUB转换功能的Markdown编辑器

《使用Python开发一个带EPUB转换功能的Markdown编辑器》Markdown因其简单易用和强大的格式支持,成为了写作者、开发者及内容创作者的首选格式,本文将通过Python开发一个Markd... 目录应用概览代码结构与核心组件1. 初始化与布局 (__init__)2. 工具栏 (setup_t

Spring Shell 命令行实现交互式Shell应用开发

《SpringShell命令行实现交互式Shell应用开发》本文主要介绍了SpringShell命令行实现交互式Shell应用开发,能够帮助开发者快速构建功能丰富的命令行应用程序,具有一定的参考价... 目录引言一、Spring Shell概述二、创建命令类三、命令参数处理四、命令分组与帮助系统五、自定义S

SpringBoot实现微信小程序支付功能

《SpringBoot实现微信小程序支付功能》小程序支付功能已成为众多应用的核心需求之一,本文主要介绍了SpringBoot实现微信小程序支付功能,文中通过示例代码介绍的非常详细,对大家的学习或者工作... 目录一、引言二、准备工作(一)微信支付商户平台配置(二)Spring Boot项目搭建(三)配置文件