ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
Python自动化办公应用大全 Excel 2021函数公式学习大典 Kutools for Office 套件发布 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
查看: 243|回复: 10

[求助] 按主要关键字和次要关键字排序问题

[复制链接]

TA的精华主题

TA的得分主题

发表于 2025-11-3 09:21 | 显示全部楼层 |阅读模式
具体内容请看附件,先谢谢大神

工作簿1.rar

7.54 KB, 下载次数: 13

TA的精华主题

TA的得分主题

发表于 2025-11-3 09:32 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
楼主录制一段排序的宏,然后参考下看看

TA的精华主题

TA的得分主题

发表于 2025-11-3 09:35 | 显示全部楼层
Sub SortDataAndDisplay()
    Dim ws As Worksheet
    Dim lastRow As Long
    Dim dataRange As Range
    Dim outputRange As Range
   
    ' 设置工作表
    Set ws = ThisWorkbook.Worksheets("Sheet1")
   
    ' 获取数据最后一行
    lastRow = ws.Cells(ws.Rows.Count, "A").End(xlUp).Row
   
    ' 检查是否有数据
    If lastRow < 2 Then
        MsgBox "没有找到数据!"
        Exit Sub
    End If
   
    ' 设置数据范围(A:D列)
    Set dataRange = ws.Range("A2:D" & lastRow)
   
    ' 设置输出范围(从F2开始)
    Set outputRange = ws.Range("F2")
   
    ' 清空之前的输出结果(F:I列)
    ws.Range("F:I").ClearContents
   
    ' 复制数据到输出区域
    dataRange.Copy outputRange
   
    ' 获取新的数据范围(F:I列)
    Dim newLastRow As Long
    newLastRow = ws.Cells(ws.Rows.Count, "F").End(xlUp).Row
    Dim sortRange As Range
    Set sortRange = ws.Range("F2:I" & newLastRow)
   
    ' 执行排序(按大队升序,再按中队升序)
    With ws.Sort
        .SortFields.Clear
        .SortFields.Add Key:=sortRange.Columns(1), Order:=xlAscending    ' 大队
        .SortFields.Add Key:=sortRange.Columns(2), Order:=xlAscending    ' 中队
        .SetRange sortRange
        .Header = xlNo
        .Apply
    End With
   
    ' 添加表头
    ws.Range("F1:I1").Value = Array("大队", "中队", "姓名", "身份证号")
   
    ' 自动调整列宽
    ws.Columns("F:I").AutoFit
   
    MsgBox "数据排序完成!结果显示在F:I列。"
End Sub

TA的精华主题

TA的得分主题

发表于 2025-11-3 09:39 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助

按第1关键词:大队,第2关键词:中队,排序,升序





排序.zip

19.52 KB, 下载次数: 6

评分

1

查看全部评分

TA的精华主题

TA的得分主题

 楼主| 发表于 2025-11-3 10:04 | 显示全部楼层
liulang0808 发表于 2025-11-3 09:32
楼主录制一段排序的宏,然后参考下看看

我不会录制视频,截图这样,不知道表达清楚了没有,谢谢!
wechat_2025-11-03_100402_876.png

TA的精华主题

TA的得分主题

发表于 2025-11-3 12:22 | 显示全部楼层
sxhsf 发表于 2025-11-3 10:04
我不会录制视频,截图这样,不知道表达清楚了没有,谢谢!

录制宏就可以完美实现你的需求

TA的精华主题

TA的得分主题

发表于 2025-11-3 14:39 | 显示全部楼层
本帖最后由 ykcbf1100 于 2025-11-3 14:40 编辑

附件供参考。。。

直接用工作表排序即可。

工作簿1.zip

15.78 KB, 下载次数: 3

TA的精华主题

TA的得分主题

发表于 2025-11-3 14:40 | 显示全部楼层
  1. Sub ykcbf()  '//2025.11.3
  2.     Set ws = ActiveSheet
  3.     r = ws.Cells(ws.Rows.Count, 1).End(xlUp).Row
  4.     Set Rng = ws.[a1].Resize(r, 4)
  5.     Rng.Sort Key1:=Rng.Columns(1), Order1:=1, Key2:=Rng.Columns(2), Order2:=1, Header:=xlYes
  6.     MsgBox "OK!"
  7. End Sub

复制代码


TA的精华主题

TA的得分主题

发表于 2025-11-3 14:44 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
sxhsf 发表于 2025-11-3 10:04
我不会录制视频,截图这样,不知道表达清楚了没有,谢谢!

录制“宏”,不是录制“视频”,录制宏是将你的操作用代码记录下来。

TA的精华主题

TA的得分主题

发表于 2025-11-3 16:11 | 显示全部楼层
先给数据加上“筛选”
法一:EXCEL自带的排序,此法全能、强大。
法二:先B列排升序,再A列排升序。就是你要的效果。
您需要登录后才可以回帖 登录 | 免费注册

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-11-11 01:43 , Processed in 0.038637 second(s), 11 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

快速回复 返回顶部 返回列表