VBA(14)排序Sort

这篇具有很好参考价值的文章主要介绍了VBA(14)排序Sort。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

从一个录制的宏开始

Sub 宏1()

' 宏1 录制宏

    Range("A1:D20").Select

     '清除表1里所有排序条件

    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Clear

    '新增排序条件:sort.sortfields.add

    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("A2:A20") _

        , SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:=xlSortNormal

        'SortOn = 按单元格的值.Order = 升序,DataOption = 默认,分别对数字跟文本进行排序

    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("B2:B20") _

        , SortOn:=xlSortOnCellColor, Order:=xlAscending, DataOption:=xlSortNormal

        'SortOn:=xlSortOnCellColor,按单元格的颜色

    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add Key:=Range("C2:C20") _

        , SortOn:=xlSortOnIcon, Order:=xlAscending, DataOption:=xlSortNormal

        'SortOn:= xlSortOnIcon按单元格图标

    ActiveWorkbook.Worksheets("Sheet1").Sort.SortFields.Add(Range("D2:D20"), _

        xlSortOnFontColor, xlAscending, , xlSortNormal).SortOnValue.Color = RGB(0, 0, 0 _

        ) 'SortOn:=xlSortOnFontColor按字体颜色

    With ActiveWorkbook.Worksheets("Sheet1").Sort

        .SetRange Range("A1:D20")               ' 设置排序区域

        .Header = xlYes                         '是否带表头

        .MatchCase = False                      '区分大小写Ture/False

        .Orientation = xlTopToBottom    '排序方向xlTopToBottom从上到下/xlLeftToRight从左到右

        .SortMethod = xlPinYin          '按拼音排序/xlStroke按笔画排

        .Apply                          '执行排序

    End With

End Sub

排序官方说明:

Sort (Excel)

方法

  • Apply

    根据当前应用的排序状态对区域进行排序

    SetRange

    设置要排序的区域

属性

  • Application

    Creator

    Header

    指定第一行是否包含标题信息。 可读/写 XlYesNoGuess

    名称

    说明

    xlGuess

    0

    Excel 确定是否有标题,如果有,是否是一个。

    xlNo

    2

    默认值。 应对整个区域进行排序。

    xlYes

    1

    不应对整个区域进行排序。

    MatchCase

    设置区分大小写True区分/FALSE不区分

    Orientation

    名称

    说明

    xlSortColumns

    1

    按列排序。

    xlSortRows

    2

    按行排序。 这是默认值

    Parent

    返回上一级对象

    Rng

    SortFields

    方法:

    Add        创建新的排序字段

    Add2     创建新的排序字段(可使用自定义字段)

    Clear     清除所有 SortFields 对象

    属性:

    Count      排序规则个数

    Creator

    Item          索引返回一个SortFields 对象

    Parent      返回上一级对象

    SortMethod

    提定中文排序

    名称

    说明

    xlPinYin

    1

    按字符的汉语拼音顺序排序。 这是默认值。

    xlStroke

    2

    按每个字符的笔划数排序

创建测试数据:

Sub SortData() 
'创建测试数据 
Sub go2()
Dim x1 As Integer
Dim x2 As Integer
        Range("A1:d1") = Array("测试1", "测试2", "测试3", "测试4")
    For x1 = 1 To 4
        For x2 = 2 To 20
            Cells(x2, x1).Value = Int(Rnd() * 100)
        Next
    Next
End Sub

一、单元格快速排序

Sub sort1()		'单元格.sort排序
    With Worksheets("Sheet1").Range("a1:D20")
	.Sort key1:=Worksheets("Sheet1").Range("a1"), _
		key2:=Worksheets("Sheet1").Range("b1"), _
		key3:=Worksheets("Sheet1").Range("c1"), _
		order1:=xlAscending, _
		order2:=xlAscending, _
		order3:=xlAscending, _
			Header:=xlYes
    End With
End sub

'range("设置排序区域").Sort Key1:=排序1关键字,order1:=升/降序,Header:=是否有标题行

'单元格的Sort排序写法快速,但是最多指定3个key,遇到超过3个排序就需要多次写多一个排序。多条件排序还是套用Sheet.sort

二、Sheet.Sort排序

Sub sort2()
	With ActiveWorkbook.Worksheets("Sheet1")
		.Sort.SortFields.Clear '清空自定义排序的规则
		'增加4个key值
		.Sort.SortFields.Add Key:=.Range("a1"), SortOn:=xlSortOnValues, Order:=xlAscending
		.Sort.SortFields.Add Key:=.Range("b1"), SortOn:=xlSortOnValues, Order:=xlAscending
		.Sort.SortFields.Add Key:=.Range("c1"), SortOn:=xlSortOnValues, Order:=xlAscending
		.Sort.SortFields.Add Key:=.Range("d1"), SortOn:=xlSortOnValues, Order:=xlAscending
		'设置表格排序内容的范围
		 .Sort.SetRange Range("a1:d20")
		.Sort.Header = xlYes          '表头是否包含
		.Sort.Apply     '执行
	End With
End Sub

SortField 对象 (Excel)官方说明

方法

  • Delete

    排序规则删除

    ModifyKey

    表达式.ModifyKey (Key)

    修改字段中按其排序的键值。

    SetIcon

    表达式.SetIcon (图标)

    为 SortField 对象设置图标。

属性

  • Application

    Creator

    CustomOrder

    指定对字段进行排序的自定义次序。 读/写Variant。

    DataOption

    指定文本的排序方式。

    名称

    说明

    xlSortNormal

    0

    默认值。 分别对数字和文本数据进行排序。

    xlSortTextAsNumbers

    1

    将文本作为数字型数据进行排序。

    Key

    指定排序字段,该字段确定要排序的值。

    Order

    确定关键字所指定的值的排序次序。 读/写

    名称

    说明

    xlAscending

    1

    按升序对指定字段排序。 这是默认值。

    xlDescending

    2

    按降序对指定字段排序。

    xlManual

    -4135

    手动排序 (您可以拖动项目以重新排列) 。

    Parent

    返回上一级对象

    Priority

    指定排序字段的优先级

    SortOn

    指定数据的排序参数。

    名称

    说明

    SortOnCellColor

    1

    单元格颜色。

    SortOnFontColor

    2

    字体颜色。

    SortOnIcon

    3

    图标。

    SortOnValues

    0

    值。

    SortOnValue

    指定类型进行排序

来自 <SortField 对象 (Excel) | Microsoft Docs>

三、添加自定义序列排序

VBA(14)排序Sort

Sub Sort3()
Dim Count1 As Integer
Dim rng As Range
Dim arr
n = Application.InputBox("装入方式", , 1, , , , , 1)        '选择1或2自定义序列创建方式
    Select Case n
        Case Is = 1
        Set rng = Range("d2:d" & Range("d65536").End(xlUp).Row)
        Application.AddCustomList (rng)        '表格直接创建自定义序列
        Case Is = 2
        arr = Range("d2:d" & Range("d65536").End(xlUp).Row).Value
        Application.AddCustomList (arr)        '也可以数组创建自定义序列
        Case Else
        MsgBox "未选择"
        Exit Sub
    End Select
'Application.AddCustomList
'为自定义自动填充和/或自定义排序添加自定义列表,该参数除了支持单元格对象,也支持数组
    Count1 = Application.CustomListCount
'自定义序列的数目
    Range("a:a").Sort key1:=[a1], order1:=xlAscending, Header:=xlYes, ordercustom:=Count1 + 1
'使用自定义排序,ordercustom指定使用哪个自定义序列排序。Count1 为默认自定义个数,+1即用最新的自定义排序
    Application.DeleteCustomList Count1
'删除新增的自定义序列
End Sub

 效果图:

VBA(14)排序Sort

 文章来源地址https://www.toymoban.com/news/detail-440072.html

到了这里,关于VBA(14)排序Sort的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【C#】【System.Linq】一些便捷的数据处理方法(Range、Select)

    因为用习惯了Python中一些便捷的方法,随即查询C#中有没有类似的。  一、Range()方法 在Python中,range(Start,End,Step)可以直接生成一个可迭代对象,便用于需要循环多次处理某些代码块: (注:Range方法中的End是开区间,range(1,10)实际的取值是(1 ~ 9))   在C#中也

    2024年02月08日
    浏览(41)
  • 【排序算法详细介绍】桶排序(Bucket Sort)冒泡排序(Bubble Sort)快速排序(Quick Sort)

    今天学习了一些简单的 排序算法 ,其实在我们平时解决问题中经常用到,今天正好一起看了看,记录一下。 如果对你也有帮助,我很开心~ 桶排序是一种排序算法,它将数组划分为一些 有序的桶 ,然后 每个桶再分别排序 。最后,将所有的桶合并起来,得到一个有序的数组。桶排

    2024年01月25日
    浏览(50)
  • Hive(23):Select高级查询之SORT/ORDER/CLUSTER/DISTRIBUTE BY

    1 ORDER BY ORDER BY [ASC|DESC] Hive SQL中的ORDER BY语法类似于SQL语言中的ORDER BY语法。会对输出的结果进行全局排序,因此底层使用MapReduce引擎执行的时候,只会有一个reducetask执行。也因此,如果输出的行数太大,会导致需要很长的时间才能完成全局排序。 默认排序顺序为升序(ASC)

    2024年02月15日
    浏览(46)
  • 排序算法(stable_sort(), sort())

    sort函数我相信大家都不陌生,今天介绍一个新的排序算法stable_sort stable_sort:稳定排序算法,维持相等元素的原有顺序。 假如我们定义一个字符串数组 这些字符串是按照字典序排列的,我们现在想要words按照单词长度从小到大重排的同时,还希望具有相同长度的元素按照字典

    2024年02月07日
    浏览(54)
  • P1177 【模板】排序(Sort排序)

    将读入的 N N N 个数从小到大排序后输出。 第一行为一个正整数 N N N 。 第二行包含 N N N 个空格隔开的正整数 a i a_i a i ​ ,为你需要进行排序的数。 将给定的 N N N 个数从小到大输出,数之间空格隔开,行末换行且无空格。 样例输入 #1 样例输出 #1 对于 20 % 20% 20% 的数据,有

    2024年02月10日
    浏览(42)
  • 【排序算法】堆排序(Heap Sort)

    堆排序是指利用堆这种数据结构所设计的一种排序算法。堆是一个近似完全二叉树的结构,并同时满足堆积的性质:即子结点的键值或索引总是小于(或者大于)它的父节点。 学习堆排序之前,有必要了解堆!若读者不熟悉堆,建议先了解堆(建议可以通过二叉堆,左倾堆,

    2024年02月01日
    浏览(70)
  • 46,排序算法sort

    排序算法sort 常用排序算法 sort 学习目标: 掌握i常用排序算法 算法简介: sort //对容器内元素进行排序 random_shuffle //洗牌,指定范围内的元素随机调整次序 merge //容器元素合并,并存储到另一容器中 reverse //反转指定范围的元素 功能描述: 对容器内元素进行排序 函数原型:

    2024年02月16日
    浏览(41)
  • 排序(sort自定义)

    sort函数用于C++中,对给定区间所有元素进行排序,默认为升序,也可进行降序排序; sort函数进行排序的时间复杂度为n*log2n,比冒泡之类的排序算法效率要高; sort函数包含在头文件为#includealgorithm的c++标准库中。 Sort(start,end,cmp) 参数 (1)start表示要排序数组的起始地址;

    2024年02月02日
    浏览(31)
  • 选择排序(Selection Sort)

    选择排序(Selection Sort)是一种简单直观的排序算法,每次从未排序部分选择最小(或最大)的元素放置到已排序部分的末尾。 选择排序算法的步骤如下: 从未排序部分选择最小(或最大)的元素。 将选中的元素与未排序部分的第一个元素交换位置。 标记该元素为已排序部

    2024年02月16日
    浏览(42)
  • 冒泡排序(Bubble Sort)

    本教学文章将指导您如何使用Java实现冒泡排序算法。冒泡排序是一种简单直观的排序算法,通过相邻元素的比较和交换,将最大(或最小)的元素逐渐冒泡到数组的末尾。 下面是使用Java实现冒泡排序的步骤: 步骤1:实现冒泡排序函数 在上述代码中,我们定义了一个bubble

    2024年02月16日
    浏览(42)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包