【Excel】【VBA】双列排序:坐标从Y从大到小排列之后相同Y坐标的行再对X从小到大排列

Excel VBA 双列排序

在这里插入图片描述

功能概述

这段VBA代码实现了Excel中的双列排序功能,具体是:

  1. 跳过前3行表头
  2. 先按C列数据从大到小排序
  3. 在C列值相同的情况下,按B列从大到小排序
  4. 排序时保持整行数据的完整性

流程图

开始
定义工作表和变量
获取最后一行行号
设置数据格式
定义排序范围
清除已有排序字段
添加第一个排序键:C列
添加第二个排序键:B列
执行排序
显示完成提示
结束

代码详解

1. 变量声明和初始化

Dim ws As Worksheet
Dim lastRow As Long
Dim sortRange As RangeSet ws = ActiveSheet
  • Worksheet: 工作表对象
  • lastRow: 存储数据的最后一行行号
  • sortRange: 定义排序范围

2. 获取数据范围

lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
  • 使用End(xlUp)方法从底部向上查找最后一个非空单元格

3. 格式设置

With ws.Range("B4:C" & lastRow).NumberFormat = "0.00"    '设置为2位小数.Value = .Value           '刷新值
End With
  • 设置B列和C列的数字格式
  • 通过重新赋值来刷新单元格内容

4. 排序范围定义

Set sortRange = ws.Range("A4:E" & lastRow)
  • 从第4行开始(跳过表头)
  • 包含A到E列的所有数据

5. 排序实现

With ws.Sort.SortFields.Clear.SortFields.Add Key:=ws.Range("C4:C" & lastRow), _SortOn:=xlSortOnValues, _Order:=xlDescending, _DataOption:=xlSortNormal.SortFields.Add Key:=ws.Range("B4:B" & lastRow), _SortOn:=xlSortOnValues, _Order:=xlDescending, _DataOption:=xlSortNormal.SetRange sortRange.Header = xlNo.MatchCase = False.Orientation = xlTopToBottom.SortMethod = xlPinYin.Apply
End With

关键参数说明:

  • SortFields.Clear: 清除现有排序条件
  • SortOn:=xlSortOnValues: 按值排序
  • Order:=xlDescending: 降序排列
  • Header = xlNo: 不包含表头
  • SortMethod = xlPinYin: 使用拼音排序方法

使用注意事项

  1. 确保数据从第4行开始
  2. 数据列需要在A到E列之间
  3. 数据格式应为数字类型
  4. C列为第一排序键,B列为第二排序键

V20250116 X从大到小

Sub SortTwoColumnsWithHeaders()Dim ws As WorksheetDim lastRow As LongDim sortRange As RangeSet ws = ActiveSheetlastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row'确保数据格式正确(从第4行开始)With ws.Range("B4:C" & lastRow).NumberFormat = "0.00"    '设置为5位小数.Value = .Value              '刷新值End With'定义排序范围(从A列到E列,从第4行开始)Set sortRange = ws.Range("A4:E" & lastRow)'执行排序With ws.Sort.SortFields.Clear.SortFields.Add Key:=ws.Range("C4:C" & lastRow), _SortOn:=xlSortOnValues, _Order:=xlDescending, _DataOption:=xlSortNormal.SortFields.Add Key:=ws.Range("B4:B" & lastRow), _SortOn:=xlSortOnValues, _Order:=xlDescending, _DataOption:=xlSortNormal.SetRange sortRange.Header = xlNo               '因为真正的数据从第4行开始,所以这里设置为No.MatchCase = False.Orientation = xlTopToBottom.SortMethod = xlPinYin.ApplyEnd WithMsgBox "排序完成!"
End Sub

V20250116 每行的X从小到大升序排列

Sub SortTwoColumnsWithHeaders()Dim ws As WorksheetDim lastRow As LongDim sortRange As RangeSet ws = ActiveSheetlastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row'确保数据格式正确(从第4行开始)With ws.Range("B4:C" & lastRow).NumberFormat = "0.00"    '设置为5位小数.Value = .Value              '刷新值End With'定义排序范围(从A列到E列,从第4行开始)Set sortRange = ws.Range("A4:E" & lastRow)'执行排序With ws.Sort.SortFields.Clear.SortFields.Add Key:=ws.Range("C4:C" & lastRow), _SortOn:=xlSortOnValues, _Order:=xlDescending, _DataOption:=xlSortNormal.SortFields.Add Key:=ws.Range("B4:B" & lastRow), _SortOn:=xlSortOnValues, _Order:=xlAscending, _DataOption:=xlSortNormal.SetRange sortRange.Header = xlNo               '因为真正的数据从第4行开始,所以这里设置为No.MatchCase = False.Orientation = xlTopToBottom.SortMethod = xlPinYin.ApplyEnd WithMsgBox "points order finshied!"
End Sub

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/2808.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

【25考研】西南交通大学软件工程复试攻略!

一、复试内容 复试对考生的既往学业情况、外语听说交流能力、专业素质和科研创新能力,以及综合素质和一贯表现等进行全面考查,主要考核内容包括思想政治素质和道德品质、外语听说能力、专业素质和能力,综合素质及能力。考核由上机考试和面试两部分组成&a…

运行fastGPT 第四步 配置ONE API 添加模型

上次已经装好了所有的依赖和程序。 下面在网页中配置One API ,这个是大模型的接口。配置好了之后,就可以配置fastGPT了。 打开 OneAPI 页面 添加模型 这里要添加具体的付费模型的API接口填进来。 可以通过ip:3001访问OneAPI后台,**默认账号…

硬件知识:显示器发展历程介绍

目录 一、阴极射线管显示器(CRT) 二、等离子显示器(PDP) 三、液晶显示器(LCD) 四、传统LED显示器(LED) 五、有机发光二极管显示器(OLED) 六、量子点显示器(QD) 七、MiniLED显示器(MiniLED) 八、MicroLED显示器(MicroLED) 总结 显示器作为电子设备与人…

修复5.0.0r 64位版本浏览器和一些库找不到的问题

笔者在使用5.0.0r版本64位时踩过不少坑,先将相关修复方法分享 浏览器无法使用 base/startup/appspawn/appdata-sandbox64.json添加沙箱配置 相关修复pr:https://gitee.com/openharmony/startup_appspawn/pulls/1854/files {"src-path" : "/system…

【Flink系列】4. Flink运行时架构

4. Flink运行时架构 4.1 系统架构 Flink运行时架构——Standalone会话模式为例 1)作业管理器(JobManager) JobManager是一个Flink集群中任务管理和调度的核心,是控制应用执行的主进程。也就是说,每个应用都应该被…

IP层之分片包的整合处理

前言 在上一章节中,笔者就IP层的接收代码逻辑做了简单介绍,并对实现代码进行了逻辑梳理以及仿真测试,并且在上一章节中,就IP层的分片包问题,如何确定分片包是否存在已经进行了简单介绍,并在接收模块中&…

使用jupyter notebook没有正常打开浏览器的几种情况解决

迅速记录前期 1.下载 https://www.anaconda.com/products/individual 2.安装 直接默认安装就行 3.打开jupyter notebook 在开始菜单里面可以找到 4.遇到的问题解决 1.运行jupyter notebook,黑窗口自动关了 每次黑窗口迅速的加载完就自己关掉了 也没有打开新…

50.【8】BUUCTF WEB HardSql

进入靶场 随便输输 上order by ????????,被过滤了,继续找其他也被过滤的关键字 #,-- -,-- 都不行,尝试其他特殊字符后发现and,union,select,空格,都被过滤了 如下 我就不知…

中国石油大学(华东)自动评教工具(涵盖爬虫的基础知识,适合练手)

我开发了一个用于自动评教的工具,大家可以试着用用,下面是链接。 https://github.com/restrain11/auto_teachingEvaluate 可以点个星吗,感谢!🫡 以下是我在开发过程中学到的知识 以及 碰到的部分问题 目录 动态爬虫和静…

深入云电脑PC Farm技术探讨,以阿里云、华为云、ToDesk为例

🌝引言 近年来,云计算技术的飞速发展为各行各业的数字化转型带来了全新机遇,其中云电脑作为一种虚拟化桌面解决方案,逐渐成为个人用户与企业的核心选择。从远程办公、在线教育到高性能计算需求,云电脑通过为用户提供随…

RK3568平台(音频篇)lineout无声调试

一.声音硬件框架 硬件HP_MUTE已强制拉低。 二.设备树配置 es8388_sound: es8388-sound {status = "okay";compatible = "rockchip,multicodecs-card";rockchip,card-name = "rockchip-es8388";hp-det-gpio = <&gpio1 RK_PD2 GPIO_ACT…

docker 部署 MantisBT

1. docker 安装MantisBT docker pull vimagick/mantisbt:latest 2.先运行实例&#xff0c;复制配置文件 docker run -p 8084:80 --name mantisbt -d vimagick/mantisbt:latest 3. 复制所需要配置文件到本地路径 docker cp mantisbt:/var/www/html/config/config_inc.php.…

【Linux】Mysql部署步骤

一、JDK安装配置 在home目录下执行命令&#xff1a;mkdir Jdk 1.将JDK 上传至该文件夹&#xff0c;有些终端工具可以直接上传文件&#xff0c;比如&#xff1a;MobaXterm 可以看到安装包已经上传上来了 2.直接安装 命令&#xff1a;rpm -ivh jdk-8u311-linux-x64.rpm 3.安装成…

静态综合路由实验

实验拓扑 实验要求 1.除R5的环回地址外&#xff0c;整个其他所有网段基于192.168.1.0/24进行合理的IP地址划分 2.R1-R4每个路由器存在两个环回接口&#xff0c;用于模拟pc网段&#xff1b;地址也在192.168.1.0/24这个网络范围内 3.R1-R4上不能直接编写到达5.5.5.0/24的静态路由…

Unity ShaderGraph中Lit转换成URP的LitShader

ShaderGraph中的LitShader如下&#xff1a; 在顶点和片元着色器暴露出了上图中的几个参数&#xff0c;要转换成URPLitShaderLab,首先要找到这几个参数&#xff0c;打开LitShader&#xff0c;找到第一个Pass&#xff0c;可以看到下图中的顶点和片元的定义函数&#xff0c;还有引…

从漏洞管理到暴露管理:网络安全的新方向

在网络安全的快速发展中&#xff0c;传统的漏洞管理仍然是防御体系的基石。然而&#xff0c;面对日益复杂的威胁和不断增长的漏洞数量&#xff0c;单靠漏洞优先级评分&#xff08;如VPR&#xff09;已经无法满足现代安全需求。暴露管理这一全新的思维模式正在引领企业从被动应对…

中职网络建设与运维ansible服务

ansible服务 填写hosts指定主机范围和控制节点后创建一个脚本&#xff0c;可以利用简化脚本 1. 在linux1上安装系统自带的ansible-core,作为ansible控制节点,linux2-linux7作为ansible的受控节点 Linux1 Linux1-7 Yum install ansible-core -y Vi /etc/ansible/hosts 添加…

YOLOv8从菜鸟到精通(二):YOLOv8数据标注以及模型训练

数据标注 前期准备 先打开Anaconda Navigator&#xff0c;点击Environment&#xff0c;再点击new(new是我下载anaconda的文件夹名称)&#xff0c;然后点击创建 点击绿色按钮&#xff0c;并点击Open Terminal 输入labelimg便可打开它,labelimg是图像标注工具&#xff0c;在上篇…

【WPS】【WORDEXCEL】【VB】实现微软WORD自动更正的效果

1. 代码规范方面 添加 Option Explicit&#xff1a;强制要求显式声明所有变量&#xff0c;这样可以避免因变量名拼写错误等情况而出现难以排查的逻辑错误&#xff0c;提高代码的健壮性。使用 On Error GoTo 进行错误处理&#xff1a;通过设置错误处理机制&#xff0c;当代码执行…

2023-2024 学年 广东省职业院校技能大赛(高职组)“信息安全管理与评估”赛题一

2023-2024 学年 广东省职业院校技能大赛(高职组“信息安全管理与评估”赛题一&#xff09; 模块一:网络平台搭建与设备安全防护第一阶段任务书任务 1&#xff1a;网络平台搭建任务 2&#xff1a;网络安全设备配置与防护DCRS:DCFW:DCWS:DCBC:WAF: 模块二&#xff1a;网络安全事件…